blob: 0aeed464db6986e765f0debb2a788d72fcb6921b [file] [log] [blame]
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/webui/chromeos/charger_replacement_handler.h"
#include "base/bind.h"
#include "base/prefs/pref_registry_simple.h"
#include "base/prefs/pref_service.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/charger_replace/charger_link_dialog.h"
#include "chrome/browser/chromeos/charger_replace/charger_replacement_dialog.h"
#include "chrome/common/pref_names.h"
#include "content/public/browser/user_metrics.h"
#include "content/public/browser/web_ui.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
namespace chromeos {
namespace {
const char kFaqLink[] = "http://chromebook.com/hp11charger";
} // namespace
ChargerReplacementHandler::ChargerReplacementHandler(
ChargerReplacementDialog* dialog)
: charger_window_(NULL),
dialog_(dialog) {
}
ChargerReplacementHandler::~ChargerReplacementHandler() {
}
void ChargerReplacementHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback("confirmSafeCharger",
base::Bind(&ChargerReplacementHandler::ConfirmSafeCharger,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("confirmNotOrderNewCharger",
base::Bind(&ChargerReplacementHandler::ConfirmNotOrderNewCharger,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("confirmChargerOrderedOnline",
base::Bind(&ChargerReplacementHandler::ConfirmChargerOrderedOnline,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("confirmChargerOrderByPhone",
base::Bind(&ChargerReplacementHandler::ConfirmChargerOrderByPhone,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("confirmStillUseBadCharger",
base::Bind(&ChargerReplacementHandler::ConfirmStillUseBadCharger,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("showLink",
base::Bind(&ChargerReplacementHandler::ShowLink,
base::Unretained(this)));
}
// static
void ChargerReplacementHandler::GetLocalizedValues(
base::DictionaryValue* localized_strings) {
localized_strings->SetString(
"checkChargerTitle",
l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_CHECK_CHARGER_TITLE));
localized_strings->SetString(
"checkChargerDamage",
l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_CHECK_CHARGER_DAMAGE));
localized_strings->SetString(
"checkOriginalCharger",
l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_CHECK_ORIGNAL_CHARGER));
localized_strings->SetString(
"whereDevicePurchased",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_WHERE_DEVICE_PURCHASED));
localized_strings->SetString(
"selectCountry",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_SELECT_A_COUNTRY));
localized_strings->SetString(
"us",
l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_US));
localized_strings->SetString(
"ca",
l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_CA));
localized_strings->SetString(
"uk",
l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_UK));
localized_strings->SetString(
"au",
l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_AU));
localized_strings->SetString(
"ire",
l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_IRE));
localized_strings->SetString(
"checkChargerSelectCharger",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_CHECK_CHARGER_SELECT_CHARGER));
localized_strings->SetString(
"nextStepButtonText",
l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_NEXT_STEP));
localized_strings->SetString(
"confirmSafeChargerTitle",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_CONFIRM_SAFE_CHARGER_TITLE));
localized_strings->SetString(
"goWithSafeCharger",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_CONFIRM_SAFE_CHARGER_TO_GO));
localized_strings->SetString(
"prevStepText",
l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_PREVIOUS_STEP));
localized_strings->SetString(
"finishText",
l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_FINISH));
localized_strings->SetString(
"chargerUpdateTitle",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_CHARGER_UPDATE_TITLE));
localized_strings->SetString(
"chargerUpdateP1",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_CHARGER_UPDATE_P1));
localized_strings->SetString(
"stopUsingRecalledCharger",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_CHARGER_STOP_USING_RECALLED_CHARGER));
localized_strings->SetString(
"chargerUpdateP2",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_CHARGER_UPDATE_P2));
localized_strings->SetString(
"chargerUpdateFAQ",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_CHARGER_UPDATE_FAQ));
localized_strings->SetString(
"orderNewCharger",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_CHARGER_ORDER_NEW_CHARGER));
localized_strings->SetString(
"notOrderNewCharger",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_CHARGER_NOT_ORDER_NEW_CHARGER));
localized_strings->SetString(
"confirmNotOrderNewCharger",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_CHARGER_CONIFRM_NOT_ORDER_CHARGER));
localized_strings->SetString(
"noMoreShowText",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_NO_MOPE_MESSAGE_SHOW));
localized_strings->SetString(
"finishNotOrderChargerTitle",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_FINISH_NOT_ORDER_CHARGER_TITLE));
localized_strings->SetString(
"finishNotOrderChargerP2",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_FINISH_NOT_ORDER_CHARGER_P2));
localized_strings->SetString(
"finishNotOrderChargerMoreInfo",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_FINISH_NOT_ORDER_CHARGER_MORE_INFO));
localized_strings->SetString(
"confirmOnlineOrder",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_ONLINE_ORDER_CONFIRMATION_TITLE));
localized_strings->SetString(
"confirmReceivingOnlineOrder",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_ONLINE_ORDER_CONFIRMATION_MESSAGE));
localized_strings->SetString(
"needMoreInformation",
l10n_util::GetStringUTF16(IDS_CHARGER_REPLACEMENT_FIND_MORE_INFORMATION));
localized_strings->SetString(
"orderChargerOfflineTitle",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_OFFLINE_ORDER_TITLE));
localized_strings->SetString(
"offlineChargerOrderParagraph1",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_OFFLINE_ORDER_P1));
localized_strings->SetString(
"offlineChargerOrderParagraph2",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_OFFLINE_ORDER_P2));
localized_strings->SetString(
"offlineSafeChargerConfirmationText",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_OFFLINE_ORDER_CONFIRM));
localized_strings->SetString(
"privacyPolicy",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_TEXT_PRIVACY_POLICY));
localized_strings->SetString(
"offlineOrderPhoneNumber",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_OFFLINE_ORDER_PHONE_NUMBER));
localized_strings->SetString(
"offlineOrderPhoneNumber",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_OFFLINE_ORDER_PHONE_NUMBER));
localized_strings->SetString(
"chargerStillBadTitle",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_CHARGER_STILL_BAD));
localized_strings->SetString(
"chargedOrdered",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_CHARGER_ORDERED));
localized_strings->SetString(
"findMoreInfo",
l10n_util::GetStringUTF16(
IDS_CHARGER_REPLACEMENT_CHARGER_MORE_INFO));
localized_strings->SetString("faqLink", kFaqLink);
}
// static
void ChargerReplacementHandler::RegisterPrefs(PrefRegistrySimple* registry) {
registry->RegisterIntegerPref(prefs::kSpringChargerCheck, CHARGER_UNKNOWN);
}
// static
ChargerReplacementHandler::SpringChargerStatus
ChargerReplacementHandler::GetChargerStatusPref() {
ChargerReplacementHandler::SpringChargerStatus charger_status =
static_cast<ChargerReplacementHandler::SpringChargerStatus>(
g_browser_process->local_state()->GetInteger(prefs::kSpringChargerCheck));
return charger_status;
}
// static
void ChargerReplacementHandler::SetChargerStatusPref(
SpringChargerStatus status) {
g_browser_process->local_state()->SetInteger(prefs::kSpringChargerCheck,
status);
}
void ChargerReplacementHandler::ConfirmSafeCharger(
const base::ListValue* args) {
content::RecordAction(
base::UserMetricsAction("ConfirmSafeSpringCharger"));
SetChargerStatusPref(CONFIRM_SAFE_CHARGER);
dialog_->set_can_close(true);
}
void ChargerReplacementHandler::ConfirmNotOrderNewCharger(
const base::ListValue* args) {
content::RecordAction(
base::UserMetricsAction("ConfirmNotToOrderSpringCharger"));
SetChargerStatusPref(CONFIRM_NOT_ORDER_NEW_CHARGER);
dialog_->set_can_close(true);
}
void ChargerReplacementHandler::ConfirmChargerOrderedOnline(
const base::ListValue* args) {
content::RecordAction(
base::UserMetricsAction("ConfirmOrderSpringChargerOnline"));
content::RecordAction(
base::UserMetricsAction("ConfirmOrderSpringCharger"));
SetChargerStatusPref(CONFIRM_NEW_CHARGER_ORDERED_ONLINE);
dialog_->set_can_close(true);
}
void ChargerReplacementHandler::ConfirmChargerOrderByPhone(
const base::ListValue* args) {
content::RecordAction(
base::UserMetricsAction("ConfirmOrderSpringChargerByPhone"));
content::RecordAction(
base::UserMetricsAction("ConfirmOrderSpringCharger"));
SetChargerStatusPref(CONFIRM_ORDER_NEW_CHARGER_BY_PHONE);
dialog_->set_can_close(true);
}
void ChargerReplacementHandler::ConfirmStillUseBadCharger(
const base::ListValue* args) {
content::RecordAction(
base::UserMetricsAction("ConfirmStillUseOriginalChargerAfterOrder"));
if (GetChargerStatusPref() == CONFIRM_NEW_CHARGER_ORDERED_ONLINE) {
SetChargerStatusPref(USE_BAD_CHARGER_AFTER_ORDER_ONLINE);
} else {
DCHECK(GetChargerStatusPref() == CONFIRM_ORDER_NEW_CHARGER_BY_PHONE);
SetChargerStatusPref(USE_BAD_CHARGER_AFTER_ORDER_BY_PHONE);
}
dialog_->set_can_close(true);
}
void ChargerReplacementHandler::ShowLink(const base::ListValue* args) {
std::string url = base::UTF16ToUTF8(ExtractStringValue(args));
ChargerLinkDialog* dialog = new ChargerLinkDialog(charger_window_, url);
dialog->Show();
}
} // namespace chromeos