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