| Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/ContentSuggestionsPreferences.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ContentSuggestionsPreferences.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ContentSuggestionsPreferences.java
|
| index 0e88b81d6fc9b69bec646d3d50171d8f08746671..0ceabc9091dd8506329a34694aa7277a70883375 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/preferences/ContentSuggestionsPreferences.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/ContentSuggestionsPreferences.java
|
| @@ -4,20 +4,27 @@
|
|
|
| package org.chromium.chrome.browser.preferences;
|
|
|
| +import android.content.Context;
|
| +import android.content.Intent;
|
| import android.os.Bundle;
|
| import android.preference.Preference;
|
| import android.preference.Preference.OnPreferenceChangeListener;
|
| import android.preference.PreferenceFragment;
|
| +import android.support.annotation.IntDef;
|
| import android.view.Menu;
|
| import android.view.MenuInflater;
|
| import android.view.MenuItem;
|
|
|
| +import org.chromium.base.metrics.RecordUserAction;
|
| import org.chromium.chrome.R;
|
| import org.chromium.chrome.browser.ChromeFeatureList;
|
| import org.chromium.chrome.browser.help.HelpAndFeedback;
|
| import org.chromium.chrome.browser.ntp.snippets.SnippetsBridge;
|
| import org.chromium.chrome.browser.profiles.Profile;
|
|
|
| +import java.lang.annotation.Retention;
|
| +import java.lang.annotation.RetentionPolicy;
|
| +
|
| /**
|
| * Settings fragment that allows the user to configure content suggestions.
|
| */
|
| @@ -27,6 +34,14 @@
|
| private static final String PREF_CAVEATS = "suggestions_caveats";
|
| private static final String PREF_LEARN_MORE = "suggestions_learn_more";
|
|
|
| + private static final String LAUNCH_SOURCE_EXTRA = "source";
|
| +
|
| + @IntDef({LAUNCH_SOURCE_SETTINGS, LAUNCH_SOURCE_NOTIFICATION})
|
| + @Retention(RetentionPolicy.SOURCE)
|
| + public @interface LaunchSource {}
|
| + public static final int LAUNCH_SOURCE_SETTINGS = 0;
|
| + public static final int LAUNCH_SOURCE_NOTIFICATION = 1;
|
| +
|
| private boolean mIsEnabled;
|
|
|
| // Preferences, modified as the state of the screen changes.
|
| @@ -35,6 +50,13 @@
|
| private Preference mCaveatsDescription;
|
| private Preference mLearnMoreButton;
|
|
|
| + public static Intent getIntent(Context context, @LaunchSource int source) {
|
| + Intent intent = PreferencesLauncher.createIntentForSettingsPage(
|
| + context, ContentSuggestionsPreferences.class.getName());
|
| + intent.putExtra(LAUNCH_SOURCE_EXTRA, source);
|
| + return intent;
|
| + }
|
| +
|
| @Override
|
| public void onCreate(Bundle savedInstanceState) {
|
| super.onCreate(savedInstanceState);
|
| @@ -46,6 +68,13 @@ public void onCreate(Bundle savedInstanceState) {
|
| boolean isEnabled = SnippetsBridge.isRemoteSuggestionsServiceEnabled();
|
| mIsEnabled = !isEnabled; // Opposite so that we trigger side effects below.
|
| updatePreferences(isEnabled);
|
| +
|
| + @LaunchSource
|
| + int launchSource =
|
| + getActivity().getIntent().getIntExtra(LAUNCH_SOURCE_EXTRA, LAUNCH_SOURCE_SETTINGS);
|
| + if (launchSource == LAUNCH_SOURCE_NOTIFICATION) {
|
| + RecordUserAction.record("ContentSuggestions.NotificationsAction.Settings");
|
| + }
|
| }
|
|
|
| @Override
|
| @@ -102,7 +131,6 @@ private void setNotificationsPrefState(boolean visible) {
|
| if (visible) {
|
| if (findPreference(PREF_NOTIFICATIONS_SWITCH) != null) return;
|
| getPreferenceScreen().addPreference(mNotificationsSwitch);
|
| -
|
| } else {
|
| getPreferenceScreen().removePreference(mNotificationsSwitch);
|
| }
|
| @@ -128,10 +156,18 @@ private void finishSwitchInitialisation() {
|
| mFeatureSwitch.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
| @Override
|
| public boolean onPreferenceChange(Preference preference, Object newValue) {
|
| - SnippetsBridge.setRemoteSuggestionsServiceEnabled((boolean) newValue);
|
| + boolean isEnabled = (boolean) newValue;
|
| + SnippetsBridge.setRemoteSuggestionsServiceEnabled(isEnabled);
|
| // TODO(dgn): Is there a way to have a visual feedback of when the remote
|
| // suggestions service has completed being turned on or off?
|
| - ContentSuggestionsPreferences.this.updatePreferences((boolean) newValue);
|
| + ContentSuggestionsPreferences.this.updatePreferences(isEnabled);
|
| +
|
| + if (isEnabled) {
|
| + RecordUserAction.record("ContentSuggestions.RemoteSuggestionsPreferenceOn");
|
| + } else {
|
| + RecordUserAction.record("ContentSuggestions.RemoteSuggestionsPreferenceOff");
|
| + }
|
| +
|
| return true;
|
| }
|
| });
|
| @@ -150,7 +186,15 @@ public boolean isPreferenceControlledByCustodian(Preference preference) {
|
| mNotificationsSwitch.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
|
| @Override
|
| public boolean onPreferenceChange(Preference preference, Object newValue) {
|
| - SnippetsBridge.setContentSuggestionsNotificationsEnabled((boolean) newValue);
|
| + boolean isEnabled = (boolean) newValue;
|
| + SnippetsBridge.setContentSuggestionsNotificationsEnabled(isEnabled);
|
| +
|
| + if (isEnabled) {
|
| + RecordUserAction.record("ContentSuggestions.NotificationsPreferenceOn");
|
| + } else {
|
| + RecordUserAction.record("ContentSuggestions.NotificationsPreferenceOff");
|
| + }
|
| +
|
| return true;
|
| }
|
| });
|
|
|