Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(278)

Side by Side Diff: chrome/browser/ui/webui/chromeos/login/base_webui_handler.cc

Issue 2713513009: cros: Break BaseScreenHandler into two classes. (Closed)
Patch Set: Initial upload Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/chromeos/login/base_screen_handler.h" 5 #include "chrome/browser/ui/webui/chromeos/login/base_webui_handler.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "chrome/browser/chromeos/login/screens/base_screen.h" 10 #include "chrome/browser/chromeos/login/screens/base_screen.h"
11 #include "chrome/browser/chromeos/login/ui/login_display_host.h" 11 #include "chrome/browser/chromeos/login/ui/login_display_host.h"
12 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" 12 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h"
13 #include "components/login/localized_values_builder.h" 13 #include "components/login/localized_values_builder.h"
14 #include "content/public/browser/web_ui.h" 14 #include "content/public/browser/web_ui.h"
15 15
16 namespace chromeos { 16 namespace chromeos {
17 17
18 namespace { 18 namespace {
19 const char kMethodContextChanged[] = "contextChanged"; 19 const char kMethodContextChanged[] = "contextChanged";
20 } // namespace 20 } // namespace
21 21
22 BaseScreenHandler::BaseScreenHandler() = default; 22 BaseWebUIHandler::BaseWebUIHandler() = default;
23 23
24 BaseScreenHandler::~BaseScreenHandler() { 24 BaseWebUIHandler::~BaseWebUIHandler() {
25 if (base_screen_) 25 if (base_screen_)
26 base_screen_->set_model_view_channel(nullptr); 26 base_screen_->set_model_view_channel(nullptr);
27 } 27 }
28 28
29 void BaseScreenHandler::InitializeBase() { 29 void BaseWebUIHandler::InitializeBase() {
30 page_is_ready_ = true; 30 page_is_ready_ = true;
31 Initialize(); 31 Initialize();
32 if (!pending_context_changes_.empty()) { 32 if (!pending_context_changes_.empty()) {
33 CommitContextChanges(pending_context_changes_); 33 CommitContextChanges(pending_context_changes_);
34 pending_context_changes_.Clear(); 34 pending_context_changes_.Clear();
35 } 35 }
36 } 36 }
37 37
38 void BaseScreenHandler::GetLocalizedStrings(base::DictionaryValue* dict) { 38 void BaseWebUIHandler::GetLocalizedStrings(base::DictionaryValue* dict) {
39 auto builder = base::MakeUnique<::login::LocalizedValuesBuilder>(dict); 39 auto builder = base::MakeUnique<::login::LocalizedValuesBuilder>(dict);
40 DeclareLocalizedValues(builder.get()); 40 DeclareLocalizedValues(builder.get());
41 GetAdditionalParameters(dict); 41 GetAdditionalParameters(dict);
42 } 42 }
43 43
44 void BaseScreenHandler::RegisterMessages() { 44 void BaseWebUIHandler::RegisterMessages() {
45 AddPrefixedCallback("userActed", 45 AddPrefixedCallback("userActed", &BaseScreenHandler::HandleUserAction);
46 &BaseScreenHandler::HandleUserAction);
47 AddPrefixedCallback("contextChanged", 46 AddPrefixedCallback("contextChanged",
48 &BaseScreenHandler::HandleContextChanged); 47 &BaseScreenHandler::HandleContextChanged);
49 DeclareJSCallbacks(); 48 DeclareJSCallbacks();
50 } 49 }
51 50
52 void BaseScreenHandler::CommitContextChanges( 51 void BaseWebUIHandler::CommitContextChanges(const base::DictionaryValue& diff) {
53 const base::DictionaryValue& diff) {
54 if (!page_is_ready()) 52 if (!page_is_ready())
55 pending_context_changes_.MergeDictionary(&diff); 53 pending_context_changes_.MergeDictionary(&diff);
56 else 54 else
57 CallJS(kMethodContextChanged, diff); 55 CallJS(kMethodContextChanged, diff);
58 } 56 }
59 57
60 void BaseScreenHandler::GetAdditionalParameters(base::DictionaryValue* dict) { 58 void BaseWebUIHandler::GetAdditionalParameters(base::DictionaryValue* dict) {}
61 }
62 59
63 void BaseScreenHandler::CallJS(const std::string& method) { 60 void BaseWebUIHandler::CallJS(const std::string& method) {
64 web_ui()->CallJavascriptFunctionUnsafe(FullMethodPath(method)); 61 web_ui()->CallJavascriptFunctionUnsafe(FullMethodPath(method));
65 } 62 }
66 63
67 void BaseScreenHandler::ShowScreen(OobeScreen screen) { 64 void BaseWebUIHandler::ShowScreen(OobeScreen screen) {
68 ShowScreenWithData(screen, nullptr); 65 ShowScreenWithData(screen, nullptr);
69 } 66 }
70 67
71 void BaseScreenHandler::ShowScreenWithData(OobeScreen screen, 68 void BaseWebUIHandler::ShowScreenWithData(OobeScreen screen,
72 const base::DictionaryValue* data) { 69 const base::DictionaryValue* data) {
73 if (!web_ui()) 70 if (!web_ui())
74 return; 71 return;
75 base::DictionaryValue screen_params; 72 base::DictionaryValue screen_params;
76 screen_params.SetString("id", GetOobeScreenName(screen)); 73 screen_params.SetString("id", GetOobeScreenName(screen));
77 if (data) 74 if (data)
78 screen_params.SetWithoutPathExpansion("data", data->DeepCopy()); 75 screen_params.SetWithoutPathExpansion("data", data->DeepCopy());
79 web_ui()->CallJavascriptFunctionUnsafe("cr.ui.Oobe.showScreen", 76 web_ui()->CallJavascriptFunctionUnsafe("cr.ui.Oobe.showScreen",
80 screen_params); 77 screen_params);
81 } 78 }
82 79
83 OobeUI* BaseScreenHandler::GetOobeUI() const { 80 OobeUI* BaseWebUIHandler::GetOobeUI() const {
84 return static_cast<OobeUI*>(web_ui()->GetController()); 81 return static_cast<OobeUI*>(web_ui()->GetController());
85 } 82 }
86 83
87 OobeScreen BaseScreenHandler::GetCurrentScreen() const { 84 OobeScreen BaseWebUIHandler::GetCurrentScreen() const {
88 OobeUI* oobe_ui = GetOobeUI(); 85 OobeUI* oobe_ui = GetOobeUI();
89 if (!oobe_ui) 86 if (!oobe_ui)
90 return OobeScreen::SCREEN_UNKNOWN; 87 return OobeScreen::SCREEN_UNKNOWN;
91 return oobe_ui->current_screen(); 88 return oobe_ui->current_screen();
92 } 89 }
93 90
94 gfx::NativeWindow BaseScreenHandler::GetNativeWindow() { 91 gfx::NativeWindow BaseWebUIHandler::GetNativeWindow() {
95 return LoginDisplayHost::default_host()->GetNativeWindow(); 92 return LoginDisplayHost::default_host()->GetNativeWindow();
96 } 93 }
97 94
98 void BaseScreenHandler::SetBaseScreen(BaseScreen* base_screen) { 95 void BaseWebUIHandler::SetBaseScreen(BaseScreen* base_screen) {
99 if (base_screen_ == base_screen) 96 if (base_screen_ == base_screen)
100 return; 97 return;
101 if (base_screen_) 98 if (base_screen_)
102 base_screen_->set_model_view_channel(nullptr); 99 base_screen_->set_model_view_channel(nullptr);
103 base_screen_ = base_screen; 100 base_screen_ = base_screen;
104 if (base_screen_) 101 if (base_screen_)
105 base_screen_->set_model_view_channel(this); 102 base_screen_->set_model_view_channel(this);
106 } 103 }
107 104
108 std::string BaseScreenHandler::FullMethodPath(const std::string& method) const { 105 std::string BaseWebUIHandler::FullMethodPath(const std::string& method) const {
109 DCHECK(!method.empty()); 106 DCHECK(!method.empty());
110 return js_screen_path_prefix_ + method; 107 return js_screen_path_prefix_ + method;
111 } 108 }
112 109
113 void BaseScreenHandler::HandleUserAction(const std::string& action_id) { 110 void BaseWebUIHandler::HandleUserAction(const std::string& action_id) {
114 if (base_screen_) 111 if (base_screen_)
115 base_screen_->OnUserAction(action_id); 112 base_screen_->OnUserAction(action_id);
116 } 113 }
117 114
118 void BaseScreenHandler::HandleContextChanged( 115 void BaseWebUIHandler::HandleContextChanged(const base::DictionaryValue* diff) {
119 const base::DictionaryValue* diff) {
120 if (diff && base_screen_) 116 if (diff && base_screen_)
121 base_screen_->OnContextChanged(*diff); 117 base_screen_->OnContextChanged(*diff);
122 } 118 }
123 119
124 } // namespace chromeos 120 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698