diff options
author | boliu <boliu@chromium.org> | 2016-01-20 18:17:06 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-21 02:18:58 +0000 |
commit | 132bb927a995822c79c17764051b456f75ec258f (patch) | |
tree | cba4cceb0351eb5476ca073c77d7dd1701a86962 | |
parent | 9739e5511e49a2d2a0bd08fdb4e60f1ca2250b4c (diff) | |
download | chromium_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.java | 2 | ||||
-rw-r--r-- | content/public/android/java/src/org/chromium/content/browser/input/SelectPopupDialog.java | 7 |
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 |