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

Side by Side Diff: chrome/browser/chromeos/arc/arc_support_host.cc

Issue 2104893003: Adds a new checkbox for backup and restore in opt-in flow. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Adds a new checkbox for backup and restore in opt-in flow. Created 4 years, 5 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #include "chrome/browser/chromeos/arc/arc_support_host.h" 5 #include "chrome/browser/chromeos/arc/arc_support_host.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "ash/common/system/chromeos/devicetype_utils.h" 9 #include "ash/common/system/chromeos/devicetype_utils.h"
10 #include "base/i18n/timezone.h" 10 #include "base/i18n/timezone.h"
11 #include "base/json/json_reader.h" 11 #include "base/json/json_reader.h"
12 #include "base/json/json_writer.h" 12 #include "base/json/json_writer.h"
13 #include "base/threading/thread_task_runner_handle.h" 13 #include "base/threading/thread_task_runner_handle.h"
14 #include "base/values.h" 14 #include "base/values.h"
15 #include "chrome/browser/browser_process.h" 15 #include "chrome/browser/browser_process.h"
16 #include "chrome/browser/chromeos/profiles/profile_helper.h" 16 #include "chrome/browser/chromeos/profiles/profile_helper.h"
17 #include "chrome/browser/metrics/chrome_metrics_service_accessor.h" 17 #include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
18 #include "chrome/browser/metrics/metrics_reporting_state.h" 18 #include "chrome/browser/metrics/metrics_reporting_state.h"
19 #include "chrome/browser/profiles/profile.h" 19 #include "chrome/browser/profiles/profile.h"
20 #include "chrome/browser/ui/ash/multi_user/multi_user_util.h" 20 #include "chrome/browser/ui/ash/multi_user/multi_user_util.h"
21 #include "chrome/browser/ui/browser_commands.h" 21 #include "chrome/browser/ui/browser_commands.h"
22 #include "chrome/common/pref_names.h"
22 #include "chrome/grit/generated_resources.h" 23 #include "chrome/grit/generated_resources.h"
23 #include "components/metrics/metrics_pref_names.h" 24 #include "components/metrics/metrics_pref_names.h"
24 #include "components/prefs/pref_service.h" 25 #include "components/prefs/pref_service.h"
25 #include "components/user_manager/known_user.h" 26 #include "components/user_manager/known_user.h"
26 #include "ui/base/l10n/l10n_util.h" 27 #include "ui/base/l10n/l10n_util.h"
27 #include "ui/base/webui/web_ui_util.h" 28 #include "ui/base/webui/web_ui_util.h"
28 29
29 namespace { 30 namespace {
30 const char kAction[] = "action"; 31 const char kAction[] = "action";
32 const char kBackupRestoreEnabled[] = "backupRestoreEnabled";
33 const char kCanEnable[] = "canEnable";
31 const char kCode[] = "code"; 34 const char kCode[] = "code";
32 const char kCanEnable[] = "canEnable";
33 const char kStatus[] = "status";
34 const char kData[] = "data"; 35 const char kData[] = "data";
35 const char kDeviceId[] = "deviceId"; 36 const char kDeviceId[] = "deviceId";
37 const char kEnabled[] = "enabled";
36 const char kOn[] = "on"; 38 const char kOn[] = "on";
37 const char kPage[] = "page"; 39 const char kPage[] = "page";
40 const char kStatus[] = "status";
38 const char kText[] = "text"; 41 const char kText[] = "text";
39 const char kActionInitialize[] = "initialize"; 42 const char kActionInitialize[] = "initialize";
40 const char kActionSetMetricsMode[] = "setMetricsMode"; 43 const char kActionSetMetricsMode[] = "setMetricsMode";
41 const char kActionStartLso[] = "startLso"; 44 const char kActionStartLso[] = "startLso";
42 const char kActionCancelAuthCode[] = "cancelAuthCode"; 45 const char kActionCancelAuthCode[] = "cancelAuthCode";
43 const char kActionSetAuthCode[] = "setAuthCode"; 46 const char kActionSetAuthCode[] = "setAuthCode";
44 const char kActionEnableMetrics[] = "enableMetrics"; 47 const char kActionEnableMetrics[] = "enableMetrics";
45 const char kActionSendFeedback[] = "sendFeedback"; 48 const char kActionSendFeedback[] = "sendFeedback";
49 const char kActionSetBackupRestore[] = "setBackupRestore";
46 const char kActionCloseUI[] = "closeUI"; 50 const char kActionCloseUI[] = "closeUI";
47 const char kActionShowPage[] = "showPage"; 51 const char kActionShowPage[] = "showPage";
48 } // namespace 52 } // namespace
49 53
50 // static 54 // static
51 const char ArcSupportHost::kHostName[] = "com.google.arc_support"; 55 const char ArcSupportHost::kHostName[] = "com.google.arc_support";
52 56
53 // static 57 // static
54 const char ArcSupportHost::kHostAppId[] = "cnbgggchhmkkdmeppjobngjoejnihlei"; 58 const char ArcSupportHost::kHostAppId[] = "cnbgggchhmkkdmeppjobngjoejnihlei";
55 59
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 SendMetricsMode(); 95 SendMetricsMode();
92 96
93 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get(); 97 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get();
94 DCHECK(arc_auth_service); 98 DCHECK(arc_auth_service);
95 OnOptInUIShowPage(arc_auth_service->ui_page(), 99 OnOptInUIShowPage(arc_auth_service->ui_page(),
96 arc_auth_service->ui_page_status()); 100 arc_auth_service->ui_page_status());
97 } 101 }
98 102
99 void ArcSupportHost::Initialize() { 103 void ArcSupportHost::Initialize() {
100 DCHECK(client_); 104 DCHECK(client_);
101 105 std::unique_ptr<base::DictionaryValue> loadtime_data(
102 std::unique_ptr<base::DictionaryValue> localized_strings(
103 new base::DictionaryValue()); 106 new base::DictionaryValue());
104 base::string16 device_name = ash::GetChromeOSDeviceName(); 107 base::string16 device_name = ash::GetChromeOSDeviceName();
105 localized_strings->SetString( 108 loadtime_data->SetString(
106 "greetingHeader", 109 "greetingHeader",
107 l10n_util::GetStringFUTF16(IDS_ARC_OPT_IN_DIALOG_HEADER, device_name)); 110 l10n_util::GetStringFUTF16(IDS_ARC_OPT_IN_DIALOG_HEADER, device_name));
108 localized_strings->SetString( 111 loadtime_data->SetString("greetingDescription",
109 "greetingDescription", 112 l10n_util::GetStringFUTF16(
110 l10n_util::GetStringFUTF16(IDS_ARC_OPT_IN_DIALOG_DESCRIPTION, 113 IDS_ARC_OPT_IN_DIALOG_DESCRIPTION, device_name));
111 device_name)); 114 loadtime_data->SetString(
112 localized_strings->SetString(
113 "buttonAgree", 115 "buttonAgree",
114 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_BUTTON_AGREE)); 116 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_BUTTON_AGREE));
115 localized_strings->SetString( 117 loadtime_data->SetString(
116 "buttonCancel", 118 "buttonCancel",
117 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_BUTTON_CANCEL)); 119 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_BUTTON_CANCEL));
118 localized_strings->SetString( 120 loadtime_data->SetString(
119 "buttonSendFeedback", 121 "buttonSendFeedback",
120 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_BUTTON_SEND_FEEDBACK)); 122 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_BUTTON_SEND_FEEDBACK));
121 localized_strings->SetString( 123 loadtime_data->SetString(
122 "buttonRetry", 124 "buttonRetry",
123 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_BUTTON_RETRY)); 125 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_BUTTON_RETRY));
124 localized_strings->SetString( 126 loadtime_data->SetString(
125 "progressLsoLoading", 127 "progressLsoLoading",
126 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_PROGRESS_LSO)); 128 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_PROGRESS_LSO));
127 localized_strings->SetString( 129 loadtime_data->SetString(
128 "progressAndroidLoading", 130 "progressAndroidLoading",
129 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_PROGRESS_ANDROID)); 131 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_PROGRESS_ANDROID));
130 localized_strings->SetString( 132 loadtime_data->SetString(
131 "authorizationFailed", 133 "authorizationFailed",
132 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_AUTHORIZATION_FAILED)); 134 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_AUTHORIZATION_FAILED));
133 localized_strings->SetString( 135 loadtime_data->SetString(
134 "termsOfService", 136 "termsOfService",
135 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_TERMS_OF_SERVICE)); 137 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_TERMS_OF_SERVICE));
138 loadtime_data->SetString(
139 "textBackupRestore",
140 l10n_util::GetStringUTF16(IDS_ARC_OPT_IN_DIALOG_BACKUP_RESTORE));
136 141
137 const std::string& app_locale = g_browser_process->GetApplicationLocale(); 142 const std::string& app_locale = g_browser_process->GetApplicationLocale();
138 const std::string& country_code = base::CountryCodeForCurrentTimezone(); 143 const std::string& country_code = base::CountryCodeForCurrentTimezone();
139 localized_strings->SetString("countryCode", country_code); 144 loadtime_data->SetString("countryCode", country_code);
140
141 webui::SetLoadTimeDataDefaults(app_locale, localized_strings.get());
142 145
143 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get(); 146 arc::ArcAuthService* arc_auth_service = arc::ArcAuthService::Get();
147
148 loadtime_data->SetBoolean(kBackupRestoreEnabled,
149 arc_auth_service->profile()->GetPrefs()->GetBoolean(
150 prefs::kArcBackupRestoreEnabled));
151
152 webui::SetLoadTimeDataDefaults(app_locale, loadtime_data.get());
144 DCHECK(arc_auth_service); 153 DCHECK(arc_auth_service);
145 const std::string device_id = user_manager::known_user::GetDeviceId( 154 const std::string device_id = user_manager::known_user::GetDeviceId(
146 multi_user_util::GetAccountIdFromProfile(arc_auth_service->profile())); 155 multi_user_util::GetAccountIdFromProfile(arc_auth_service->profile()));
147 DCHECK(!device_id.empty()); 156 DCHECK(!device_id.empty());
148 157
149 base::DictionaryValue request; 158 base::DictionaryValue request;
150 std::string request_string; 159 std::string request_string;
151 request.SetString(kAction, kActionInitialize); 160 request.SetString(kAction, kActionInitialize);
152 request.Set(kData, std::move(localized_strings)); 161 request.Set(kData, std::move(loadtime_data));
153 request.SetString(kDeviceId, device_id); 162 request.SetString(kDeviceId, device_id);
154 base::JSONWriter::Write(request, &request_string); 163 base::JSONWriter::Write(request, &request_string);
155 client_->PostMessageFromNativeHost(request_string); 164 client_->PostMessageFromNativeHost(request_string);
156 } 165 }
157 166
158 void ArcSupportHost::OnMetricsPreferenceChanged() { 167 void ArcSupportHost::OnMetricsPreferenceChanged() {
159 SendMetricsMode(); 168 SendMetricsMode();
160 } 169 }
161 170
162 void ArcSupportHost::SendMetricsMode() { 171 void ArcSupportHost::SendMetricsMode() {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 217
209 base::DictionaryValue response; 218 base::DictionaryValue response;
210 response.SetString(kAction, kActionShowPage); 219 response.SetString(kAction, kActionShowPage);
211 response.SetInteger(kPage, static_cast<int>(page)); 220 response.SetInteger(kPage, static_cast<int>(page));
212 response.SetString(kStatus, status); 221 response.SetString(kStatus, status);
213 std::string response_string; 222 std::string response_string;
214 base::JSONWriter::Write(response, &response_string); 223 base::JSONWriter::Write(response, &response_string);
215 client_->PostMessageFromNativeHost(response_string); 224 client_->PostMessageFromNativeHost(response_string);
216 } 225 }
217 226
218 void ArcSupportHost::EnableMetrics() { 227 void ArcSupportHost::EnableMetrics(bool is_enabled) {
219 InitiateMetricsReportingChange(true, OnMetricsReportingCallbackType()); 228 InitiateMetricsReportingChange(is_enabled, OnMetricsReportingCallbackType());
229 }
230
231 void ArcSupportHost::EnableBackupRestore(bool is_enabled) {
232 PrefService* pref_service = arc::ArcAuthService::Get()->profile()->GetPrefs();
233 pref_service->SetBoolean(prefs::kArcBackupRestoreEnabled, is_enabled);
220 } 234 }
221 235
222 void ArcSupportHost::OnMessage(const std::string& request_string) { 236 void ArcSupportHost::OnMessage(const std::string& request_string) {
223 std::unique_ptr<base::Value> request_value = 237 std::unique_ptr<base::Value> request_value =
224 base::JSONReader::Read(request_string); 238 base::JSONReader::Read(request_string);
225 base::DictionaryValue* request; 239 base::DictionaryValue* request;
226 if (!request_value || !request_value->GetAsDictionary(&request)) { 240 if (!request_value || !request_value->GetAsDictionary(&request)) {
227 NOTREACHED(); 241 NOTREACHED();
228 return; 242 return;
229 } 243 }
(...skipping 12 matching lines...) Expand all
242 } else if (action == kActionSetAuthCode) { 256 } else if (action == kActionSetAuthCode) {
243 std::string code; 257 std::string code;
244 if (!request->GetString(kCode, &code)) { 258 if (!request->GetString(kCode, &code)) {
245 NOTREACHED(); 259 NOTREACHED();
246 return; 260 return;
247 } 261 }
248 arc_auth_service->SetAuthCodeAndStartArc(code); 262 arc_auth_service->SetAuthCodeAndStartArc(code);
249 } else if (action == kActionCancelAuthCode) { 263 } else if (action == kActionCancelAuthCode) {
250 arc_auth_service->CancelAuthCode(); 264 arc_auth_service->CancelAuthCode();
251 } else if (action == kActionEnableMetrics) { 265 } else if (action == kActionEnableMetrics) {
252 EnableMetrics(); 266 bool is_enabled;
267 if (!request->GetBoolean(kEnabled, &is_enabled)) {
268 NOTREACHED();
269 return;
270 }
271 EnableMetrics(is_enabled);
253 } else if (action == kActionSendFeedback) { 272 } else if (action == kActionSendFeedback) {
254 chrome::OpenFeedbackDialog(nullptr); 273 chrome::OpenFeedbackDialog(nullptr);
274 } else if (action == kActionSetBackupRestore) {
275 bool is_enabled;
276 if (!request->GetBoolean(kEnabled, &is_enabled)) {
277 NOTREACHED();
278 return;
279 }
280 EnableBackupRestore(is_enabled);
255 } else { 281 } else {
256 NOTREACHED(); 282 NOTREACHED();
257 } 283 }
258 } 284 }
259 285
260 scoped_refptr<base::SingleThreadTaskRunner> ArcSupportHost::task_runner() 286 scoped_refptr<base::SingleThreadTaskRunner> ArcSupportHost::task_runner()
261 const { 287 const {
262 return base::ThreadTaskRunnerHandle::Get(); 288 return base::ThreadTaskRunnerHandle::Get();
263 } 289 }
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/arc/arc_support_host.h ('k') | chrome/browser/resources/chromeos/arc_support/background.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698