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

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: This is the last self-review patch set, I swear! :-P 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.CrashReportingNetworkPermi ssionManager;
19 import org.chromium.components.minidump_uploader.util.CrashReportingPermissionMa nager; 20 import org.chromium.components.minidump_uploader.util.CrashReportingPermissionMa nager;
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";
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 // Delete bool PREF_NETWORK_PREDICTIONS so that string values can be sto red. Note that this 185 // Delete bool PREF_NETWORK_PREDICTIONS so that string values can be sto red. Note that this
185 // SharedPreference carries no information, because it used to be overwr itten by 186 // SharedPreference carries no information, because it used to be overwr itten by
186 // kNetworkPredictionEnabled on startup, and now it is overwritten by 187 // kNetworkPredictionEnabled on startup, and now it is overwritten by
187 // kNetworkPredictionOptions on startup. 188 // kNetworkPredictionOptions on startup.
188 if (mSharedPreferences.contains(PREF_NETWORK_PREDICTIONS)) { 189 if (mSharedPreferences.contains(PREF_NETWORK_PREDICTIONS)) {
189 sharedPreferencesEditor.remove(PREF_NETWORK_PREDICTIONS); 190 sharedPreferencesEditor.remove(PREF_NETWORK_PREDICTIONS);
190 } 191 }
191 sharedPreferencesEditor.apply(); 192 sharedPreferencesEditor.apply();
192 } 193 }
193 194
194 private NetworkInfo getActiveNetworkInfo() { 195 protected boolean isNetworkAvailable() {
195 ConnectivityManager connectivityManager = 196 ConnectivityManager connectivityManager =
196 (ConnectivityManager) mContext.getSystemService(Context.CONNECTI VITY_SERVICE); 197 (ConnectivityManager) mContext.getSystemService(Context.CONNECTI VITY_SERVICE);
197 return connectivityManager.getActiveNetworkInfo(); 198 NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
198 }
199
200 protected boolean isNetworkAvailable() {
201 NetworkInfo networkInfo = getActiveNetworkInfo();
202 return (networkInfo != null && networkInfo.isConnected()); 199 return (networkInfo != null && networkInfo.isConnected());
203 } 200 }
204 201
205 protected boolean isWiFiOrEthernetNetwork() {
206 NetworkInfo networkInfo = getActiveNetworkInfo();
207 return networkInfo != null
208 && (networkInfo.getType() == ConnectivityManager.TYPE_WIFI
209 || networkInfo.getType() == ConnectivityManager.TYPE_ETH ERNET);
210 }
211
212 protected boolean isMobileNetworkCapable() { 202 protected boolean isMobileNetworkCapable() {
213 ConnectivityManager connectivityManager = 203 ConnectivityManager connectivityManager =
214 (ConnectivityManager) mContext.getSystemService(Context.CONNECTI VITY_SERVICE); 204 (ConnectivityManager) mContext.getSystemService(Context.CONNECTI VITY_SERVICE);
215 // Android telephony team said it is OK to continue using getNetworkInfo () for our purposes. 205 // Android telephony team said it is OK to continue using getNetworkInfo () for our purposes.
216 // We cannot use ConnectivityManager#getAllNetworks() because that one o nly reports enabled 206 // We cannot use ConnectivityManager#getAllNetworks() because that one o nly reports enabled
217 // networks. See crbug.com/532455. 207 // networks. See crbug.com/532455.
218 @SuppressWarnings("deprecation") 208 @SuppressWarnings("deprecation")
219 NetworkInfo networkInfo = connectivityManager 209 NetworkInfo networkInfo = connectivityManager
220 .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 210 .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
221 return networkInfo != null; 211 return networkInfo != null;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 return mSharedPreferences.getBoolean(PREF_METRICS_IN_SAMPLE, true); 264 return mSharedPreferences.getBoolean(PREF_METRICS_IN_SAMPLE, true);
275 } 265 }
276 266
277 /** 267 /**
278 * Checks whether uploading of crash dumps is permitted for the available ne twork(s). 268 * Checks whether uploading of crash dumps is permitted for the available ne twork(s).
279 * 269 *
280 * @return whether uploading crash dumps is permitted. 270 * @return whether uploading crash dumps is permitted.
281 */ 271 */
282 @Override 272 @Override
283 public boolean isNetworkAvailableForCrashUploads() { 273 public boolean isNetworkAvailableForCrashUploads() {
284 return isNetworkAvailable() && isWiFiOrEthernetNetwork(); 274 ConnectivityManager connectivityManager =
275 (ConnectivityManager) mContext.getSystemService(Context.CONNECTI VITY_SERVICE);
276 return CrashReportingNetworkPermissionManager.isNetworkUnmetered(connect ivityManager);
285 } 277 }
286 278
287 /** 279 /**
288 * Checks whether uploading of crash dumps is permitted, based on the corres ponding command line 280 * Checks whether uploading of crash dumps is permitted, based on the corres ponding command line
289 * flag only. 281 * flag only.
290 * TODO(jchinlee): this is not quite a boolean. Depending on other refactori ng, change to enum. 282 * TODO(jchinlee): this is not quite a boolean. Depending on other refactori ng, change to enum.
291 * 283 *
292 * @return whether uploading of crash dumps is enabled or disabled by a comm and line flag. 284 * @return whether uploading of crash dumps is enabled or disabled by a comm and line flag.
293 */ 285 */
294 @Override 286 @Override
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 /** 368 /**
377 * Check whether Physical Web is configured to notify on nearby beacons. 369 * Check whether Physical Web is configured to notify on nearby beacons.
378 * 370 *
379 * @return boolean {@code true} if the feature is enabled. 371 * @return boolean {@code true} if the feature is enabled.
380 */ 372 */
381 public boolean isPhysicalWebEnabled() { 373 public boolean isPhysicalWebEnabled() {
382 int state = mSharedPreferences.getInt(PREF_PHYSICAL_WEB, PHYSICAL_WEB_ON BOARDING); 374 int state = mSharedPreferences.getInt(PREF_PHYSICAL_WEB, PHYSICAL_WEB_ON BOARDING);
383 return (state == PHYSICAL_WEB_ON); 375 return (state == PHYSICAL_WEB_ON);
384 } 376 }
385 } 377 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698