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