| OLD | NEW |
| 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; |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 int getPackageId(Resources resources, String packageName); | 75 int getPackageId(Resources resources, String packageName); |
| 76 | 76 |
| 77 /** @see android.webkit.WebViewDelegate#getApplication */ | 77 /** @see android.webkit.WebViewDelegate#getApplication */ |
| 78 Application getApplication(); | 78 Application getApplication(); |
| 79 | 79 |
| 80 /** @see android.webkit.WebViewDelegate#getErrorString */ | 80 /** @see android.webkit.WebViewDelegate#getErrorString */ |
| 81 String getErrorString(Context context, int errorCode); | 81 String getErrorString(Context context, int errorCode); |
| 82 | 82 |
| 83 /** @see android.webkit.WebViewDelegate#addWebViewAssetPath */ | 83 /** @see android.webkit.WebViewDelegate#addWebViewAssetPath */ |
| 84 void addWebViewAssetPath(Context context); | 84 void addWebViewAssetPath(Context context); |
| 85 |
| 86 /** @see android.webkit.WebViewDelegate#isMultiProcessEnabled */ |
| 87 boolean isMultiProcessEnabled(); |
| 85 } | 88 } |
| 86 | 89 |
| 87 /** | 90 /** |
| 88 * Creates a {@link WebViewDelegate com.android.webview.chromium.WebViewDele
gate} that proxies | 91 * 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}. | 92 * requests to the given {@link android.webkit.WebViewDelegate android.webki
t.WebViewDelegate}. |
| 90 * | 93 * |
| 91 * @return the created delegate | 94 * @return the created delegate |
| 92 */ | 95 */ |
| 93 static WebViewDelegate createProxyDelegate(android.webkit.WebViewDelegate de
legate) { | 96 static WebViewDelegate createProxyDelegate(android.webkit.WebViewDelegate de
legate) { |
| 94 return new ProxyDelegate(delegate); | 97 return new ProxyDelegate(delegate); |
| 95 } | 98 } |
| 96 | 99 |
| 97 /** | 100 /** |
| 98 * Creates a {@link WebViewDelegate com.android.webview.chromium.WebViewDele
gate} compatible | 101 * Creates a {@link WebViewDelegate com.android.webview.chromium.WebViewDele
gate} compatible |
| 99 * with the API 21 version of the framework in which | 102 * with the API 21 version of the framework in which |
| 100 * {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate} had
not yet been | 103 * {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate} had
not yet been |
| 101 * introduced. | 104 * introduced. |
| 102 * | 105 * |
| 103 * @return the created delegate | 106 * @return the created delegate |
| 104 */ | 107 */ |
| 105 static WebViewDelegate createApi21CompatibilityDelegate() { | 108 static WebViewDelegate createApi21CompatibilityDelegate() { |
| 106 return new Api21CompatibilityDelegate(); | 109 return new Api21CompatibilityDelegate(); |
| 107 } | 110 } |
| 108 | 111 |
| 109 /** | 112 /** |
| 110 * A {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} th
at proxies requests | 113 * A {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} th
at proxies requests |
| 111 * to a {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate
}. | 114 * to a {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate
}. |
| 112 */ | 115 */ |
| 113 private static class ProxyDelegate implements WebViewDelegate { | 116 static class ProxyDelegate implements WebViewDelegate { |
| 114 android.webkit.WebViewDelegate mDelegate; | 117 android.webkit.WebViewDelegate mDelegate; |
| 115 | 118 |
| 116 ProxyDelegate(android.webkit.WebViewDelegate delegate) { | 119 ProxyDelegate(android.webkit.WebViewDelegate delegate) { |
| 117 mDelegate = delegate; | 120 mDelegate = delegate; |
| 118 } | 121 } |
| 119 | 122 |
| 120 @Override | 123 @Override |
| 121 public void setOnTraceEnabledChangeListener(final OnTraceEnabledChangeLi
stener listener) { | 124 public void setOnTraceEnabledChangeListener(final OnTraceEnabledChangeLi
stener listener) { |
| 122 mDelegate.setOnTraceEnabledChangeListener( | 125 mDelegate.setOnTraceEnabledChangeListener( |
| 123 new android.webkit.WebViewDelegate.OnTraceEnabledChangeListe
ner() { | 126 new android.webkit.WebViewDelegate.OnTraceEnabledChangeListe
ner() { |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 // wrapper here here to avoid calling the getAssets() | 194 // wrapper here here to avoid calling the getAssets() |
| 192 // proxy chain (which we cannot change because it is in | 195 // proxy chain (which we cannot change because it is in |
| 193 // WebView framework code). | 196 // WebView framework code). |
| 194 mDelegate.addWebViewAssetPath(new ContextWrapper(context) { | 197 mDelegate.addWebViewAssetPath(new ContextWrapper(context) { |
| 195 @Override | 198 @Override |
| 196 public AssetManager getAssets() { | 199 public AssetManager getAssets() { |
| 197 return getResources().getAssets(); | 200 return getResources().getAssets(); |
| 198 } | 201 } |
| 199 }); | 202 }); |
| 200 } | 203 } |
| 204 |
| 205 @Override |
| 206 public boolean isMultiProcessEnabled() { |
| 207 throw new UnsupportedOperationException(); |
| 208 } |
| 201 } | 209 } |
| 202 | 210 |
| 203 /** | 211 /** |
| 204 * A {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} co
mpatible with the | 212 * A {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} co
mpatible with the |
| 205 * API 21 version of the framework in which | 213 * API 21 version of the framework in which |
| 206 * {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate} had
not yet been | 214 * {@link android.webkit.WebViewDelegate android.webkit.WebViewDelegate} had
not yet been |
| 207 * introduced. | 215 * introduced. |
| 208 * | 216 * |
| 209 * <p>This class implements the | 217 * <p>This class implements the |
| 210 * {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} func
tionality by using | 218 * {@link WebViewDelegate com.android.webview.chromium.WebViewDelegate} func
tionality by using |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 376 try { | 384 try { |
| 377 PackageInfo info = (PackageInfo) mGetLoadedPackageInfoMethod.inv
oke(null); | 385 PackageInfo info = (PackageInfo) mGetLoadedPackageInfoMethod.inv
oke(null); |
| 378 // Avoid calling the ContextWrapper.getAssets() proxy | 386 // Avoid calling the ContextWrapper.getAssets() proxy |
| 379 // chain, which can return an unexpected AssetManager. | 387 // chain, which can return an unexpected AssetManager. |
| 380 mAddAssetPathMethod.invoke( | 388 mAddAssetPathMethod.invoke( |
| 381 context.getResources().getAssets(), info.applicationInfo
.sourceDir); | 389 context.getResources().getAssets(), info.applicationInfo
.sourceDir); |
| 382 } catch (Exception e) { | 390 } catch (Exception e) { |
| 383 throw new RuntimeException("Invalid reflection", e); | 391 throw new RuntimeException("Invalid reflection", e); |
| 384 } | 392 } |
| 385 } | 393 } |
| 394 |
| 395 @Override |
| 396 public boolean isMultiProcessEnabled() { |
| 397 throw new UnsupportedOperationException(); |
| 398 } |
| 386 } | 399 } |
| 387 } | 400 } |
| OLD | NEW |