| 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 |