1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/ui/webui/chromeos/login/controller_pairing_screen_handler.h"
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/strings/string_util.h"
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/public/browser/web_contents.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "grit/generated_resources.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace chromeos {
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace {
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdochconst char kJsScreenPath[] = "login.ControllerPairingScreen";
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdochconst char kMethodContextChanged[] = "contextChanged";
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdochconst char kCallbackUserActed[] = "userActed";
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdochconst char kCallbackContextChanged[] = "contextChanged";
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace
24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
25116680a4aac90f2aa7413d9095a592090648e557Ben MurdochControllerPairingScreenHandler::ControllerPairingScreenHandler()
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    : BaseScreenHandler(kJsScreenPath), delegate_(NULL), show_on_init_(false) {
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
29116680a4aac90f2aa7413d9095a592090648e557Ben MurdochControllerPairingScreenHandler::~ControllerPairingScreenHandler() {
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  if (delegate_)
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    delegate_->OnActorDestroyed(this);
32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
34116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid ControllerPairingScreenHandler::HandleUserActed(
35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const std::string& action) {
36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  if (!delegate_)
37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return;
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  delegate_->OnUserActed(action);
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid ControllerPairingScreenHandler::HandleContextChanged(
42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const base::DictionaryValue* diff) {
43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  if (!delegate_)
44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return;
45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  delegate_->OnScreenContextChanged(*diff);
46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
48116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid ControllerPairingScreenHandler::Initialize() {
49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  if (!page_is_ready() || !delegate_)
50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return;
51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  if (show_on_init_) {
53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    Show();
54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    show_on_init_ = false;
55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  }
56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
58116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid ControllerPairingScreenHandler::DeclareLocalizedValues(
59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    LocalizedValuesBuilder* builder) {
601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // TODO(dzhioev): Move the prefix logic to the base screen handler after
611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // migration.
621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  std::string prefix;
631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  base::ReplaceChars(kJsScreenPath, ".", "_", &prefix);
641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  prefix += "_";
651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "welcome", IDS_PAIRING_CONTROLLER_WELCOME);
671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "searching", IDS_PAIRING_CONTROLLER_SEARCHING);
681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "needHelp", IDS_PAIRING_NEED_HELP);
691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "troubleConnecting",
701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci               IDS_PAIRING_CONTROLLER_TROUBLE_CONNECTING);
711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "connectingAdvice",
721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci               IDS_PAIRING_CONTROLLER_CONNECTING_ADVICE);
731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "adviceGotIt", IDS_PAIRING_CONTROLLER_ADVICE_GOT_IT);
741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "selectTitle", IDS_PAIRING_CONTROLLER_SELECT_TITLE);
751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "connect", IDS_PAIRING_CONTROLLER_CONNECT);
761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "connecting", IDS_PAIRING_CONTROLLER_CONNECTING);
771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "confirmationTitle",
781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci               IDS_PAIRING_CONTROLLER_CONFIRMATION_TITLE);
791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "confirmationQuestion",
801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci               IDS_PAIRING_CONTROLLER_CONFIRMATION_QUESTION);
811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "rejectCode", IDS_PAIRING_CONTROLLER_REJECT_CODE);
821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "acceptCode", IDS_PAIRING_CONTROLLER_ACCEPT_CODE);
831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "updateTitle", IDS_PAIRING_CONTROLLER_UPDATE_TITLE);
841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "updateText", IDS_PAIRING_CONTROLLER_UPDATE_TEXT);
851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "connectionLostTitle",
861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci               IDS_PAIRING_CONTROLLER_CONNECTION_LOST_TITLE);
871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "connectionLostText",
881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci               IDS_PAIRING_CONTROLLER_CONNECTION_LOST_TEXT);
891320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "enrollTitle", IDS_PAIRING_ENROLL_TITLE);
901320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "enrollText1", IDS_PAIRING_CONTROLLER_ENROLL_TEXT_1);
911320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "enrollText2", IDS_PAIRING_CONTROLLER_ENROLL_TEXT_2);
921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "continue", IDS_PAIRING_CONTROLLER_CONTINUE);
931320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "enrollmentInProgress",
941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci               IDS_PAIRING_ENROLLMENT_IN_PROGRESS);
951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "enrollmentErrorTitle",
961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci               IDS_PAIRING_ENROLLMENT_ERROR_TITLE);
971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "enrollmentErrorHostRestarts",
981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci               IDS_PAIRING_CONTROLLER_ENROLLMENT_ERROR_HOST_RESTARTS);
991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "successTitle", IDS_PAIRING_CONTROLLER_SUCCESS_TITLE);
1001320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "successText", IDS_PAIRING_CONTROLLER_SUCCESS_TEXT);
1011320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  builder->Add(prefix + "continueToHangouts",
1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci               IDS_PAIRING_CONTROLLER_CONTINUE_TO_HANGOUTS);
103116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
104116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
105116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid ControllerPairingScreenHandler::RegisterMessages() {
106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  AddPrefixedCallback(kCallbackUserActed,
107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                      &ControllerPairingScreenHandler::HandleUserActed);
108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  AddPrefixedCallback(kCallbackContextChanged,
109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch                      &ControllerPairingScreenHandler::HandleContextChanged);
110116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
112116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid ControllerPairingScreenHandler::Show() {
113116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  if (!page_is_ready()) {
114116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    show_on_init_ = true;
115116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    return;
116116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  }
117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  ShowScreen(OobeUI::kScreenControllerPairing, NULL);
118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
119116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
120116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid ControllerPairingScreenHandler::Hide() {
121116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
122116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
123116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid ControllerPairingScreenHandler::SetDelegate(Delegate* delegate) {
124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  delegate_ = delegate;
125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  if (page_is_ready())
126116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    Initialize();
127116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
129116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid ControllerPairingScreenHandler::OnContextChanged(
130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch    const base::DictionaryValue& diff) {
131116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  CallJS(kMethodContextChanged, diff);
132116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
133116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
134116680a4aac90f2aa7413d9095a592090648e557Ben Murdochcontent::BrowserContext* ControllerPairingScreenHandler::GetBrowserContext() {
135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch  return web_ui()->GetWebContents()->GetBrowserContext();
136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}
137116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
138116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace chromeos
139