OLD | NEW |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | 1 // Copyright 2017 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 package org.chromium.chrome.browser.crash; | 4 package org.chromium.chrome.browser.crash; |
5 | 5 |
6 import android.annotation.TargetApi; | 6 import android.annotation.TargetApi; |
7 import android.content.Context; | 7 import android.content.Context; |
8 import android.net.ConnectivityManager; | 8 import android.net.ConnectivityManager; |
9 import android.net.NetworkInfo; | |
10 import android.os.Build; | 9 import android.os.Build; |
11 import android.os.PersistableBundle; | 10 import android.os.PersistableBundle; |
12 | 11 |
13 import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferencesManager
; | 12 import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferencesManager
; |
14 import org.chromium.components.minidump_uploader.MinidumpUploaderDelegate; | 13 import org.chromium.components.minidump_uploader.MinidumpUploaderDelegate; |
15 import org.chromium.components.minidump_uploader.util.CrashReportingPermissionMa
nager; | 14 import org.chromium.components.minidump_uploader.util.CrashReportingPermissionMa
nager; |
| 15 import org.chromium.components.minidump_uploader.util.NetworkPermissionUtil; |
16 | 16 |
17 import java.io.File; | 17 import java.io.File; |
18 | 18 |
19 /** | 19 /** |
20 * Chrome-specific implementations for minidump uploading logic. | 20 * Chrome-specific implementations for minidump uploading logic. |
21 */ | 21 */ |
22 @TargetApi(Build.VERSION_CODES.M) | 22 @TargetApi(Build.VERSION_CODES.M) |
23 public class ChromeMinidumpUploaderDelegate implements MinidumpUploaderDelegate
{ | 23 public class ChromeMinidumpUploaderDelegate implements MinidumpUploaderDelegate
{ |
24 // PersistableBundle keys: | 24 // PersistableBundle keys: |
25 static final String IS_CLIENT_IN_METRICS_SAMPLE = "isClientInMetricsSample"; | 25 static final String IS_CLIENT_IN_METRICS_SAMPLE = "isClientInMetricsSample"; |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
61 @Override | 61 @Override |
62 public CrashReportingPermissionManager createCrashReportingPermissionManager
() { | 62 public CrashReportingPermissionManager createCrashReportingPermissionManager
() { |
63 return new CrashReportingPermissionManager() { | 63 return new CrashReportingPermissionManager() { |
64 @Override | 64 @Override |
65 public boolean isClientInMetricsSample() { | 65 public boolean isClientInMetricsSample() { |
66 return mPermissions.getBoolean(IS_CLIENT_IN_METRICS_SAMPLE, true
); | 66 return mPermissions.getBoolean(IS_CLIENT_IN_METRICS_SAMPLE, true
); |
67 } | 67 } |
68 | 68 |
69 @Override | 69 @Override |
70 public boolean isNetworkAvailableForCrashUploads() { | 70 public boolean isNetworkAvailableForCrashUploads() { |
71 // TODO(isherman): This code should really be shared with the An
droid Webview | 71 return NetworkPermissionUtil.isNetworkUnmetered(mConnectivityMan
ager); |
72 // implementation, which tests whether the connection is metered
, rather than | |
73 // testing the type of the connection. Implement this change in
M59 -- for M58, it's | |
74 // more important to maintain consistency with the previous impl
ementation. When | |
75 // changing this, note that forced uploads do *not* require unme
tered connections. | |
76 NetworkInfo networkInfo = mConnectivityManager.getActiveNetworkI
nfo(); | |
77 if (networkInfo == null || !networkInfo.isConnected()) return fa
lse; | |
78 return networkInfo.getType() == ConnectivityManager.TYPE_WIFI | |
79 || networkInfo.getType() == ConnectivityManager.TYPE_ETH
ERNET; | |
80 } | 72 } |
81 | 73 |
82 @Override | 74 @Override |
83 public boolean isUsageAndCrashReportingPermittedByUser() { | 75 public boolean isUsageAndCrashReportingPermittedByUser() { |
84 return PrivacyPreferencesManager.getInstance() | 76 return PrivacyPreferencesManager.getInstance() |
85 .isUsageAndCrashReportingPermittedByUser(); | 77 .isUsageAndCrashReportingPermittedByUser(); |
86 } | 78 } |
87 | 79 |
88 @Override | 80 @Override |
89 public boolean isUploadEnabledForTests() { | 81 public boolean isUploadEnabledForTests() { |
(...skipping 10 matching lines...) Expand all Loading... |
100 @Override | 92 @Override |
101 public void recordUploadSuccess(File minidump) { | 93 public void recordUploadSuccess(File minidump) { |
102 MinidumpUploadService.incrementCrashSuccessUploadCount(minidump.getAbsol
utePath()); | 94 MinidumpUploadService.incrementCrashSuccessUploadCount(minidump.getAbsol
utePath()); |
103 } | 95 } |
104 | 96 |
105 @Override | 97 @Override |
106 public void recordUploadFailure(File minidump) { | 98 public void recordUploadFailure(File minidump) { |
107 MinidumpUploadService.incrementCrashFailureUploadCount(minidump.getAbsol
utePath()); | 99 MinidumpUploadService.incrementCrashFailureUploadCount(minidump.getAbsol
utePath()); |
108 } | 100 } |
109 } | 101 } |
OLD | NEW |