Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / chromeos / charger_replacement_handler.cc
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/webui/chromeos/charger_replacement_handler.h"
6
7 #include "base/bind.h"
8 #include "base/prefs/pref_registry_simple.h"
9 #include "base/prefs/pref_service.h"
10 #include "base/strings/utf_string_conversions.h"
11 #include "base/values.h"
12 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/chromeos/charger_replace/charger_link_dialog.h"
14 #include "chrome/browser/chromeos/charger_replace/charger_replacement_dialog.h"
15 #include "chrome/common/pref_names.h"
16 #include "chrome/grit/generated_resources.h"
17 #include "content/public/browser/user_metrics.h"
18 #include "content/public/browser/web_ui.h"
19 #include "ui/base/l10n/l10n_util.h"
20
21 namespace chromeos {
22
23 namespace {
24
25 const char kFaqLink[] = "http://chromebook.com/hp11charger";
26
27 } // namespace
28
29 ChargerReplacementHandler::ChargerReplacementHandler(
30     ChargerReplacementDialog* dialog)
31     : charger_window_(NULL),
32       dialog_(dialog) {
33 }
34
35 ChargerReplacementHandler::~ChargerReplacementHandler() {
36 }
37
38 void ChargerReplacementHandler::RegisterMessages() {
39   web_ui()->RegisterMessageCallback("confirmSafeCharger",
40       base::Bind(&ChargerReplacementHandler::ConfirmSafeCharger,
41                  base::Unretained(this)));
42   web_ui()->RegisterMessageCallback("confirmNotOrderNewCharger",
43       base::Bind(&ChargerReplacementHandler::ConfirmNotOrderNewCharger,
44                  base::Unretained(this)));
45   web_ui()->RegisterMessageCallback("confirmChargerOrderedOnline",
46       base::Bind(&ChargerReplacementHandler::ConfirmChargerOrderedOnline,
47                  base::Unretained(this)));
48   web_ui()->RegisterMessageCallback("confirmChargerOrderByPhone",
49       base::Bind(&ChargerReplacementHandler::ConfirmChargerOrderByPhone,
50                  base::Unretained(this)));
51   web_ui()->RegisterMessageCallback("confirmStillUseBadCharger",
52       base::Bind(&ChargerReplacementHandler::ConfirmStillUseBadCharger,
53                  base::Unretained(this)));
54   web_ui()->RegisterMessageCallback("showLink",
55       base::Bind(&ChargerReplacementHandler::ShowLink,
56                  base::Unretained(this)));
57 }
58
59 // static
60 void ChargerReplacementHandler::GetLocalizedValues(
61     base::DictionaryValue* localized_strings) {
62   localized_strings->SetString(
63       "checkChargerTitle",
64       l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_CHECK_CHARGER_TITLE));
65   localized_strings->SetString(
66       "checkChargerDamage",
67       l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_CHECK_CHARGER_DAMAGE));
68   localized_strings->SetString(
69       "checkOriginalCharger",
70       l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_CHECK_ORIGNAL_CHARGER));
71   localized_strings->SetString(
72       "whereDevicePurchased",
73       l10n_util::GetStringUTF16(
74           IDS_CHARGER_REPLACEMENT_WHERE_DEVICE_PURCHASED));
75   localized_strings->SetString(
76       "selectCountry",
77       l10n_util::GetStringUTF16(
78           IDS_CHARGER_REPLACEMENT_SELECT_A_COUNTRY));
79   localized_strings->SetString(
80       "us",
81       l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_US));
82   localized_strings->SetString(
83       "ca",
84       l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_CA));
85   localized_strings->SetString(
86       "uk",
87       l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_UK));
88   localized_strings->SetString(
89       "au",
90       l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_AU));
91   localized_strings->SetString(
92       "ire",
93       l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_IRE));
94   localized_strings->SetString(
95       "checkChargerSelectCharger",
96       l10n_util::GetStringUTF16(
97           IDS_CHARGER_REPLACEMENT_CHECK_CHARGER_SELECT_CHARGER));
98   localized_strings->SetString(
99       "nextStepButtonText",
100       l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_NEXT_STEP));
101   localized_strings->SetString(
102       "confirmSafeChargerTitle",
103       l10n_util::GetStringUTF16(
104           IDS_CHARGER_REPLACEMENT_CONFIRM_SAFE_CHARGER_TITLE));
105   localized_strings->SetString(
106       "goWithSafeCharger",
107       l10n_util::GetStringUTF16(
108           IDS_CHARGER_REPLACEMENT_CONFIRM_SAFE_CHARGER_TO_GO));
109   localized_strings->SetString(
110       "prevStepText",
111       l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_PREVIOUS_STEP));
112   localized_strings->SetString(
113       "finishText",
114       l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_FINISH));
115   localized_strings->SetString(
116       "chargerUpdateTitle",
117       l10n_util::GetStringUTF16(
118           IDS_CHARGER_REPLACEMENT_CHARGER_UPDATE_TITLE));
119   localized_strings->SetString(
120       "chargerUpdateP1",
121       l10n_util::GetStringUTF16(
122           IDS_CHARGER_REPLACEMENT_CHARGER_UPDATE_P1));
123   localized_strings->SetString(
124       "stopUsingRecalledCharger",
125       l10n_util::GetStringUTF16(
126           IDS_CHARGER_REPLACEMENT_CHARGER_STOP_USING_RECALLED_CHARGER));
127   localized_strings->SetString(
128       "chargerUpdateP2",
129       l10n_util::GetStringUTF16(
130           IDS_CHARGER_REPLACEMENT_CHARGER_UPDATE_P2));
131   localized_strings->SetString(
132       "chargerUpdateFAQ",
133       l10n_util::GetStringUTF16(
134           IDS_CHARGER_REPLACEMENT_CHARGER_UPDATE_FAQ));
135   localized_strings->SetString(
136       "orderNewCharger",
137       l10n_util::GetStringUTF16(
138           IDS_CHARGER_REPLACEMENT_CHARGER_ORDER_NEW_CHARGER));
139   localized_strings->SetString(
140       "notOrderNewCharger",
141       l10n_util::GetStringUTF16(
142           IDS_CHARGER_REPLACEMENT_CHARGER_NOT_ORDER_NEW_CHARGER));
143   localized_strings->SetString(
144       "confirmNotOrderNewCharger",
145       l10n_util::GetStringUTF16(
146           IDS_CHARGER_REPLACEMENT_CHARGER_CONIFRM_NOT_ORDER_CHARGER));
147   localized_strings->SetString(
148       "noMoreShowText",
149       l10n_util::GetStringUTF16(
150           IDS_CHARGER_REPLACEMENT_NO_MOPE_MESSAGE_SHOW));
151   localized_strings->SetString(
152       "finishNotOrderChargerTitle",
153       l10n_util::GetStringUTF16(
154           IDS_CHARGER_REPLACEMENT_FINISH_NOT_ORDER_CHARGER_TITLE));
155   localized_strings->SetString(
156       "finishNotOrderChargerP2",
157       l10n_util::GetStringUTF16(
158           IDS_CHARGER_REPLACEMENT_FINISH_NOT_ORDER_CHARGER_P2));
159   localized_strings->SetString(
160       "finishNotOrderChargerMoreInfo",
161       l10n_util::GetStringUTF16(
162           IDS_CHARGER_REPLACEMENT_FINISH_NOT_ORDER_CHARGER_MORE_INFO));
163
164   localized_strings->SetString(
165       "confirmOnlineOrder",
166       l10n_util::GetStringUTF16(
167           IDS_CHARGER_REPLACEMENT_ONLINE_ORDER_CONFIRMATION_TITLE));
168   localized_strings->SetString(
169       "confirmReceivingOnlineOrder",
170       l10n_util::GetStringUTF16(
171           IDS_CHARGER_REPLACEMENT_ONLINE_ORDER_CONFIRMATION_MESSAGE));
172   localized_strings->SetString(
173       "needMoreInformation",
174       l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_FIND_MORE_INFORMATION));
175   localized_strings->SetString(
176       "orderChargerOfflineTitle",
177       l10n_util::GetStringUTF16(
178           IDS_CHARGER_REPLACEMENT_OFFLINE_ORDER_TITLE));
179   localized_strings->SetString(
180         "offlineChargerOrderParagraph1",
181         l10n_util::GetStringUTF16(
182             IDS_CHARGER_REPLACEMENT_OFFLINE_ORDER_P1));
183   localized_strings->SetString(
184       "offlineChargerOrderParagraph2",
185       l10n_util::GetStringUTF16(
186           IDS_CHARGER_REPLACEMENT_OFFLINE_ORDER_P2));
187   localized_strings->SetString(
188       "offlineSafeChargerConfirmationText",
189       l10n_util::GetStringUTF16(
190           IDS_CHARGER_REPLACEMENT_OFFLINE_ORDER_CONFIRM));
191   localized_strings->SetString(
192       "privacyPolicy",
193       l10n_util::GetStringUTF16(
194           IDS_CHARGER_REPLACEMENT_TEXT_PRIVACY_POLICY));
195   localized_strings->SetString(
196       "offlineOrderPhoneNumber",
197       l10n_util::GetStringUTF16(
198           IDS_CHARGER_REPLACEMENT_OFFLINE_ORDER_PHONE_NUMBER));
199   localized_strings->SetString(
200       "offlineOrderPhoneNumber",
201       l10n_util::GetStringUTF16(
202           IDS_CHARGER_REPLACEMENT_OFFLINE_ORDER_PHONE_NUMBER));
203   localized_strings->SetString(
204       "chargerStillBadTitle",
205       l10n_util::GetStringUTF16(
206           IDS_CHARGER_REPLACEMENT_CHARGER_STILL_BAD));
207   localized_strings->SetString(
208       "chargedOrdered",
209       l10n_util::GetStringUTF16(
210           IDS_CHARGER_REPLACEMENT_CHARGER_ORDERED));
211   localized_strings->SetString(
212       "findMoreInfo",
213       l10n_util::GetStringUTF16(
214           IDS_CHARGER_REPLACEMENT_CHARGER_MORE_INFO));
215   localized_strings->SetString("faqLink", kFaqLink);
216 }
217
218 // static
219 void ChargerReplacementHandler::RegisterPrefs(PrefRegistrySimple* registry) {
220   registry->RegisterIntegerPref(prefs::kSpringChargerCheck, CHARGER_UNKNOWN);
221 }
222
223 // static
224 ChargerReplacementHandler::SpringChargerStatus
225     ChargerReplacementHandler::GetChargerStatusPref() {
226   ChargerReplacementHandler::SpringChargerStatus charger_status =
227       static_cast<ChargerReplacementHandler::SpringChargerStatus>(
228       g_browser_process->local_state()->GetInteger(prefs::kSpringChargerCheck));
229   return charger_status;
230 }
231
232 // static
233 void ChargerReplacementHandler::SetChargerStatusPref(
234     SpringChargerStatus status) {
235   g_browser_process->local_state()->SetInteger(prefs::kSpringChargerCheck,
236                                                status);
237 }
238
239 void ChargerReplacementHandler::ConfirmSafeCharger(
240     const base::ListValue* args) {
241   content::RecordAction(
242         base::UserMetricsAction("ConfirmSafeSpringCharger"));
243
244   SetChargerStatusPref(CONFIRM_SAFE_CHARGER);
245   dialog_->set_can_close(true);
246 }
247
248 void ChargerReplacementHandler::ConfirmNotOrderNewCharger(
249     const base::ListValue* args) {
250   content::RecordAction(
251         base::UserMetricsAction("ConfirmNotToOrderSpringCharger"));
252
253   SetChargerStatusPref(CONFIRM_NOT_ORDER_NEW_CHARGER);
254   dialog_->set_can_close(true);
255 }
256
257 void ChargerReplacementHandler::ConfirmChargerOrderedOnline(
258     const base::ListValue* args) {
259   content::RecordAction(
260         base::UserMetricsAction("ConfirmOrderSpringChargerOnline"));
261   content::RecordAction(
262         base::UserMetricsAction("ConfirmOrderSpringCharger"));
263
264   SetChargerStatusPref(CONFIRM_NEW_CHARGER_ORDERED_ONLINE);
265   dialog_->set_can_close(true);
266 }
267
268 void ChargerReplacementHandler::ConfirmChargerOrderByPhone(
269     const base::ListValue* args) {
270   content::RecordAction(
271         base::UserMetricsAction("ConfirmOrderSpringChargerByPhone"));
272   content::RecordAction(
273         base::UserMetricsAction("ConfirmOrderSpringCharger"));
274
275   SetChargerStatusPref(CONFIRM_ORDER_NEW_CHARGER_BY_PHONE);
276   dialog_->set_can_close(true);
277 }
278
279 void ChargerReplacementHandler::ConfirmStillUseBadCharger(
280     const base::ListValue* args) {
281   content::RecordAction(
282       base::UserMetricsAction("ConfirmStillUseOriginalChargerAfterOrder"));
283
284   if (GetChargerStatusPref() == CONFIRM_NEW_CHARGER_ORDERED_ONLINE) {
285     SetChargerStatusPref(USE_BAD_CHARGER_AFTER_ORDER_ONLINE);
286   } else {
287     DCHECK(GetChargerStatusPref() == CONFIRM_ORDER_NEW_CHARGER_BY_PHONE);
288     SetChargerStatusPref(USE_BAD_CHARGER_AFTER_ORDER_BY_PHONE);
289   }
290   dialog_->set_can_close(true);
291 }
292
293 void ChargerReplacementHandler::ShowLink(const base::ListValue* args) {
294   std::string url = base::UTF16ToUTF8(ExtractStringValue(args));
295   ChargerLinkDialog* dialog = new ChargerLinkDialog(charger_window_, url);
296   dialog->Show();
297 }
298
299 }  // namespace chromeos