| 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; |
| 11 import android.content.Intent; | 11 import android.content.Intent; |
| 12 import android.content.SharedPreferences; | 12 import android.content.SharedPreferences; |
| 13 import android.content.pm.PackageInfo; | 13 import android.content.pm.PackageInfo; |
| 14 import android.content.pm.PackageManager; | 14 import android.content.pm.PackageManager; |
| 15 import android.net.Uri; | 15 import android.net.Uri; |
| 16 import android.os.Build; | 16 import android.os.Build; |
| 17 import android.os.Looper; | 17 import android.os.Looper; |
| 18 import android.os.Process; | 18 import android.os.Process; |
| 19 import android.os.UserManager; | 19 import android.os.UserManager; |
| 20 import android.provider.Settings; | 20 import android.provider.Settings; |
| 21 import android.util.Log; | 21 import android.util.Log; |
| 22 import android.webkit.CookieManager; | 22 import android.webkit.CookieManager; |
| 23 import android.webkit.GeolocationPermissions; | 23 import android.webkit.GeolocationPermissions; |
| 24 import android.webkit.ServiceWorkerController; | 24 import android.webkit.ServiceWorkerController; |
| 25 import android.webkit.TokenBindingService; | 25 import android.webkit.TokenBindingService; |
| 26 import android.webkit.ValueCallback; | |
| 27 import android.webkit.WebStorage; | 26 import android.webkit.WebStorage; |
| 28 import android.webkit.WebView; | 27 import android.webkit.WebView; |
| 29 import android.webkit.WebViewDatabase; | 28 import android.webkit.WebViewDatabase; |
| 30 import android.webkit.WebViewFactory; | 29 import android.webkit.WebViewFactory; |
| 31 import android.webkit.WebViewFactoryProvider; | 30 import android.webkit.WebViewFactoryProvider; |
| 32 import android.webkit.WebViewProvider; | 31 import android.webkit.WebViewProvider; |
| 33 | 32 |
| 34 import com.android.webview.chromium.WebViewDelegateFactory.WebViewDelegate; | 33 import com.android.webview.chromium.WebViewDelegateFactory.WebViewDelegate; |
| 35 | 34 |
| 36 import org.chromium.android_webview.AwBrowserContext; | 35 import org.chromium.android_webview.AwBrowserContext; |
| 37 import org.chromium.android_webview.AwBrowserProcess; | 36 import org.chromium.android_webview.AwBrowserProcess; |
| 38 import org.chromium.android_webview.AwContents; | 37 import org.chromium.android_webview.AwContents; |
| 39 import org.chromium.android_webview.AwContentsClient; | 38 import org.chromium.android_webview.AwContentsClient; |
| 40 import org.chromium.android_webview.AwContentsStatics; | 39 import org.chromium.android_webview.AwContentsStatics; |
| 41 import org.chromium.android_webview.AwCookieManager; | 40 import org.chromium.android_webview.AwCookieManager; |
| 42 import org.chromium.android_webview.AwDevToolsServer; | 41 import org.chromium.android_webview.AwDevToolsServer; |
| 43 import org.chromium.android_webview.AwMetricsServiceClient; | |
| 44 import org.chromium.android_webview.AwNetworkChangeNotifierRegistrationPolicy; | 42 import org.chromium.android_webview.AwNetworkChangeNotifierRegistrationPolicy; |
| 45 import org.chromium.android_webview.AwQuotaManagerBridge; | 43 import org.chromium.android_webview.AwQuotaManagerBridge; |
| 46 import org.chromium.android_webview.AwResource; | 44 import org.chromium.android_webview.AwResource; |
| 47 import org.chromium.android_webview.AwSettings; | 45 import org.chromium.android_webview.AwSettings; |
| 48 import org.chromium.android_webview.HttpAuthDatabase; | 46 import org.chromium.android_webview.HttpAuthDatabase; |
| 49 import org.chromium.android_webview.PlatformServiceBridge; | 47 import org.chromium.android_webview.PlatformServiceBridge; |
| 50 import org.chromium.android_webview.ResourcesContextWrapperFactory; | 48 import org.chromium.android_webview.ResourcesContextWrapperFactory; |
| 51 import org.chromium.android_webview.command_line.CommandLineUtil; | 49 import org.chromium.android_webview.command_line.CommandLineUtil; |
| 52 import org.chromium.base.BuildConfig; | 50 import org.chromium.base.BuildConfig; |
| 53 import org.chromium.base.BuildInfo; | 51 import org.chromium.base.BuildInfo; |
| (...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 // Future calls to PlatformServiceBridge.getInstance() rely on it having
been created here. | 403 // Future calls to PlatformServiceBridge.getInstance() rely on it having
been created here. |
| 406 PlatformServiceBridge.getOrCreateInstance(); | 404 PlatformServiceBridge.getOrCreateInstance(); |
| 407 | 405 |
| 408 // Make sure that ResourceProvider is initialized before starting the br
owser process. | 406 // Make sure that ResourceProvider is initialized before starting the br
owser process. |
| 409 final PackageInfo webViewPackageInfo = WebViewFactory.getLoadedPackageIn
fo(); | 407 final PackageInfo webViewPackageInfo = WebViewFactory.getLoadedPackageIn
fo(); |
| 410 final String webViewPackageName = webViewPackageInfo.packageName; | 408 final String webViewPackageName = webViewPackageInfo.packageName; |
| 411 setUpResources(webViewPackageInfo, context); | 409 setUpResources(webViewPackageInfo, context); |
| 412 initPlatSupportLibrary(); | 410 initPlatSupportLibrary(); |
| 413 doNetworkInitializations(context); | 411 doNetworkInitializations(context); |
| 414 final boolean isExternalService = true; | 412 final boolean isExternalService = true; |
| 413 // The WebView package name is used to locate the separate Service to wh
ich we copy crash |
| 414 // minidumps. This package name must be set before a render process has
a chance to crash - |
| 415 // otherwise we might try to copy a minidump without knowing what proces
s to copy it to. |
| 416 AwBrowserProcess.setWebViewPackageName(webViewPackageName); |
| 415 AwBrowserProcess.configureChildProcessLauncher(webViewPackageName, isExt
ernalService); | 417 AwBrowserProcess.configureChildProcessLauncher(webViewPackageName, isExt
ernalService); |
| 416 AwBrowserProcess.start(); | 418 AwBrowserProcess.start(); |
| 417 | 419 AwBrowserProcess.handleMinidumpsAndSetMetricsConsent( |
| 418 final boolean enableMinidumpUploadingForTesting = CommandLine.getInstanc
e().hasSwitch( | 420 webViewPackageName, true /* updateMetricsConsent */); |
| 419 CommandLineUtil.CRASH_UPLOADS_ENABLED_FOR_TESTING_SWITCH); | |
| 420 if (enableMinidumpUploadingForTesting) { | |
| 421 AwBrowserProcess.handleMinidumps(webViewPackageName, true /* enabled
*/); | |
| 422 } | |
| 423 | |
| 424 PlatformServiceBridge.getInstance().queryMetricsSetting(new ValueCallbac
k<Boolean>() { | |
| 425 // Actions conditioned on whether the Android Checkbox is toggled on | |
| 426 public void onReceiveValue(Boolean enabled) { | |
| 427 ThreadUtils.assertOnUiThread(); | |
| 428 AwMetricsServiceClient.setConsentSetting(context, enabled); | |
| 429 | |
| 430 if (!enableMinidumpUploadingForTesting) { | |
| 431 AwBrowserProcess.handleMinidumps(webViewPackageName, enabled
); | |
| 432 } | |
| 433 } | |
| 434 }); | |
| 435 | 421 |
| 436 if (CommandLineUtil.isBuildDebuggable()) { | 422 if (CommandLineUtil.isBuildDebuggable()) { |
| 437 setWebContentsDebuggingEnabled(true); | 423 setWebContentsDebuggingEnabled(true); |
| 438 } | 424 } |
| 439 | 425 |
| 440 TraceEvent.setATraceEnabled(mWebViewDelegate.isTraceTagEnabled()); | 426 TraceEvent.setATraceEnabled(mWebViewDelegate.isTraceTagEnabled()); |
| 441 mWebViewDelegate.setOnTraceEnabledChangeListener( | 427 mWebViewDelegate.setOnTraceEnabledChangeListener( |
| 442 new WebViewDelegate.OnTraceEnabledChangeListener() { | 428 new WebViewDelegate.OnTraceEnabledChangeListener() { |
| 443 @Override | 429 @Override |
| 444 public void onTraceEnabledChange(boolean enabled) { | 430 public void onTraceEnabledChange(boolean enabled) { |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 692 WebViewDelegate getWebViewDelegate() { | 678 WebViewDelegate getWebViewDelegate() { |
| 693 return mWebViewDelegate; | 679 return mWebViewDelegate; |
| 694 } | 680 } |
| 695 | 681 |
| 696 // The method to support unreleased Android. | 682 // The method to support unreleased Android. |
| 697 WebViewContentsClientAdapter createWebViewContentsClientAdapter(WebView webV
iew, | 683 WebViewContentsClientAdapter createWebViewContentsClientAdapter(WebView webV
iew, |
| 698 Context context) { | 684 Context context) { |
| 699 return new WebViewContentsClientAdapter(webView, context, mWebViewDelega
te); | 685 return new WebViewContentsClientAdapter(webView, context, mWebViewDelega
te); |
| 700 } | 686 } |
| 701 } | 687 } |
| OLD | NEW |