Chromium Code Reviews| 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) { |
|
Michael van Ouwerkerk
2017/04/05 10:27:41
This creates a new intent using createIntentForSet
Michael van Ouwerkerk
2017/04/05 10:27:42
Please add JavaDoc for this public method, probabl
dgn
2017/04/05 13:54:07
Done.
dgn
2017/04/05 13:54:07
Done.
|
| + 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"); |
|
Michael van Ouwerkerk
2017/04/05 10:27:41
Should we also record an action for LAUNCH_SOURCE_
dgn
2017/04/05 13:54:07
In that case I would prefer if it was in the conte
|
| + } |
| } |
| @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); |
|
Michael van Ouwerkerk
2017/04/05 10:27:42
Do you need to specify "ContentSuggestionsPreferen
dgn
2017/04/05 13:54:07
Done.
|
| + |
| + 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; |
| } |
| }); |