| 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.Manifest; | 7 import android.Manifest; |
| 8 import android.app.ActivityManager; | 8 import android.app.ActivityManager; |
| 9 import android.content.ComponentCallbacks2; | 9 import android.content.ComponentCallbacks2; |
| 10 import android.content.Context; | 10 import android.content.Context; |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 public WebViewChromiumFactoryProvider(android.webkit.WebViewDelegate delegat
e) { | 111 public WebViewChromiumFactoryProvider(android.webkit.WebViewDelegate delegat
e) { |
| 112 initialize(WebViewDelegateFactory.createProxyDelegate(delegate)); | 112 initialize(WebViewDelegateFactory.createProxyDelegate(delegate)); |
| 113 } | 113 } |
| 114 | 114 |
| 115 @SuppressFBWarnings("DMI_HARDCODED_ABSOLUTE_FILENAME") | 115 @SuppressFBWarnings("DMI_HARDCODED_ABSOLUTE_FILENAME") |
| 116 private void initialize(WebViewDelegate webViewDelegate) { | 116 private void initialize(WebViewDelegate webViewDelegate) { |
| 117 mWebViewDelegate = webViewDelegate; | 117 mWebViewDelegate = webViewDelegate; |
| 118 | 118 |
| 119 // WebView needs to make sure to always use the wrapped application cont
ext. | 119 // WebView needs to make sure to always use the wrapped application cont
ext. |
| 120 ContextUtils.initApplicationContext( | 120 ContextUtils.initApplicationContext( |
| 121 ResourcesContextWrapperFactory.get(mWebViewDelegate.getApplicati
on())); | 121 ResourcesContextWrapperFactory.get( |
| 122 mWebViewDelegate.getApplication().getApplicationContext(
))); |
| 122 | 123 |
| 123 if (isBuildDebuggable()) { | 124 if (isBuildDebuggable()) { |
| 124 // Suppress the StrictMode violation as this codepath is only hit on
debugglable builds. | 125 // Suppress the StrictMode violation as this codepath is only hit on
debuggable builds. |
| 125 StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads(
); | 126 StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads(
); |
| 126 CommandLine.initFromFile(COMMAND_LINE_FILE); | 127 CommandLine.initFromFile(COMMAND_LINE_FILE); |
| 127 StrictMode.setThreadPolicy(oldPolicy); | 128 StrictMode.setThreadPolicy(oldPolicy); |
| 128 } else { | 129 } else { |
| 129 CommandLine.init(null); | 130 CommandLine.init(null); |
| 130 } | 131 } |
| 131 | 132 |
| 132 ThreadUtils.setWillOverrideUiThread(); | 133 ThreadUtils.setWillOverrideUiThread(); |
| 133 // Load chromium library. | 134 // Load chromium library. |
| 134 AwBrowserProcess.loadLibrary(ContextUtils.getApplicationContext()); | 135 AwBrowserProcess.loadLibrary(); |
| 135 | 136 |
| 136 final PackageInfo packageInfo = WebViewFactory.getLoadedPackageInfo(); | 137 final PackageInfo packageInfo = WebViewFactory.getLoadedPackageInfo(); |
| 137 | 138 |
| 138 // Load glue-layer support library. | 139 // Load glue-layer support library. |
| 139 System.loadLibrary("webviewchromium_plat_support"); | 140 System.loadLibrary("webviewchromium_plat_support"); |
| 140 | 141 |
| 141 // Use shared preference to check for package downgrade. | 142 // Use shared preference to check for package downgrade. |
| 142 mWebViewPrefs = mWebViewDelegate.getApplication().getSharedPreferences( | 143 mWebViewPrefs = ContextUtils.getApplicationContext().getSharedPreference
s( |
| 143 CHROMIUM_PREFS_NAME, Context.MODE_PRIVATE); | 144 CHROMIUM_PREFS_NAME, Context.MODE_PRIVATE); |
| 144 int lastVersion = mWebViewPrefs.getInt(VERSION_CODE_PREF, 0); | 145 int lastVersion = mWebViewPrefs.getInt(VERSION_CODE_PREF, 0); |
| 145 int currentVersion = packageInfo.versionCode; | 146 int currentVersion = packageInfo.versionCode; |
| 146 if (!versionCodeGE(currentVersion, lastVersion)) { | 147 if (!versionCodeGE(currentVersion, lastVersion)) { |
| 147 // The WebView package has been downgraded since we last ran in this
application. | 148 // The WebView package has been downgraded since we last ran in this
application. |
| 148 // Delete the WebView data directory's contents. | 149 // Delete the WebView data directory's contents. |
| 149 String dataDir = PathUtils.getDataDirectory(mWebViewDelegate.getAppl
ication()); | 150 String dataDir = PathUtils.getDataDirectory(ContextUtils.getApplicat
ionContext()); |
| 150 Log.i(TAG, "WebView package downgraded from " + lastVersion + " to "
+ currentVersion | 151 Log.i(TAG, "WebView package downgraded from " + lastVersion + " to "
+ currentVersion |
| 151 + "; deleting contents of " + dataDir); | 152 + "; deleting contents of " + dataDir); |
| 152 deleteContents(new File(dataDir)); | 153 deleteContents(new File(dataDir)); |
| 153 } | 154 } |
| 154 if (lastVersion != currentVersion) { | 155 if (lastVersion != currentVersion) { |
| 155 mWebViewPrefs.edit().putInt(VERSION_CODE_PREF, currentVersion).apply
(); | 156 mWebViewPrefs.edit().putInt(VERSION_CODE_PREF, currentVersion).apply
(); |
| 156 } | 157 } |
| 157 // Now safe to use WebView data directory. | 158 // Now safe to use WebView data directory. |
| 158 } | 159 } |
| 159 | 160 |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 279 PathService.override(DIR_RESOURCE_PAKS_ANDROID, "/system/framework/webvi
ew/paks"); | 280 PathService.override(DIR_RESOURCE_PAKS_ANDROID, "/system/framework/webvi
ew/paks"); |
| 280 | 281 |
| 281 // Make sure that ResourceProvider is initialized before starting the br
owser process. | 282 // Make sure that ResourceProvider is initialized before starting the br
owser process. |
| 282 final String webViewPackageName = WebViewFactory.getLoadedPackageInfo().
packageName; | 283 final String webViewPackageName = WebViewFactory.getLoadedPackageInfo().
packageName; |
| 283 setUpResources(webViewPackageName, context); | 284 setUpResources(webViewPackageName, context); |
| 284 ResourceBundle.initializeLocalePaks(context, R.array.locale_paks); | 285 ResourceBundle.initializeLocalePaks(context, R.array.locale_paks); |
| 285 initPlatSupportLibrary(); | 286 initPlatSupportLibrary(); |
| 286 initNetworkChangeNotifier(context); | 287 initNetworkChangeNotifier(context); |
| 287 final int extraBindFlags = 0; | 288 final int extraBindFlags = 0; |
| 288 AwBrowserProcess.configureChildProcessLauncher(webViewPackageName, extra
BindFlags); | 289 AwBrowserProcess.configureChildProcessLauncher(webViewPackageName, extra
BindFlags); |
| 289 AwBrowserProcess.start(context); | 290 AwBrowserProcess.start(); |
| 290 | 291 |
| 291 if (isBuildDebuggable()) { | 292 if (isBuildDebuggable()) { |
| 292 setWebContentsDebuggingEnabled(true); | 293 setWebContentsDebuggingEnabled(true); |
| 293 } | 294 } |
| 294 | 295 |
| 295 TraceEvent.setATraceEnabled(mWebViewDelegate.isTraceTagEnabled()); | 296 TraceEvent.setATraceEnabled(mWebViewDelegate.isTraceTagEnabled()); |
| 296 mWebViewDelegate.setOnTraceEnabledChangeListener( | 297 mWebViewDelegate.setOnTraceEnabledChangeListener( |
| 297 new WebViewDelegate.OnTraceEnabledChangeListener() { | 298 new WebViewDelegate.OnTraceEnabledChangeListener() { |
| 298 @Override | 299 @Override |
| 299 public void onTraceEnabledChange(boolean enabled) { | 300 public void onTraceEnabledChange(boolean enabled) { |
| 300 TraceEvent.setATraceEnabled(enabled); | 301 TraceEvent.setATraceEnabled(enabled); |
| 301 } | 302 } |
| 302 }); | 303 }); |
| 303 mStarted = true; | 304 mStarted = true; |
| 304 | 305 |
| 305 for (WeakReference<WebViewChromium> wvc : mWebViewsToStart) { | 306 for (WeakReference<WebViewChromium> wvc : mWebViewsToStart) { |
| 306 WebViewChromium w = wvc.get(); | 307 WebViewChromium w = wvc.get(); |
| 307 if (w != null) { | 308 if (w != null) { |
| 308 w.startYourEngine(); | 309 w.startYourEngine(); |
| 309 } | 310 } |
| 310 } | 311 } |
| 311 mWebViewsToStart.clear(); | 312 mWebViewsToStart.clear(); |
| 312 mWebViewsToStart = null; | 313 mWebViewsToStart = null; |
| 313 | 314 |
| 314 // Start listening for data reduction proxy setting changes. | 315 // Start listening for data reduction proxy setting changes. |
| 315 mProxyManager = new AwDataReductionProxyManager(); | 316 mProxyManager = new AwDataReductionProxyManager(); |
| 316 mProxyManager.start(mWebViewDelegate.getApplication()); | 317 mProxyManager.start(ContextUtils.getApplicationContext()); |
| 317 } | 318 } |
| 318 | 319 |
| 319 boolean hasStarted() { | 320 boolean hasStarted() { |
| 320 return mStarted; | 321 return mStarted; |
| 321 } | 322 } |
| 322 | 323 |
| 323 void startYourEngines(boolean onMainThread) { | 324 void startYourEngines(boolean onMainThread) { |
| 324 synchronized (mLock) { | 325 synchronized (mLock) { |
| 325 ensureChromiumStartedLocked(onMainThread); | 326 ensureChromiumStartedLocked(onMainThread); |
| 326 } | 327 } |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 485 browserContext.getHttpAuthDatabase(context)); | 486 browserContext.getHttpAuthDatabase(context)); |
| 486 } | 487 } |
| 487 } | 488 } |
| 488 return mWebViewDatabase; | 489 return mWebViewDatabase; |
| 489 } | 490 } |
| 490 | 491 |
| 491 WebViewDelegate getWebViewDelegate() { | 492 WebViewDelegate getWebViewDelegate() { |
| 492 return mWebViewDelegate; | 493 return mWebViewDelegate; |
| 493 } | 494 } |
| 494 } | 495 } |
| OLD | NEW |