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

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: Rewrite metrics and add histograms changes 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;
18 import org.chromium.chrome.browser.ntp.snippets.SnippetsBridge; 22 import org.chromium.chrome.browser.ntp.snippets.SnippetsBridge;
19 import org.chromium.chrome.browser.profiles.Profile; 23 import org.chromium.chrome.browser.profiles.Profile;
20 24
25 import java.lang.annotation.Retention;
26 import java.lang.annotation.RetentionPolicy;
27
21 /** 28 /**
22 * Settings fragment that allows the user to configure content suggestions. 29 * Settings fragment that allows the user to configure content suggestions.
23 */ 30 */
24 public class ContentSuggestionsPreferences extends PreferenceFragment { 31 public class ContentSuggestionsPreferences extends PreferenceFragment {
25 private static final String PREF_MAIN_SWITCH = "suggestions_switch"; 32 private static final String PREF_MAIN_SWITCH = "suggestions_switch";
26 private static final String PREF_NOTIFICATIONS_SWITCH = "suggestions_notific ations_switch"; 33 private static final String PREF_NOTIFICATIONS_SWITCH = "suggestions_notific ations_switch";
27 private static final String PREF_CAVEATS = "suggestions_caveats"; 34 private static final String PREF_CAVEATS = "suggestions_caveats";
28 private static final String PREF_LEARN_MORE = "suggestions_learn_more"; 35 private static final String PREF_LEARN_MORE = "suggestions_learn_more";
29 36
37 private static final String LAUNCH_SOURCE_EXTRA = "source";
38
39 @IntDef({LAUNCH_SOURCE_SETTINGS, LAUNCH_SOURCE_NOTIFICATION})
40 @Retention(RetentionPolicy.SOURCE)
41 public @interface LaunchSource {}
42 public static final int LAUNCH_SOURCE_SETTINGS = 0;
43 public static final int LAUNCH_SOURCE_NOTIFICATION = 1;
44
30 private boolean mIsEnabled; 45 private boolean mIsEnabled;
31 46
32 // Preferences, modified as the state of the screen changes. 47 // Preferences, modified as the state of the screen changes.
33 private ChromeSwitchPreference mFeatureSwitch; 48 private ChromeSwitchPreference mFeatureSwitch;
34 private ChromeSwitchPreference mNotificationsSwitch; 49 private ChromeSwitchPreference mNotificationsSwitch;
35 private Preference mCaveatsDescription; 50 private Preference mCaveatsDescription;
36 private Preference mLearnMoreButton; 51 private Preference mLearnMoreButton;
37 52
53 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.
54 Intent intent = PreferencesLauncher.createIntentForSettingsPage(
55 context, ContentSuggestionsPreferences.class.getName());
56 intent.putExtra(LAUNCH_SOURCE_EXTRA, source);
57 return intent;
58 }
59
38 @Override 60 @Override
39 public void onCreate(Bundle savedInstanceState) { 61 public void onCreate(Bundle savedInstanceState) {
40 super.onCreate(savedInstanceState); 62 super.onCreate(savedInstanceState);
41 63
42 addPreferencesFromResource(R.xml.suggestions_preferences); 64 addPreferencesFromResource(R.xml.suggestions_preferences);
43 setHasOptionsMenu(true); 65 setHasOptionsMenu(true);
44 finishSwitchInitialisation(); 66 finishSwitchInitialisation();
45 67
46 boolean isEnabled = SnippetsBridge.isRemoteSuggestionsServiceEnabled(); 68 boolean isEnabled = SnippetsBridge.isRemoteSuggestionsServiceEnabled();
47 mIsEnabled = !isEnabled; // Opposite so that we trigger side effects bel ow. 69 mIsEnabled = !isEnabled; // Opposite so that we trigger side effects bel ow.
48 updatePreferences(isEnabled); 70 updatePreferences(isEnabled);
71
72 @LaunchSource
73 int launchSource =
74 getActivity().getIntent().getIntExtra(LAUNCH_SOURCE_EXTRA, LAUNC H_SOURCE_SETTINGS);
75 if (launchSource == LAUNCH_SOURCE_NOTIFICATION) {
76 RecordUserAction.record("ContentSuggestions.NotificationsAction.Sett ings");
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
77 }
49 } 78 }
50 79
51 @Override 80 @Override
52 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 81 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
53 menu.clear(); 82 menu.clear();
54 MenuItem help = 83 MenuItem help =
55 menu.add(Menu.NONE, R.id.menu_id_targeted_help, Menu.NONE, R.str ing.menu_help); 84 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); 85 help.setIcon(R.drawable.ic_help_and_feedback);
57 } 86 }
58 87
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 if (!ChromeFeatureList.isEnabled(ChromeFeatureList.CONTENT_SUGGESTIONS_N OTIFICATIONS)) { 124 if (!ChromeFeatureList.isEnabled(ChromeFeatureList.CONTENT_SUGGESTIONS_N OTIFICATIONS)) {
96 return false; 125 return false;
97 } 126 }
98 return mIsEnabled; 127 return mIsEnabled;
99 } 128 }
100 129
101 private void setNotificationsPrefState(boolean visible) { 130 private void setNotificationsPrefState(boolean visible) {
102 if (visible) { 131 if (visible) {
103 if (findPreference(PREF_NOTIFICATIONS_SWITCH) != null) return; 132 if (findPreference(PREF_NOTIFICATIONS_SWITCH) != null) return;
104 getPreferenceScreen().addPreference(mNotificationsSwitch); 133 getPreferenceScreen().addPreference(mNotificationsSwitch);
105
106 } else { 134 } else {
107 getPreferenceScreen().removePreference(mNotificationsSwitch); 135 getPreferenceScreen().removePreference(mNotificationsSwitch);
108 } 136 }
109 } 137 }
110 138
111 private void setCaveatsPrefState(boolean visible) { 139 private void setCaveatsPrefState(boolean visible) {
112 if (visible) { 140 if (visible) {
113 if (findPreference(PREF_CAVEATS) != null) return; 141 if (findPreference(PREF_CAVEATS) != null) return;
114 getPreferenceScreen().addPreference(mCaveatsDescription); 142 getPreferenceScreen().addPreference(mCaveatsDescription);
115 getPreferenceScreen().addPreference(mLearnMoreButton); 143 getPreferenceScreen().addPreference(mLearnMoreButton);
116 } else { 144 } else {
117 getPreferenceScreen().removePreference(mCaveatsDescription); 145 getPreferenceScreen().removePreference(mCaveatsDescription);
118 getPreferenceScreen().removePreference(mLearnMoreButton); 146 getPreferenceScreen().removePreference(mLearnMoreButton);
119 } 147 }
120 } 148 }
121 149
122 private void finishSwitchInitialisation() { 150 private void finishSwitchInitialisation() {
123 mFeatureSwitch = (ChromeSwitchPreference) findPreference(PREF_MAIN_SWITC H); 151 mFeatureSwitch = (ChromeSwitchPreference) findPreference(PREF_MAIN_SWITC H);
124 mNotificationsSwitch = (ChromeSwitchPreference) findPreference(PREF_NOTI FICATIONS_SWITCH); 152 mNotificationsSwitch = (ChromeSwitchPreference) findPreference(PREF_NOTI FICATIONS_SWITCH);
125 mCaveatsDescription = findPreference(PREF_CAVEATS); 153 mCaveatsDescription = findPreference(PREF_CAVEATS);
126 mLearnMoreButton = findPreference(PREF_LEARN_MORE); 154 mLearnMoreButton = findPreference(PREF_LEARN_MORE);
127 155
128 mFeatureSwitch.setOnPreferenceChangeListener(new OnPreferenceChangeListe ner() { 156 mFeatureSwitch.setOnPreferenceChangeListener(new OnPreferenceChangeListe ner() {
129 @Override 157 @Override
130 public boolean onPreferenceChange(Preference preference, Object newV alue) { 158 public boolean onPreferenceChange(Preference preference, Object newV alue) {
131 SnippetsBridge.setRemoteSuggestionsServiceEnabled((boolean) newV alue); 159 boolean isEnabled = (boolean) newValue;
160 SnippetsBridge.setRemoteSuggestionsServiceEnabled(isEnabled);
132 // TODO(dgn): Is there a way to have a visual feedback of when t he remote 161 // 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? 162 // suggestions service has completed being turned on or off?
134 ContentSuggestionsPreferences.this.updatePreferences((boolean) n ewValue); 163 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.
164
165 if (isEnabled) {
166 RecordUserAction.record("ContentSuggestions.RemoteSuggestion sPreferenceOn");
167 } else {
168 RecordUserAction.record("ContentSuggestions.RemoteSuggestion sPreferenceOff");
169 }
170
135 return true; 171 return true;
136 } 172 }
137 }); 173 });
138 mFeatureSwitch.setManagedPreferenceDelegate(new ManagedPreferenceDelegat e() { 174 mFeatureSwitch.setManagedPreferenceDelegate(new ManagedPreferenceDelegat e() {
139 @Override 175 @Override
140 public boolean isPreferenceControlledByPolicy(Preference preference) { 176 public boolean isPreferenceControlledByPolicy(Preference preference) {
141 return SnippetsBridge.isRemoteSuggestionsServiceManaged(); 177 return SnippetsBridge.isRemoteSuggestionsServiceManaged();
142 } 178 }
143 179
144 @Override 180 @Override
145 public boolean isPreferenceControlledByCustodian(Preference preferen ce) { 181 public boolean isPreferenceControlledByCustodian(Preference preferen ce) {
146 return SnippetsBridge.isRemoteSuggestionsServiceManagedByCustodi an(); 182 return SnippetsBridge.isRemoteSuggestionsServiceManagedByCustodi an();
147 } 183 }
148 }); 184 });
149 185
150 mNotificationsSwitch.setOnPreferenceChangeListener(new OnPreferenceChang eListener() { 186 mNotificationsSwitch.setOnPreferenceChangeListener(new OnPreferenceChang eListener() {
151 @Override 187 @Override
152 public boolean onPreferenceChange(Preference preference, Object newV alue) { 188 public boolean onPreferenceChange(Preference preference, Object newV alue) {
153 SnippetsBridge.setContentSuggestionsNotificationsEnabled((boolea n) newValue); 189 boolean isEnabled = (boolean) newValue;
190 SnippetsBridge.setContentSuggestionsNotificationsEnabled(isEnabl ed);
191
192 if (isEnabled) {
193 RecordUserAction.record("ContentSuggestions.NotificationsPre ferenceOn");
194 } else {
195 RecordUserAction.record("ContentSuggestions.NotificationsPre ferenceOff");
196 }
197
154 return true; 198 return true;
155 } 199 }
156 }); 200 });
157 } 201 }
158 } 202 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698