Merge "Import translations. DO NOT MERGE" into klp-dev
diff --git a/src/com/android/settings/users/RestrictedProfileSettings.java b/src/com/android/settings/users/RestrictedProfileSettings.java
index 73b49bf..1d712ac 100644
--- a/src/com/android/settings/users/RestrictedProfileSettings.java
+++ b/src/com/android/settings/users/RestrictedProfileSettings.java
@@ -66,6 +66,7 @@
 public class RestrictedProfileSettings extends AppRestrictionsFragment {
 
     private static final String KEY_SAVED_PHOTO = "pending_photo";
+    private static final String KEY_AWAITING_RESULT = "awaiting_result";
     private static final int DIALOG_ID_EDIT_USER_INFO = 1;
     public static final String FILE_PROVIDER_AUTHORITY = "com.android.settings.files";
 
@@ -76,6 +77,7 @@
     private Dialog mEditUserInfoDialog;
     private EditUserPhotoController mEditUserPhotoController;
     private Bitmap mSavedPhoto;
+    private boolean mWaitingForActivityResult;
 
     @Override
     public void onCreate(Bundle icicle) {
@@ -83,6 +85,7 @@
 
         if (icicle != null) {
             mSavedPhoto = (Bitmap) icicle.getParcelable(KEY_SAVED_PHOTO);
+            mWaitingForActivityResult = icicle.getBoolean(KEY_AWAITING_RESULT, false);
         }
 
         init(icicle);
@@ -111,6 +114,9 @@
             outState.putParcelable(KEY_SAVED_PHOTO,
                     mEditUserPhotoController.getNewUserPhotoBitmap());
         }
+        if (mWaitingForActivityResult) {
+            outState.putBoolean(KEY_AWAITING_RESULT, mWaitingForActivityResult);
+        }
     }
 
     @Override
@@ -124,8 +130,15 @@
     }
 
     @Override
+    public void startActivityForResult(Intent intent, int requestCode) {
+        mWaitingForActivityResult = true;
+        super.startActivityForResult(intent, requestCode);
+    }
+
+    @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
+        mWaitingForActivityResult = false;
 
         if (mEditUserInfoDialog != null && mEditUserInfoDialog.isShowing()
                 && mEditUserPhotoController.onActivityResult(requestCode, resultCode, data)) {
@@ -168,9 +181,8 @@
                 }
             }
             userPhotoView.setImageDrawable(drawable);
-
             mEditUserPhotoController = new EditUserPhotoController(this, userPhotoView,
-                    mSavedPhoto, drawable);
+                    mSavedPhoto, drawable, mWaitingForActivityResult);
 
             mEditUserInfoDialog = new AlertDialog.Builder(getActivity())
                 .setTitle(R.string.profile_info_settings_title)
@@ -262,12 +274,12 @@
         private Drawable mNewUserPhotoDrawable;
 
         public EditUserPhotoController(Fragment fragment, ImageView view,
-                Bitmap bitmap, Drawable drawable) {
+                Bitmap bitmap, Drawable drawable, boolean waiting) {
             mContext = view.getContext();
             mFragment = fragment;
             mImageView = view;
-            mCropPictureUri = createTempImageUri(mContext, CROP_PICTURE_FILE_NAME);
-            mTakePictureUri = createTempImageUri(mContext, TAKE_PICTURE_FILE_NAME);
+            mCropPictureUri = createTempImageUri(mContext, CROP_PICTURE_FILE_NAME, !waiting);
+            mTakePictureUri = createTempImageUri(mContext, TAKE_PICTURE_FILE_NAME, !waiting);
             mPhotoSize = getPhotoSize(mContext);
             mImageView.setOnClickListener(new OnClickListener() {
                 @Override
@@ -487,11 +499,13 @@
             }
         }
 
-        private static Uri createTempImageUri(Context context, String fileName) {
+        private Uri createTempImageUri(Context context, String fileName, boolean purge) {
             final File folder = context.getCacheDir();
             folder.mkdirs();
             final File fullPath = new File(folder, fileName);
-            fullPath.delete();
+            if (purge) {
+                fullPath.delete();
+            }
             final Uri fileUri =
                     FileProvider.getUriForFile(context, FILE_PROVIDER_AUTHORITY, fullPath);
             return fileUri;