Commit 63a8719c authored by tedchoc's avatar tedchoc Committed by Commit bot

Fix stale WindowAndroid in PermissionUpdateInfoBarDelegate after reparenting.

BUG=640549

Review-Url: https://codereview.chromium.org/2389263002
Cr-Commit-Position: refs/heads/master@{#422943}
parent b213e899
......@@ -22,7 +22,7 @@ import org.chromium.ui.base.WindowAndroid;
*/
class PermissionUpdateInfoBarDelegate implements WindowAndroid.PermissionCallback {
private final WindowAndroid mWindowAndroid;
private final ContentViewCore mContentViewCore;
private final String[] mAndroidPermisisons;
private long mNativePtr;
private ActivityStateListener mActivityStateListener;
......@@ -37,7 +37,7 @@ class PermissionUpdateInfoBarDelegate implements WindowAndroid.PermissionCallbac
long nativePtr, WebContents webContents, String[] permissions) {
mNativePtr = nativePtr;
mAndroidPermisisons = permissions;
mWindowAndroid = ContentViewCore.fromWebContents(webContents).getWindowAndroid();
mContentViewCore = ContentViewCore.fromWebContents(webContents);
}
@CalledByNative
......@@ -51,17 +51,23 @@ class PermissionUpdateInfoBarDelegate implements WindowAndroid.PermissionCallbac
@CalledByNative
private void requestPermissions() {
WindowAndroid windowAndroid = mContentViewCore.getWindowAndroid();
if (windowAndroid == null) {
nativeOnPermissionResult(mNativePtr, false);
return;
}
boolean canRequestAllPermissions = true;
for (int i = 0; i < mAndroidPermisisons.length; i++) {
canRequestAllPermissions &=
(mWindowAndroid.hasPermission(mAndroidPermisisons[i])
|| mWindowAndroid.canRequestPermission(mAndroidPermisisons[i]));
(windowAndroid.hasPermission(mAndroidPermisisons[i])
|| windowAndroid.canRequestPermission(mAndroidPermisisons[i]));
}
if (canRequestAllPermissions) {
mWindowAndroid.requestPermissions(mAndroidPermisisons, this);
windowAndroid.requestPermissions(mAndroidPermisisons, this);
} else {
Activity activity = mWindowAndroid.getActivity().get();
Activity activity = windowAndroid.getActivity().get();
if (activity == null) {
nativeOnPermissionResult(mNativePtr, false);
return;
......@@ -87,7 +93,7 @@ class PermissionUpdateInfoBarDelegate implements WindowAndroid.PermissionCallbac
Intent settingsIntent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
settingsIntent.setData(Uri.parse(
"package:" + mWindowAndroid.getApplicationContext().getPackageName()));
"package:" + windowAndroid.getApplicationContext().getPackageName()));
settingsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
activity.startActivity(settingsIntent);
}
......@@ -100,9 +106,14 @@ class PermissionUpdateInfoBarDelegate implements WindowAndroid.PermissionCallbac
private void notifyPermissionResult() {
boolean hasAllPermissions = true;
for (int i = 0; i < mAndroidPermisisons.length; i++) {
hasAllPermissions &=
mWindowAndroid.hasPermission(mAndroidPermisisons[i]);
WindowAndroid windowAndroid = mContentViewCore.getWindowAndroid();
if (windowAndroid == null) {
hasAllPermissions = false;
} else {
for (int i = 0; i < mAndroidPermisisons.length; i++) {
hasAllPermissions &=
mContentViewCore.getWindowAndroid().hasPermission(mAndroidPermisisons[i]);
}
}
if (mNativePtr != 0) nativeOnPermissionResult(mNativePtr, hasAllPermissions);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment