| Index: chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java b/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java
|
| index e3de19bafbc1a31750bf2c62603582c5c2c929b4..b5e8134cbf9174e0a290fd51a3a63b3acc12c6fe 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/metrics/UmaSessionStats.java
|
| @@ -8,15 +8,18 @@ import android.app.Activity;
|
| import android.content.ComponentCallbacks;
|
| import android.content.Context;
|
| import android.content.res.Configuration;
|
| +import android.text.TextUtils;
|
|
|
| import org.chromium.base.ActivityState;
|
| import org.chromium.base.ApplicationStatus;
|
| import org.chromium.chrome.browser.Tab;
|
| +import org.chromium.chrome.browser.preferences.PrefServiceBridge;
|
| import org.chromium.chrome.browser.preferences.privacy.CrashReportingPermissionManager;
|
| import org.chromium.chrome.browser.preferences.privacy.PrivacyPreferencesManager;
|
| import org.chromium.chrome.browser.tabmodel.TabModel;
|
| import org.chromium.chrome.browser.tabmodel.TabModelSelector;
|
| import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver;
|
| +import org.chromium.components.variations.VariationsAssociatedData;
|
| import org.chromium.content_public.browser.WebContents;
|
| import org.chromium.net.NetworkChangeNotifier;
|
|
|
| @@ -102,6 +105,7 @@ public class UmaSessionStats implements NetworkChangeNotifier.ConnectionTypeObse
|
|
|
| nativeUmaResumeSession(sNativeUmaSessionStats);
|
| NetworkChangeNotifier.addConnectionTypeObserver(this);
|
| + updatePreferences();
|
| updateMetricsServiceState();
|
| }
|
|
|
| @@ -159,6 +163,32 @@ public class UmaSessionStats implements NetworkChangeNotifier.ConnectionTypeObse
|
| nativeUpdateMetricsServiceState(mayRecordStats, mayUploadStats);
|
| }
|
|
|
| + /**
|
| + * Updating Android preferences according to equivalent native preferences so that the values
|
| + * can be retrieved while native preferences are not accessible.
|
| + */
|
| + private void updatePreferences() {
|
| + // Update cellular experiment preference.
|
| + PrivacyPreferencesManager prefManager = PrivacyPreferencesManager.getInstance(mContext);
|
| + boolean cellularExperiment = TextUtils.equals("true",
|
| + VariationsAssociatedData.getVariationParamValue(
|
| + "UMA_EnableCellularLogUpload", "Enabled"));
|
| + prefManager.setCellularExperiment(cellularExperiment);
|
| +
|
| + // Update metrics reporting preference.
|
| + if (cellularExperiment) {
|
| + PrefServiceBridge prefBridge = PrefServiceBridge.getInstance();
|
| + // If the native preference metrics reporting has not been set, then initialize it
|
| + // based on the older android preference.
|
| + if (!prefBridge.hasSetMetricsReporting()) {
|
| + prefBridge.setMetricsReportingEnabled(prefManager.isUploadCrashDumpEnabled());
|
| + }
|
| +
|
| + // Set new Android preference for usage and crash reporting.
|
| + prefManager.setUsageAndCrashReporting(prefBridge.isMetricsReportingEnabled());
|
| + }
|
| + }
|
| +
|
| @Override
|
| public void onConnectionTypeChanged(int connectionType) {
|
| updateMetricsServiceState();
|
|
|