diff options
author | yusufo <yusufo@chromium.org> | 2016-01-11 15:08:26 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-01-11 23:10:00 +0000 |
commit | 235c2e05a35759c50b0f106ab1f7aec3142eebb1 (patch) | |
tree | e58d584f96192437ec8ec8c65a91800447b7f609 /android_webview | |
parent | 33312d6d01ec88fb6e686f03c886e2448ee238bd (diff) | |
download | chromium_src-235c2e05a35759c50b0f106ab1f7aec3142eebb1.zip chromium_src-235c2e05a35759c50b0f106ab1f7aec3142eebb1.tar.gz chromium_src-235c2e05a35759c50b0f106ab1f7aec3142eebb1.tar.bz2 |
Reland Pull the Activity context from WindowAndroid if possible
WebView uses ContentViewCore's context for displaying dialogs and
wraps it at construction time. This change makes sure that if there
is an activity that can be reached through WindowAndroid, we use
that as the context inside ColorChooser. Also make sure if there is no activity, we
dont attempt to create a color chooser and try to show it.
Update ActivityWindowAndroid to take a Context type so
that in Android WebView, the activity context can remain wrapped.
BUG=550410, 570429
Review URL: https://codereview.chromium.org/1569643002
Cr-Commit-Position: refs/heads/master@{#368702}
Diffstat (limited to 'android_webview')
-rw-r--r-- | android_webview/java/src/org/chromium/android_webview/AwContents.java | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java index 8ecc734..2352b57 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwContents.java +++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java @@ -925,28 +925,28 @@ public class AwContents implements SmartClipProvider, } } private static WindowAndroidWrapper sCachedWindowAndroid; - private static WeakHashMap<Activity, WindowAndroidWrapper> sActivityWindowMap; + private static WeakHashMap<Context, WindowAndroidWrapper> sActivityContextWindowMap; // getWindowAndroid is only called on UI thread, so there are no threading issues with lazy // initialization. @SuppressFBWarnings("LI_LAZY_INIT_STATIC") private static WindowAndroidWrapper getWindowAndroid(Context context) { // TODO(boliu): WebView does not currently initialize ApplicationStatus, crbug.com/470582. - Activity activity = ContentViewCore.activityFromContext(context); - if (activity == null) { + boolean contextWrapsActivity = activityFromContext(context) != null; + if (!contextWrapsActivity) { if (sCachedWindowAndroid == null) { sCachedWindowAndroid = new WindowAndroidWrapper(new WindowAndroid(context)); } return sCachedWindowAndroid; } - if (sActivityWindowMap == null) sActivityWindowMap = new WeakHashMap<>(); - WindowAndroidWrapper activityWindowAndroid = sActivityWindowMap.get(activity); + if (sActivityContextWindowMap == null) sActivityContextWindowMap = new WeakHashMap<>(); + WindowAndroidWrapper activityWindowAndroid = sActivityContextWindowMap.get(context); if (activityWindowAndroid == null) { final boolean listenToActivityState = false; activityWindowAndroid = new WindowAndroidWrapper( - new ActivityWindowAndroid(activity, listenToActivityState)); - sActivityWindowMap.put(activity, activityWindowAndroid); + new ActivityWindowAndroid(context, listenToActivityState)); + sActivityContextWindowMap.put(context, activityWindowAndroid); } return activityWindowAndroid; } @@ -1208,7 +1208,7 @@ public class AwContents implements SmartClipProvider, } public static Activity activityFromContext(Context context) { - return ContentViewCore.activityFromContext(context); + return WindowAndroid.activityFromContext(context); } /** * Disables contents of JS-to-Java bridge objects to be inspectable using @@ -2256,7 +2256,7 @@ public class AwContents implements SmartClipProvider, intent.putExtra(Intent.EXTRA_PROCESS_TEXT_READONLY, true); } - if (ContentViewCore.activityFromContext(mContext) == null) { + if (WindowAndroid.activityFromContext(mContext) == null) { mContext.startActivity(intent); return; } |