OLD | NEW |
---|---|
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 Loading... | |
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 } |
OLD | NEW |