Home | History | Annotate | Download | only in chromeos
      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
    300