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

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

Issue 2833893002: [Android WebView] Trigger minidump uploading on renderer crash. (Closed)
Patch Set: Rebase Created 3 years, 7 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.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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698