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

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

Issue 2790183002: Add UMA for the content suggestions settings (Closed)
Patch Set: rename methods to remove service mention Created 3 years, 8 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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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; 5 package org.chromium.chrome.browser.preferences;
6 6
7 import android.content.Context;
8 import android.content.Intent;
7 import android.os.Bundle; 9 import android.os.Bundle;
8 import android.preference.Preference; 10 import android.preference.Preference;
9 import android.preference.Preference.OnPreferenceChangeListener; 11 import android.preference.Preference.OnPreferenceChangeListener;
10 import android.preference.PreferenceFragment; 12 import android.preference.PreferenceFragment;
13 import android.support.annotation.IntDef;
11 import android.view.Menu; 14 import android.view.Menu;
12 import android.view.MenuInflater; 15 import android.view.MenuInflater;
13 import android.view.MenuItem; 16 import android.view.MenuItem;
14 17
18 import org.chromium.base.metrics.RecordUserAction;
15 import org.chromium.chrome.R; 19 import org.chromium.chrome.R;
16 import org.chromium.chrome.browser.ChromeFeatureList; 20 import org.chromium.chrome.browser.ChromeFeatureList;
17 import org.chromium.chrome.browser.help.HelpAndFeedback; 21 import org.chromium.chrome.browser.help.HelpAndFeedback;
22 import org.chromium.chrome.browser.ntp.ContentSuggestionsNotificationHelper;
23 import org.chromium.chrome.browser.ntp.snippets.ContentSuggestionsNotificationAc tion;
24 import org.chromium.chrome.browser.ntp.snippets.ContentSuggestionsNotificationOp tOut;
18 import org.chromium.chrome.browser.ntp.snippets.SnippetsBridge; 25 import org.chromium.chrome.browser.ntp.snippets.SnippetsBridge;
19 import org.chromium.chrome.browser.profiles.Profile; 26 import org.chromium.chrome.browser.profiles.Profile;
20 27
28 import java.lang.annotation.Retention;
29 import java.lang.annotation.RetentionPolicy;
30
21 /** 31 /**
22 * Settings fragment that allows the user to configure content suggestions. 32 * Settings fragment that allows the user to configure content suggestions.
23 */ 33 */
24 public class ContentSuggestionsPreferences extends PreferenceFragment { 34 public class ContentSuggestionsPreferences extends PreferenceFragment {
25 private static final String PREF_MAIN_SWITCH = "suggestions_switch"; 35 private static final String PREF_MAIN_SWITCH = "suggestions_switch";
26 private static final String PREF_NOTIFICATIONS_SWITCH = "suggestions_notific ations_switch"; 36 private static final String PREF_NOTIFICATIONS_SWITCH = "suggestions_notific ations_switch";
27 private static final String PREF_CAVEATS = "suggestions_caveats"; 37 private static final String PREF_CAVEATS = "suggestions_caveats";
28 private static final String PREF_LEARN_MORE = "suggestions_learn_more"; 38 private static final String PREF_LEARN_MORE = "suggestions_learn_more";
29 39
40 private static final String LAUNCH_SOURCE_EXTRA = "source";
41
42 @IntDef({LAUNCH_SOURCE_SETTINGS, LAUNCH_SOURCE_NOTIFICATION})
43 @Retention(RetentionPolicy.SOURCE)
44 public @interface LaunchSource {}
45 public static final int LAUNCH_SOURCE_SETTINGS = 0;
46 public static final int LAUNCH_SOURCE_NOTIFICATION = 1;
47
30 private boolean mIsEnabled; 48 private boolean mIsEnabled;
31 49
32 // Preferences, modified as the state of the screen changes. 50 // Preferences, modified as the state of the screen changes.
33 private ChromeSwitchPreference mFeatureSwitch; 51 private ChromeSwitchPreference mFeatureSwitch;
34 private ChromeSwitchPreference mNotificationsSwitch; 52 private ChromeSwitchPreference mNotificationsSwitch;
35 private Preference mCaveatsDescription; 53 private Preference mCaveatsDescription;
36 private Preference mLearnMoreButton; 54 private Preference mLearnMoreButton;
37 55
56 /**
57 * Creates an intent for launching content suggestions settings page.
Bernhard Bauer 2017/04/10 23:16:03 Nit: "the content suggestions settings page".
dgn 2017/04/10 23:31:29 Done.
58 * @param context The current Activity, or an application context if no Acti vity is available.
59 * @param source Where the intent is going to be launched from. See {@link L aunchSource}
60 */
61 public static Intent createLaunchIntent(Context context, @LaunchSource int s ource) {
62 Intent intent = PreferencesLauncher.createIntentForSettingsPage(
63 context, ContentSuggestionsPreferences.class.getName());
64 intent.putExtra(LAUNCH_SOURCE_EXTRA, source);
65 return intent;
66 }
67
38 @Override 68 @Override
39 public void onCreate(Bundle savedInstanceState) { 69 public void onCreate(Bundle savedInstanceState) {
40 super.onCreate(savedInstanceState); 70 super.onCreate(savedInstanceState);
41 71
42 addPreferencesFromResource(R.xml.suggestions_preferences); 72 addPreferencesFromResource(R.xml.suggestions_preferences);
43 setHasOptionsMenu(true); 73 setHasOptionsMenu(true);
44 finishSwitchInitialisation(); 74 finishSwitchInitialisation();
45 75
46 boolean isEnabled = SnippetsBridge.isRemoteSuggestionsServiceEnabled(); 76 boolean isEnabled = SnippetsBridge.areRemoteSuggestionsEnabled();
47 mIsEnabled = !isEnabled; // Opposite so that we trigger side effects bel ow. 77 mIsEnabled = !isEnabled; // Opposite so that we trigger side effects bel ow.
48 updatePreferences(isEnabled); 78 updatePreferences(isEnabled);
79
80 @LaunchSource
81 int launchSource =
82 getActivity().getIntent().getIntExtra(LAUNCH_SOURCE_EXTRA, LAUNC H_SOURCE_SETTINGS);
83 if (launchSource == LAUNCH_SOURCE_NOTIFICATION) {
84 ContentSuggestionsNotificationHelper.recordNotificationAction(
85 ContentSuggestionsNotificationAction.OPEN_SETTINGS);
86 }
49 } 87 }
50 88
51 @Override 89 @Override
52 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 90 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
53 menu.clear(); 91 menu.clear();
54 MenuItem help = 92 MenuItem help =
55 menu.add(Menu.NONE, R.id.menu_id_targeted_help, Menu.NONE, R.str ing.menu_help); 93 menu.add(Menu.NONE, R.id.menu_id_targeted_help, Menu.NONE, R.str ing.menu_help);
56 help.setIcon(R.drawable.ic_help_and_feedback); 94 help.setIcon(R.drawable.ic_help_and_feedback);
57 } 95 }
58 96
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 if (!ChromeFeatureList.isEnabled(ChromeFeatureList.CONTENT_SUGGESTIONS_N OTIFICATIONS)) { 133 if (!ChromeFeatureList.isEnabled(ChromeFeatureList.CONTENT_SUGGESTIONS_N OTIFICATIONS)) {
96 return false; 134 return false;
97 } 135 }
98 return mIsEnabled; 136 return mIsEnabled;
99 } 137 }
100 138
101 private void setNotificationsPrefState(boolean visible) { 139 private void setNotificationsPrefState(boolean visible) {
102 if (visible) { 140 if (visible) {
103 if (findPreference(PREF_NOTIFICATIONS_SWITCH) != null) return; 141 if (findPreference(PREF_NOTIFICATIONS_SWITCH) != null) return;
104 getPreferenceScreen().addPreference(mNotificationsSwitch); 142 getPreferenceScreen().addPreference(mNotificationsSwitch);
105
106 } else { 143 } else {
107 getPreferenceScreen().removePreference(mNotificationsSwitch); 144 getPreferenceScreen().removePreference(mNotificationsSwitch);
108 } 145 }
109 } 146 }
110 147
111 private void setCaveatsPrefState(boolean visible) { 148 private void setCaveatsPrefState(boolean visible) {
112 if (visible) { 149 if (visible) {
113 if (findPreference(PREF_CAVEATS) != null) return; 150 if (findPreference(PREF_CAVEATS) != null) return;
114 getPreferenceScreen().addPreference(mCaveatsDescription); 151 getPreferenceScreen().addPreference(mCaveatsDescription);
115 getPreferenceScreen().addPreference(mLearnMoreButton); 152 getPreferenceScreen().addPreference(mLearnMoreButton);
116 } else { 153 } else {
117 getPreferenceScreen().removePreference(mCaveatsDescription); 154 getPreferenceScreen().removePreference(mCaveatsDescription);
118 getPreferenceScreen().removePreference(mLearnMoreButton); 155 getPreferenceScreen().removePreference(mLearnMoreButton);
119 } 156 }
120 } 157 }
121 158
122 private void finishSwitchInitialisation() { 159 private void finishSwitchInitialisation() {
123 mFeatureSwitch = (ChromeSwitchPreference) findPreference(PREF_MAIN_SWITC H); 160 mFeatureSwitch = (ChromeSwitchPreference) findPreference(PREF_MAIN_SWITC H);
124 mNotificationsSwitch = (ChromeSwitchPreference) findPreference(PREF_NOTI FICATIONS_SWITCH); 161 mNotificationsSwitch = (ChromeSwitchPreference) findPreference(PREF_NOTI FICATIONS_SWITCH);
125 mCaveatsDescription = findPreference(PREF_CAVEATS); 162 mCaveatsDescription = findPreference(PREF_CAVEATS);
126 mLearnMoreButton = findPreference(PREF_LEARN_MORE); 163 mLearnMoreButton = findPreference(PREF_LEARN_MORE);
127 164
128 mFeatureSwitch.setOnPreferenceChangeListener(new OnPreferenceChangeListe ner() { 165 mFeatureSwitch.setOnPreferenceChangeListener(new OnPreferenceChangeListe ner() {
129 @Override 166 @Override
130 public boolean onPreferenceChange(Preference preference, Object newV alue) { 167 public boolean onPreferenceChange(Preference preference, Object newV alue) {
131 SnippetsBridge.setRemoteSuggestionsServiceEnabled((boolean) newV alue); 168 boolean isEnabled = (boolean) newValue;
169 SnippetsBridge.setRemoteSuggestionsEnabled(isEnabled);
132 // TODO(dgn): Is there a way to have a visual feedback of when t he remote 170 // TODO(dgn): Is there a way to have a visual feedback of when t he remote
133 // suggestions service has completed being turned on or off? 171 // suggestions service has completed being turned on or off?
134 ContentSuggestionsPreferences.this.updatePreferences((boolean) n ewValue); 172 updatePreferences(isEnabled);
173
174 if (isEnabled) {
175 RecordUserAction.record("ContentSuggestions.RemoteSuggestion sPreferenceOn");
176 } else {
177 RecordUserAction.record("ContentSuggestions.RemoteSuggestion sPreferenceOff");
178 }
179
135 return true; 180 return true;
136 } 181 }
137 }); 182 });
138 mFeatureSwitch.setManagedPreferenceDelegate(new ManagedPreferenceDelegat e() { 183 mFeatureSwitch.setManagedPreferenceDelegate(new ManagedPreferenceDelegat e() {
139 @Override 184 @Override
140 public boolean isPreferenceControlledByPolicy(Preference preference) { 185 public boolean isPreferenceControlledByPolicy(Preference preference) {
141 return SnippetsBridge.isRemoteSuggestionsServiceManaged(); 186 return SnippetsBridge.areRemoteSuggestionsManaged();
142 } 187 }
143 188
144 @Override 189 @Override
145 public boolean isPreferenceControlledByCustodian(Preference preferen ce) { 190 public boolean isPreferenceControlledByCustodian(Preference preferen ce) {
146 return SnippetsBridge.isRemoteSuggestionsServiceManagedByCustodi an(); 191 return SnippetsBridge.areRemoteSuggestionsManagedByCustodian();
147 } 192 }
148 }); 193 });
149 194
150 mNotificationsSwitch.setOnPreferenceChangeListener(new OnPreferenceChang eListener() { 195 mNotificationsSwitch.setOnPreferenceChangeListener(new OnPreferenceChang eListener() {
151 @Override 196 @Override
152 public boolean onPreferenceChange(Preference preference, Object newV alue) { 197 public boolean onPreferenceChange(Preference preference, Object newV alue) {
153 SnippetsBridge.setContentSuggestionsNotificationsEnabled((boolea n) newValue); 198 boolean isEnabled = (boolean) newValue;
199 SnippetsBridge.setContentSuggestionsNotificationsEnabled(isEnabl ed);
200
201 if (isEnabled) {
202 RecordUserAction.record("ContentSuggestions.NotificationsPre ferenceOn");
203 } else {
204 RecordUserAction.record("ContentSuggestions.NotificationsPre ferenceOff");
205 ContentSuggestionsNotificationHelper.recordNotificationOptOu t(
206 ContentSuggestionsNotificationOptOut.EXPLICIT);
207 }
208
154 return true; 209 return true;
155 } 210 }
156 }); 211 });
157 } 212 }
158 } 213 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698