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

Side by Side Diff: android_webview/glue/java/src/com/android/webview/chromium/WebViewDelegateFactory.java

Issue 2645413002: Prepare to get the multiprocess setting from WebViewDelegate. (Closed)
Patch Set: Created 3 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package com.android.webview.chromium; 5 package com.android.webview.chromium;
6 6
7 import android.annotation.TargetApi; 7 import android.annotation.TargetApi;
8 import android.app.Application; 8 import android.app.Application;
9 import android.content.Context; 9 import android.content.Context;
10 import android.content.ContextWrapper; 10 import android.content.ContextWrapper;
11 import android.content.pm.PackageInfo; 11 import android.content.pm.PackageInfo;
12 import android.content.res.AssetManager; 12 import android.content.res.AssetManager;
13 import android.content.res.Resources; 13 import android.content.res.Resources;
14 import android.graphics.Canvas; 14 import android.graphics.Canvas;
15 import android.os.Build; 15 import android.os.Build;
16 import android.os.Trace; 16 import android.os.Trace;
17 import android.provider.Settings;
17 import android.util.SparseArray; 18 import android.util.SparseArray;
18 import android.view.View; 19 import android.view.View;
19 20
21 import org.chromium.base.ContextUtils;
22
20 import java.lang.reflect.Method; 23 import java.lang.reflect.Method;
21 24
22 /** 25 /**
23 * Factory class for {@link WebViewDelegate com.android.webview.chromium.WebView Delegate}s. 26 * Factory class for {@link WebViewDelegate com.android.webview.chromium.WebView Delegate}s.
24 * 27 *
25 * <p>{@link WebViewDelegate com.android.webview.chromium.WebViewDelegate}s prov ide the same 28 * <p>{@link WebViewDelegate com.android.webview.chromium.WebViewDelegate}s prov ide the same
26 * interface as {@link android.webkit.WebViewDelegate android.webkit.WebViewDele gate} but without 29 * interface as {@link android.webkit.WebViewDelegate android.webkit.WebViewDele gate} but without
27 * a dependency on the webkit class. Defining our own 30 * a dependency on the webkit class. Defining our own
28 * {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} in frame works/webview 31 * {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} in frame works/webview
29 * allows the WebView apk to be binary compatible with the API 21 version of the framework, in 32 * allows the WebView apk to be binary compatible with the API 21 version of the framework, in
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 int getPackageId(Resources resources, String packageName); 78 int getPackageId(Resources resources, String packageName);
76 79
77 /** @see android.webkit.WebViewDelegate#getApplication */ 80 /** @see android.webkit.WebViewDelegate#getApplication */
78 Application getApplication(); 81 Application getApplication();
79 82
80 /** @see android.webkit.WebViewDelegate#getErrorString */ 83 /** @see android.webkit.WebViewDelegate#getErrorString */
81 String getErrorString(Context context, int errorCode); 84 String getErrorString(Context context, int errorCode);
82 85
83 /** @see android.webkit.WebViewDelegate#addWebViewAssetPath */ 86 /** @see android.webkit.WebViewDelegate#addWebViewAssetPath */
84 void addWebViewAssetPath(Context context); 87 void addWebViewAssetPath(Context context);
88
89 /** @see android.webkit.WebViewDelegate#isMultiProcessEnabled */
90 boolean isMultiProcessEnabled();
85 } 91 }
86 92
87 /** 93 /**
88 * Creates a {@link WebViewDelegate com.android.webview.chromium.WebViewDele gate} that proxies 94 * Creates a {@link WebViewDelegate com.android.webview.chromium.WebViewDele gate} that proxies
89 * requests to the given {@link android.webkit.WebViewDelegate android.webki t.WebViewDelegate}. 95 * requests to the given {@link android.webkit.WebViewDelegate android.webki t.WebViewDelegate}.
90 * 96 *
91 * @return the created delegate 97 * @return the created delegate
92 */ 98 */
93 static WebViewDelegate createProxyDelegate(android.webkit.WebViewDelegate de legate) { 99 static WebViewDelegate createProxyDelegate(android.webkit.WebViewDelegate de legate) {
94 return new ProxyDelegate(delegate); 100 return new ProxyDelegate(delegate);
95 } 101 }
96 102
97 /** 103 /**
98 * Creates a {@link WebViewDelegate com.android.webview.chromium.WebViewDele gate} compatible 104 * Creates a {@link WebViewDelegate com.android.webview.chromium.WebViewDele gate} compatible
99 * with the API 21 version of the framework in which 105 * with the API 21 version of the framework in which
100 * {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate} had not yet been 106 * {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate} had not yet been
101 * introduced. 107 * introduced.
102 * 108 *
103 * @return the created delegate 109 * @return the created delegate
104 */ 110 */
105 static WebViewDelegate createApi21CompatibilityDelegate() { 111 static WebViewDelegate createApi21CompatibilityDelegate() {
106 return new Api21CompatibilityDelegate(); 112 return new Api21CompatibilityDelegate();
107 } 113 }
108 114
109 /** 115 /**
110 * A {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} th at proxies requests 116 * A {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} th at proxies requests
111 * to a {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate }. 117 * to a {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate }.
112 */ 118 */
113 private static class ProxyDelegate implements WebViewDelegate { 119 static class ProxyDelegate implements WebViewDelegate {
boliu 2017/01/23 16:34:18 does protected work here too..?
Torne 2017/01/23 17:27:30 Likewise no point.
114 android.webkit.WebViewDelegate mDelegate; 120 android.webkit.WebViewDelegate mDelegate;
115 121
116 ProxyDelegate(android.webkit.WebViewDelegate delegate) { 122 ProxyDelegate(android.webkit.WebViewDelegate delegate) {
117 mDelegate = delegate; 123 mDelegate = delegate;
118 } 124 }
119 125
120 @Override 126 @Override
121 public void setOnTraceEnabledChangeListener(final OnTraceEnabledChangeLi stener listener) { 127 public void setOnTraceEnabledChangeListener(final OnTraceEnabledChangeLi stener listener) {
122 mDelegate.setOnTraceEnabledChangeListener( 128 mDelegate.setOnTraceEnabledChangeListener(
123 new android.webkit.WebViewDelegate.OnTraceEnabledChangeListe ner() { 129 new android.webkit.WebViewDelegate.OnTraceEnabledChangeListe ner() {
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 // wrapper here here to avoid calling the getAssets() 197 // wrapper here here to avoid calling the getAssets()
192 // proxy chain (which we cannot change because it is in 198 // proxy chain (which we cannot change because it is in
193 // WebView framework code). 199 // WebView framework code).
194 mDelegate.addWebViewAssetPath(new ContextWrapper(context) { 200 mDelegate.addWebViewAssetPath(new ContextWrapper(context) {
195 @Override 201 @Override
196 public AssetManager getAssets() { 202 public AssetManager getAssets() {
197 return getResources().getAssets(); 203 return getResources().getAssets();
198 } 204 }
199 }); 205 });
200 } 206 }
207
208 @Override
209 public boolean isMultiProcessEnabled() {
210 // Multiprocess requires N or later.
boliu 2017/01/23 16:34:18 I suppose this class was never meant to contain im
Torne 2017/01/23 17:27:30 I was considering renaming it to Api22AndUpDelegat
boliu 2017/01/23 17:44:04 Err, no :p I meant at callsite, have a if <= N, d
Torne 2017/01/24 11:24:01 I think that's a better idea actually; I'll do it
211 if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) return false;
212
213 // Check the multiprocess developer setting.
214 return Settings.Global.getInt(ContextUtils.getApplicationContext().g etContentResolver(),
215 Settings.Global.WEBVIEW_MULTIPROCESS, 0) == 1;
216 }
201 } 217 }
202 218
203 /** 219 /**
204 * A {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} co mpatible with the 220 * A {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} co mpatible with the
205 * API 21 version of the framework in which 221 * API 21 version of the framework in which
206 * {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate} had not yet been 222 * {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate} had not yet been
207 * introduced. 223 * introduced.
208 * 224 *
209 * <p>This class implements the 225 * <p>This class implements the
210 * {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} func tionality by using 226 * {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} func tionality by using
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 try { 392 try {
377 PackageInfo info = (PackageInfo) mGetLoadedPackageInfoMethod.inv oke(null); 393 PackageInfo info = (PackageInfo) mGetLoadedPackageInfoMethod.inv oke(null);
378 // Avoid calling the ContextWrapper.getAssets() proxy 394 // Avoid calling the ContextWrapper.getAssets() proxy
379 // chain, which can return an unexpected AssetManager. 395 // chain, which can return an unexpected AssetManager.
380 mAddAssetPathMethod.invoke( 396 mAddAssetPathMethod.invoke(
381 context.getResources().getAssets(), info.applicationInfo .sourceDir); 397 context.getResources().getAssets(), info.applicationInfo .sourceDir);
382 } catch (Exception e) { 398 } catch (Exception e) {
383 throw new RuntimeException("Invalid reflection", e); 399 throw new RuntimeException("Invalid reflection", e);
384 } 400 }
385 } 401 }
402
403 @Override
404 public boolean isMultiProcessEnabled() {
405 return false;
406 }
386 } 407 }
387 } 408 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698