summaryrefslogtreecommitdiffstats
path: root/android_webview
diff options
context:
space:
mode:
authoryusufo <yusufo@chromium.org>2016-01-11 15:08:26 -0800
committerCommit bot <commit-bot@chromium.org>2016-01-11 23:10:00 +0000
commit235c2e05a35759c50b0f106ab1f7aec3142eebb1 (patch)
treee58d584f96192437ec8ec8c65a91800447b7f609 /android_webview
parent33312d6d01ec88fb6e686f03c886e2448ee238bd (diff)
downloadchromium_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.java18
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;
}