summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorboliu <boliu@chromium.org>2016-01-20 18:17:06 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-21 02:18:58 +0000
commit132bb927a995822c79c17764051b456f75ec258f (patch)
treecba4cceb0351eb5476ca073c77d7dd1701a86962
parent9739e5511e49a2d2a0bd08fdb4e60f1ca2250b4c (diff)
downloadchromium_src-132bb927a995822c79c17764051b456f75ec258f.zip
chromium_src-132bb927a995822c79c17764051b456f75ec258f.tar.gz
chromium_src-132bb927a995822c79c17764051b456f75ec258f.tar.bz2
android: Fix select popup dialog Context edge case
There is no way to tell ahead of time whether a Context can be used to display a pop up window, due to hacks some apps uses. Instead, catch the BadTokenException and respond correctly to that. BUG=573294 Review URL: https://codereview.chromium.org/1616473002 Cr-Commit-Position: refs/heads/master@{#370567}
-rw-r--r--content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java2
-rw-r--r--content/public/android/java/src/org/chromium/content/browser/input/SelectPopupDialog.java7
2 files changed, 7 insertions, 2 deletions
diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
index 86db2eb..4c199e0 100644
--- a/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
+++ b/content/public/android/java/src/org/chromium/content/browser/ContentViewCore.java
@@ -2438,7 +2438,7 @@ public class ContentViewCore implements AccessibilityStateChangeListener, Screen
} else {
if (getWindowAndroid() == null) return;
Context windowContext = getWindowAndroid().getContext().get();
- if (WindowAndroid.activityFromContext(windowContext) == null) return;
+ if (windowContext == null) return;
mSelectPopup = new SelectPopupDialog(
this, windowContext, popupItems, multiple, selectedIndices);
}
diff --git a/content/public/android/java/src/org/chromium/content/browser/input/SelectPopupDialog.java b/content/public/android/java/src/org/chromium/content/browser/input/SelectPopupDialog.java
index ebf50d3..fc5f38d 100644
--- a/content/public/android/java/src/org/chromium/content/browser/input/SelectPopupDialog.java
+++ b/content/public/android/java/src/org/chromium/content/browser/input/SelectPopupDialog.java
@@ -10,6 +10,7 @@ import android.content.DialogInterface;
import android.content.res.TypedArray;
import android.util.SparseBooleanArray;
import android.view.View;
+import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
@@ -128,7 +129,11 @@ public class SelectPopupDialog implements SelectPopup {
@Override
public void show() {
- mListBoxPopup.show();
+ try {
+ mListBoxPopup.show();
+ } catch (WindowManager.BadTokenException e) {
+ notifySelection(null);
+ }
}
@Override