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/host_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" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "grit/generated_resources.h" 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace chromeos { 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace { 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdochconst char kJsScreenPath[] = "login.HostPairingScreen"; 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdochconst char kMethodContextChanged[] = "contextChanged"; 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Sent from JS when screen is ready to receive context updates. 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// TODO(dzhioev): Move 'contextReady' logic to the base screen handler when 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// all screens migrate to context-based communications. 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst char kCallbackContextReady[] = "contextReady"; 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 26116680a4aac90f2aa7413d9095a592090648e557Ben MurdochHostPairingScreenHandler::HostPairingScreenHandler() 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : BaseScreenHandler(kJsScreenPath), 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci delegate_(NULL), 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci show_on_init_(false), 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci js_context_ready_(false) { 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 33116680a4aac90f2aa7413d9095a592090648e557Ben MurdochHostPairingScreenHandler::~HostPairingScreenHandler() { 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (delegate_) 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch delegate_->OnActorDestroyed(this); 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid HostPairingScreenHandler::HandleContextReady() { 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci js_context_ready_ = true; 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci OnContextChanged(context_cache_.storage()); 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid HostPairingScreenHandler::Initialize() { 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (!page_is_ready() || !delegate_) 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return; 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (show_on_init_) { 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Show(); 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch show_on_init_ = false; 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid HostPairingScreenHandler::DeclareLocalizedValues( 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch LocalizedValuesBuilder* builder) { 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // TODO(dzhioev): Move the prefix logic to the base screen handler after 561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // migration. 571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci std::string prefix; 581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::ReplaceChars(kJsScreenPath, ".", "_", &prefix); 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci prefix += "_"; 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci builder->Add(prefix + "welcomeTitle", IDS_PAIRING_HOST_WELCOME_TITLE); 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci builder->Add(prefix + "welcomeText", IDS_PAIRING_HOST_WELCOME_TEXT); 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci builder->Add(prefix + "confirmationTitle", 641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IDS_PAIRING_HOST_CONFIRMATION_TITLE); 651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci builder->Add(prefix + "updatingTitle", IDS_PAIRING_HOST_UPDATING_TITLE); 661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci builder->Add(prefix + "updatingText", IDS_PAIRING_HOST_UPDATING_TEXT); 671320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci builder->Add(prefix + "enrollTitle", IDS_PAIRING_ENROLL_TITLE); 681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci builder->Add(prefix + "enrollingTitle", 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IDS_PAIRING_ENROLLMENT_IN_PROGRESS); 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci builder->Add(prefix + "doneTitle", IDS_PAIRING_HOST_DONE_TITLE); 711320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci builder->Add(prefix + "doneText", IDS_PAIRING_HOST_DONE_TEXT); 721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci builder->Add(prefix + "enrollmentErrorTitle", 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IDS_PAIRING_ENROLLMENT_ERROR_TITLE); 741320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci builder->Add(prefix + "errorNeedsRestart", 751320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci IDS_PAIRING_HOST_EROLLMENT_ERROR_NEEDS_RESTART); 76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 78116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid HostPairingScreenHandler::RegisterMessages() { 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AddPrefixedCallback(kCallbackContextReady, 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci &HostPairingScreenHandler::HandleContextReady); 81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 82116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 83116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid HostPairingScreenHandler::Show() { 84116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (!page_is_ready()) { 85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch show_on_init_ = true; 86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return; 87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch ShowScreen(OobeUI::kScreenHostPairing, NULL); 89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 91116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid HostPairingScreenHandler::Hide() { 92116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 93116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 94116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid HostPairingScreenHandler::SetDelegate(Delegate* delegate) { 95116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch delegate_ = delegate; 96116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (page_is_ready()) 97116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Initialize(); 98116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 99116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 100116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid HostPairingScreenHandler::OnContextChanged( 101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const base::DictionaryValue& diff) { 1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (!js_context_ready_) { 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci context_cache_.ApplyChanges(diff, NULL); 1041320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci return; 1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci } 106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch CallJS(kMethodContextChanged, diff); 107116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 108116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 109116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace chromeos 110