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

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/preferences/privacy/PrivacyPreferencesManager.java

Issue 2751333004: [Crash Reporting] Only upload Chrome crash reports over unmetered networks. (Closed)
Patch Set: Add TODO to use Junit4 parameters Created 3 years, 9 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 org.chromium.chrome.browser.preferences.privacy; 5 package org.chromium.chrome.browser.preferences.privacy;
6 6
7 import android.content.Context; 7 import android.content.Context;
8 import android.content.SharedPreferences; 8 import android.content.SharedPreferences;
9 import android.net.ConnectivityManager; 9 import android.net.ConnectivityManager;
10 import android.net.NetworkInfo; 10 import android.net.NetworkInfo;
11 11
12 import org.chromium.base.CommandLine; 12 import org.chromium.base.CommandLine;
13 import org.chromium.base.ContextUtils; 13 import org.chromium.base.ContextUtils;
14 import org.chromium.base.VisibleForTesting; 14 import org.chromium.base.VisibleForTesting;
15 import org.chromium.chrome.browser.ChromeSwitches; 15 import org.chromium.chrome.browser.ChromeSwitches;
16 import org.chromium.chrome.browser.device.DeviceClassManager; 16 import org.chromium.chrome.browser.device.DeviceClassManager;
17 import org.chromium.chrome.browser.physicalweb.PhysicalWeb; 17 import org.chromium.chrome.browser.physicalweb.PhysicalWeb;
18 import org.chromium.chrome.browser.preferences.PrefServiceBridge; 18 import org.chromium.chrome.browser.preferences.PrefServiceBridge;
19 import org.chromium.components.minidump_uploader.util.CrashReportingPermissionMa nager; 19 import org.chromium.components.minidump_uploader.util.CrashReportingPermissionMa nager;
20 import org.chromium.components.minidump_uploader.util.NetworkPermissionUtil;
20 21
21 /** 22 /**
22 * Reads, writes, and migrates preferences related to network usage and privacy. 23 * Reads, writes, and migrates preferences related to network usage and privacy.
23 */ 24 */
24 public class PrivacyPreferencesManager implements CrashReportingPermissionManage r{ 25 public class PrivacyPreferencesManager implements CrashReportingPermissionManage r{
25 static final String DEPRECATED_PREF_CRASH_DUMP_UPLOAD = "crash_dump_upload"; 26 static final String DEPRECATED_PREF_CRASH_DUMP_UPLOAD = "crash_dump_upload";
26 static final String DEPRECATED_PREF_CRASH_DUMP_UPLOAD_NO_CELLULAR = 27 static final String DEPRECATED_PREF_CRASH_DUMP_UPLOAD_NO_CELLULAR =
27 "crash_dump_upload_no_cellular"; 28 "crash_dump_upload_no_cellular";
28 private static final String DEPRECATED_PREF_CELLULAR_EXPERIMENT = "cellular_ experiment"; 29 private static final String DEPRECATED_PREF_CELLULAR_EXPERIMENT = "cellular_ experiment";
29 30
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 // Delete bool PREF_NETWORK_PREDICTIONS so that string values can be sto red. Note that this 178 // Delete bool PREF_NETWORK_PREDICTIONS so that string values can be sto red. Note that this
178 // SharedPreference carries no information, because it used to be overwr itten by 179 // SharedPreference carries no information, because it used to be overwr itten by
179 // kNetworkPredictionEnabled on startup, and now it is overwritten by 180 // kNetworkPredictionEnabled on startup, and now it is overwritten by
180 // kNetworkPredictionOptions on startup. 181 // kNetworkPredictionOptions on startup.
181 if (mSharedPreferences.contains(PREF_NETWORK_PREDICTIONS)) { 182 if (mSharedPreferences.contains(PREF_NETWORK_PREDICTIONS)) {
182 sharedPreferencesEditor.remove(PREF_NETWORK_PREDICTIONS); 183 sharedPreferencesEditor.remove(PREF_NETWORK_PREDICTIONS);
183 } 184 }
184 sharedPreferencesEditor.apply(); 185 sharedPreferencesEditor.apply();
185 } 186 }
186 187
187 private NetworkInfo getActiveNetworkInfo() { 188 protected boolean isNetworkAvailable() {
188 ConnectivityManager connectivityManager = 189 ConnectivityManager connectivityManager =
189 (ConnectivityManager) mContext.getSystemService(Context.CONNECTI VITY_SERVICE); 190 (ConnectivityManager) mContext.getSystemService(Context.CONNECTI VITY_SERVICE);
190 return connectivityManager.getActiveNetworkInfo(); 191 NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
191 }
192
193 protected boolean isNetworkAvailable() {
194 NetworkInfo networkInfo = getActiveNetworkInfo();
195 return (networkInfo != null && networkInfo.isConnected()); 192 return (networkInfo != null && networkInfo.isConnected());
196 } 193 }
197 194
198 protected boolean isWiFiOrEthernetNetwork() {
199 NetworkInfo networkInfo = getActiveNetworkInfo();
200 return networkInfo != null
201 && (networkInfo.getType() == ConnectivityManager.TYPE_WIFI
202 || networkInfo.getType() == ConnectivityManager.TYPE_ETH ERNET);
203 }
204
205 protected boolean isMobileNetworkCapable() { 195 protected boolean isMobileNetworkCapable() {
206 ConnectivityManager connectivityManager = 196 ConnectivityManager connectivityManager =
207 (ConnectivityManager) mContext.getSystemService(Context.CONNECTI VITY_SERVICE); 197 (ConnectivityManager) mContext.getSystemService(Context.CONNECTI VITY_SERVICE);
208 // Android telephony team said it is OK to continue using getNetworkInfo () for our purposes. 198 // Android telephony team said it is OK to continue using getNetworkInfo () for our purposes.
209 // We cannot use ConnectivityManager#getAllNetworks() because that one o nly reports enabled 199 // We cannot use ConnectivityManager#getAllNetworks() because that one o nly reports enabled
210 // networks. See crbug.com/532455. 200 // networks. See crbug.com/532455.
211 @SuppressWarnings("deprecation") 201 @SuppressWarnings("deprecation")
212 NetworkInfo networkInfo = connectivityManager 202 NetworkInfo networkInfo = connectivityManager
213 .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 203 .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
214 return networkInfo != null; 204 return networkInfo != null;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 return mSharedPreferences.getBoolean(PREF_METRICS_IN_SAMPLE, true); 257 return mSharedPreferences.getBoolean(PREF_METRICS_IN_SAMPLE, true);
268 } 258 }
269 259
270 /** 260 /**
271 * Checks whether uploading of crash dumps is permitted for the available ne twork(s). 261 * Checks whether uploading of crash dumps is permitted for the available ne twork(s).
272 * 262 *
273 * @return whether uploading crash dumps is permitted. 263 * @return whether uploading crash dumps is permitted.
274 */ 264 */
275 @Override 265 @Override
276 public boolean isNetworkAvailableForCrashUploads() { 266 public boolean isNetworkAvailableForCrashUploads() {
277 return isNetworkAvailable() && isWiFiOrEthernetNetwork(); 267 ConnectivityManager connectivityManager =
268 (ConnectivityManager) mContext.getSystemService(Context.CONNECTI VITY_SERVICE);
269 return NetworkPermissionUtil.isNetworkUnmetered(connectivityManager);
278 } 270 }
279 271
280 /** 272 /**
281 * Checks whether uploading of usage metrics and crash dumps is currently pe rmitted, based on 273 * Checks whether uploading of usage metrics and crash dumps is currently pe rmitted, based on
282 * user consent only. This doesn't take network condition or experimental st ate (i.e. disabling 274 * user consent only. This doesn't take network condition or experimental st ate (i.e. disabling
283 * upload) into consideration. A crash dump may be retried if this check pas ses. 275 * upload) into consideration. A crash dump may be retried if this check pas ses.
284 * 276 *
285 * @return whether the user has consented to reporting usage metrics and cra sh dumps. 277 * @return whether the user has consented to reporting usage metrics and cra sh dumps.
286 */ 278 */
287 @Override 279 @Override
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 /** 326 /**
335 * Check whether Physical Web is configured to notify on nearby beacons. 327 * Check whether Physical Web is configured to notify on nearby beacons.
336 * 328 *
337 * @return boolean {@code true} if the feature is enabled. 329 * @return boolean {@code true} if the feature is enabled.
338 */ 330 */
339 public boolean isPhysicalWebEnabled() { 331 public boolean isPhysicalWebEnabled() {
340 int state = mSharedPreferences.getInt(PREF_PHYSICAL_WEB, PHYSICAL_WEB_ON BOARDING); 332 int state = mSharedPreferences.getInt(PREF_PHYSICAL_WEB, PHYSICAL_WEB_ON BOARDING);
341 return (state == PHYSICAL_WEB_ON); 333 return (state == PHYSICAL_WEB_ON);
342 } 334 }
343 } 335 }
OLDNEW
« no previous file with comments | « chrome/android/java/src/org/chromium/chrome/browser/crash/MinidumpUploadService.java ('k') | chrome/android/java_sources.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698