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.StrictMode; | 19 import android.os.StrictMode; |
20 import android.os.UserManager; | 20 import android.os.UserManager; |
21 import android.provider.Settings; | 21 import android.provider.Settings; |
22 import android.util.Log; | 22 import android.util.Log; |
23 import android.webkit.CookieManager; | 23 import android.webkit.CookieManager; |
24 import android.webkit.GeolocationPermissions; | 24 import android.webkit.GeolocationPermissions; |
25 import android.webkit.ServiceWorkerController; | 25 import android.webkit.ServiceWorkerController; |
26 import android.webkit.TokenBindingService; | 26 import android.webkit.TokenBindingService; |
27 import android.webkit.ValueCallback; | |
28 import android.webkit.WebStorage; | 27 import android.webkit.WebStorage; |
29 import android.webkit.WebView; | 28 import android.webkit.WebView; |
30 import android.webkit.WebViewDatabase; | 29 import android.webkit.WebViewDatabase; |
31 import android.webkit.WebViewFactory; | 30 import android.webkit.WebViewFactory; |
32 import android.webkit.WebViewFactoryProvider; | 31 import android.webkit.WebViewFactoryProvider; |
33 import android.webkit.WebViewProvider; | 32 import android.webkit.WebViewProvider; |
34 | 33 |
35 import com.android.webview.chromium.WebViewDelegateFactory.WebViewDelegate; | 34 import com.android.webview.chromium.WebViewDelegateFactory.WebViewDelegate; |
36 | 35 |
37 import org.chromium.android_webview.AwBrowserContext; | 36 import org.chromium.android_webview.AwBrowserContext; |
38 import org.chromium.android_webview.AwBrowserProcess; | 37 import org.chromium.android_webview.AwBrowserProcess; |
39 import org.chromium.android_webview.AwContents; | 38 import org.chromium.android_webview.AwContents; |
40 import org.chromium.android_webview.AwContentsClient; | 39 import org.chromium.android_webview.AwContentsClient; |
41 import org.chromium.android_webview.AwContentsStatics; | 40 import org.chromium.android_webview.AwContentsStatics; |
42 import org.chromium.android_webview.AwCookieManager; | 41 import org.chromium.android_webview.AwCookieManager; |
43 import org.chromium.android_webview.AwDevToolsServer; | 42 import org.chromium.android_webview.AwDevToolsServer; |
44 import org.chromium.android_webview.AwMetricsServiceClient; | |
45 import org.chromium.android_webview.AwNetworkChangeNotifierRegistrationPolicy; | 43 import org.chromium.android_webview.AwNetworkChangeNotifierRegistrationPolicy; |
46 import org.chromium.android_webview.AwQuotaManagerBridge; | 44 import org.chromium.android_webview.AwQuotaManagerBridge; |
47 import org.chromium.android_webview.AwResource; | 45 import org.chromium.android_webview.AwResource; |
48 import org.chromium.android_webview.AwSettings; | 46 import org.chromium.android_webview.AwSettings; |
49 import org.chromium.android_webview.HttpAuthDatabase; | 47 import org.chromium.android_webview.HttpAuthDatabase; |
50 import org.chromium.android_webview.PlatformServiceBridge; | |
51 import org.chromium.android_webview.ResourcesContextWrapperFactory; | 48 import org.chromium.android_webview.ResourcesContextWrapperFactory; |
52 import org.chromium.android_webview.command_line.CommandLineUtil; | 49 import org.chromium.android_webview.command_line.CommandLineUtil; |
53 import org.chromium.base.BuildConfig; | 50 import org.chromium.base.BuildConfig; |
54 import org.chromium.base.BuildInfo; | 51 import org.chromium.base.BuildInfo; |
55 import org.chromium.base.CommandLine; | 52 import org.chromium.base.CommandLine; |
56 import org.chromium.base.ContextUtils; | 53 import org.chromium.base.ContextUtils; |
57 import org.chromium.base.MemoryPressureListener; | 54 import org.chromium.base.MemoryPressureListener; |
58 import org.chromium.base.PackageUtils; | 55 import org.chromium.base.PackageUtils; |
59 import org.chromium.base.PathService; | 56 import org.chromium.base.PathService; |
60 import org.chromium.base.PathUtils; | 57 import org.chromium.base.PathUtils; |
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
410 PathService.override(DIR_RESOURCE_PAKS_ANDROID, "/system/framework/webvi
ew/paks"); | 407 PathService.override(DIR_RESOURCE_PAKS_ANDROID, "/system/framework/webvi
ew/paks"); |
411 | 408 |
412 // Make sure that ResourceProvider is initialized before starting the br
owser process. | 409 // Make sure that ResourceProvider is initialized before starting the br
owser process. |
413 final PackageInfo webViewPackageInfo = WebViewFactory.getLoadedPackageIn
fo(); | 410 final PackageInfo webViewPackageInfo = WebViewFactory.getLoadedPackageIn
fo(); |
414 final String webViewPackageName = webViewPackageInfo.packageName; | 411 final String webViewPackageName = webViewPackageInfo.packageName; |
415 final Context context = ContextUtils.getApplicationContext(); | 412 final Context context = ContextUtils.getApplicationContext(); |
416 setUpResources(webViewPackageInfo, context); | 413 setUpResources(webViewPackageInfo, context); |
417 initPlatSupportLibrary(); | 414 initPlatSupportLibrary(); |
418 doNetworkInitializations(context); | 415 doNetworkInitializations(context); |
419 final boolean isExternalService = true; | 416 final boolean isExternalService = true; |
| 417 // The WebView package name is used to locate the separate Service to wh
ich we copy crash |
| 418 // minidumps. This package name must be set before a render process has
a chance to crash - |
| 419 // otherwise we might try to copy a minidump without knowing what proces
s to copy it to. |
| 420 AwBrowserProcess.setWebViewPackageName(webViewPackageName); |
420 AwBrowserProcess.configureChildProcessLauncher(webViewPackageName, isExt
ernalService); | 421 AwBrowserProcess.configureChildProcessLauncher(webViewPackageName, isExt
ernalService); |
421 AwBrowserProcess.start(); | 422 AwBrowserProcess.start(); |
422 | 423 AwBrowserProcess.handleMinidumpsAndSetMetricsConsent( |
423 final boolean enableMinidumpUploadingForTesting = CommandLine.getInstanc
e().hasSwitch( | 424 webViewPackageName, true /* updateMetricsConsent */); |
424 CommandLineUtil.CRASH_UPLOADS_ENABLED_FOR_TESTING_SWITCH); | |
425 if (enableMinidumpUploadingForTesting) { | |
426 AwBrowserProcess.handleMinidumps(webViewPackageName, true /* enabled
*/); | |
427 } | |
428 | |
429 PlatformServiceBridge.getInstance().queryMetricsSetting(new ValueCallbac
k<Boolean>() { | |
430 // Actions conditioned on whether the Android Checkbox is toggled on | |
431 public void onReceiveValue(Boolean enabled) { | |
432 ThreadUtils.assertOnUiThread(); | |
433 AwMetricsServiceClient.setConsentSetting(context, enabled); | |
434 | |
435 if (!enableMinidumpUploadingForTesting) { | |
436 AwBrowserProcess.handleMinidumps(webViewPackageName, enabled
); | |
437 } | |
438 } | |
439 }); | |
440 | 425 |
441 if (CommandLineUtil.isBuildDebuggable()) { | 426 if (CommandLineUtil.isBuildDebuggable()) { |
442 setWebContentsDebuggingEnabled(true); | 427 setWebContentsDebuggingEnabled(true); |
443 } | 428 } |
444 | 429 |
445 TraceEvent.setATraceEnabled(mWebViewDelegate.isTraceTagEnabled()); | 430 TraceEvent.setATraceEnabled(mWebViewDelegate.isTraceTagEnabled()); |
446 mWebViewDelegate.setOnTraceEnabledChangeListener( | 431 mWebViewDelegate.setOnTraceEnabledChangeListener( |
447 new WebViewDelegate.OnTraceEnabledChangeListener() { | 432 new WebViewDelegate.OnTraceEnabledChangeListener() { |
448 @Override | 433 @Override |
449 public void onTraceEnabledChange(boolean enabled) { | 434 public void onTraceEnabledChange(boolean enabled) { |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
697 WebViewDelegate getWebViewDelegate() { | 682 WebViewDelegate getWebViewDelegate() { |
698 return mWebViewDelegate; | 683 return mWebViewDelegate; |
699 } | 684 } |
700 | 685 |
701 // The method to support unreleased Android. | 686 // The method to support unreleased Android. |
702 WebViewContentsClientAdapter createWebViewContentsClientAdapter(WebView webV
iew, | 687 WebViewContentsClientAdapter createWebViewContentsClientAdapter(WebView webV
iew, |
703 Context context) { | 688 Context context) { |
704 return new WebViewContentsClientAdapter(webView, context, mWebViewDelega
te); | 689 return new WebViewContentsClientAdapter(webView, context, mWebViewDelega
te); |
705 } | 690 } |
706 } | 691 } |
OLD | NEW |