Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(955)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionUpdateInfoBarDelegate.java

Issue 2389263002: Fix stale WindowAndroid in PermissionUpdateInfoBarDelegate after reparenting. (Closed)
Patch Set: Handle null WindowAndroid Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionUpdateInfoBarDelegate.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionUpdateInfoBarDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionUpdateInfoBarDelegate.java
index b8c55c359431bb3e03a5e64b2c5e6a58af1d0f7f..e568e98a14b3a3ef54b0ad02bd37ce1029279f43 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionUpdateInfoBarDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/PermissionUpdateInfoBarDelegate.java
@@ -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);
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698