Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / chromeos / login / host_pairing_screen_handler.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/webui/chromeos/login/host_pairing_screen_handler.h"
6
7 #include "base/strings/string_util.h"
8 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
9 #include "grit/generated_resources.h"
10
11 namespace chromeos {
12
13 namespace {
14
15 const char kJsScreenPath[] = "login.HostPairingScreen";
16
17 const char kMethodContextChanged[] = "contextChanged";
18
19 // Sent from JS when screen is ready to receive context updates.
20 // TODO(dzhioev): Move 'contextReady' logic to the base screen handler when
21 // all screens migrate to context-based communications.
22 const char kCallbackContextReady[] = "contextReady";
23
24 }  // namespace
25
26 HostPairingScreenHandler::HostPairingScreenHandler()
27     : BaseScreenHandler(kJsScreenPath),
28       delegate_(NULL),
29       show_on_init_(false),
30       js_context_ready_(false) {
31 }
32
33 HostPairingScreenHandler::~HostPairingScreenHandler() {
34   if (delegate_)
35     delegate_->OnActorDestroyed(this);
36 }
37
38 void HostPairingScreenHandler::HandleContextReady() {
39   js_context_ready_ = true;
40   OnContextChanged(context_cache_.storage());
41 }
42
43 void HostPairingScreenHandler::Initialize() {
44   if (!page_is_ready() || !delegate_)
45     return;
46
47   if (show_on_init_) {
48     Show();
49     show_on_init_ = false;
50   }
51 }
52
53 void HostPairingScreenHandler::DeclareLocalizedValues(
54     LocalizedValuesBuilder* builder) {
55   // TODO(dzhioev): Move the prefix logic to the base screen handler after
56   // migration.
57   std::string prefix;
58   base::ReplaceChars(kJsScreenPath, ".", "_", &prefix);
59   prefix += "_";
60
61   builder->Add(prefix + "welcomeTitle", IDS_PAIRING_HOST_WELCOME_TITLE);
62   builder->Add(prefix + "welcomeText", IDS_PAIRING_HOST_WELCOME_TEXT);
63   builder->Add(prefix + "confirmationTitle",
64                IDS_PAIRING_HOST_CONFIRMATION_TITLE);
65   builder->Add(prefix + "updatingTitle", IDS_PAIRING_HOST_UPDATING_TITLE);
66   builder->Add(prefix + "updatingText", IDS_PAIRING_HOST_UPDATING_TEXT);
67   builder->Add(prefix + "enrollTitle", IDS_PAIRING_ENROLL_TITLE);
68   builder->Add(prefix + "enrollingTitle",
69                IDS_PAIRING_ENROLLMENT_IN_PROGRESS);
70   builder->Add(prefix + "doneTitle", IDS_PAIRING_HOST_DONE_TITLE);
71   builder->Add(prefix + "doneText", IDS_PAIRING_HOST_DONE_TEXT);
72   builder->Add(prefix + "enrollmentErrorTitle",
73                IDS_PAIRING_ENROLLMENT_ERROR_TITLE);
74   builder->Add(prefix + "errorNeedsRestart",
75                IDS_PAIRING_HOST_EROLLMENT_ERROR_NEEDS_RESTART);
76 }
77
78 void HostPairingScreenHandler::RegisterMessages() {
79   AddPrefixedCallback(kCallbackContextReady,
80                       &HostPairingScreenHandler::HandleContextReady);
81 }
82
83 void HostPairingScreenHandler::Show() {
84   if (!page_is_ready()) {
85     show_on_init_ = true;
86     return;
87   }
88   ShowScreen(OobeUI::kScreenHostPairing, NULL);
89 }
90
91 void HostPairingScreenHandler::Hide() {
92 }
93
94 void HostPairingScreenHandler::SetDelegate(Delegate* delegate) {
95   delegate_ = delegate;
96   if (page_is_ready())
97     Initialize();
98 }
99
100 void HostPairingScreenHandler::OnContextChanged(
101     const base::DictionaryValue& diff) {
102   if (!js_context_ready_) {
103     context_cache_.ApplyChanges(diff, NULL);
104     return;
105   }
106   CallJS(kMethodContextChanged, diff);
107 }
108
109 }  // namespace chromeos