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

Side by Side Diff: chrome/browser/chromeos/login/views_oobe_display.cc

Issue 8436002: [cros] Remove Views implementation for login/OOBE. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge Created 9 years, 1 month 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011 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 <vector>
6
7 #include "chrome/browser/browser_process.h"
8 #include "chrome/browser/chromeos/login/enrollment/views_enterprise_enrollment_s creen_actor.h"
9 #include "chrome/browser/chromeos/login/views_eula_screen_actor.h"
10 #include "chrome/browser/chromeos/login/views_network_screen_actor.h"
11 #include "chrome/browser/chromeos/login/views_oobe_display.h"
12 #include "chrome/browser/chromeos/login/views_update_screen_actor.h"
13 #include "chrome/browser/chromeos/login/views_user_image_screen_actor.h"
14 #include "chrome/browser/chromeos/login/wizard_accessibility_helper.h"
15 #include "chrome/browser/chromeos/login/wizard_controller.h"
16 #include "chrome/common/chrome_notification_types.h"
17 #include "content/public/browser/notification_service.h"
18 #include "views/view.h"
19 #include "views/widget/widget.h"
20
21 #if defined(TOOLKIT_USES_GTK)
22 #include "chrome/browser/chromeos/wm_ipc.h"
23 #endif
24
25 namespace chromeos {
26
27 namespace {
28
29 // RootView of the Widget WizardController creates. Contains the contents of the
30 // WizardController.
31 class ContentView : public views::View {
32 public:
33 ContentView()
34 : accel_toggle_accessibility_(
35 chromeos::WizardAccessibilityHelper::GetAccelerator()) {
36 #if defined(OFFICIAL_BUILD)
37 accel_cancel_update_ = views::Accelerator(ui::VKEY_ESCAPE,
38 true, true, true);
39 #else
40 accel_cancel_update_ = views::Accelerator(ui::VKEY_ESCAPE,
41 false, false, false);
42 accel_login_screen_ = views::Accelerator(ui::VKEY_L,
43 false, true, true);
44 accel_network_screen_ = views::Accelerator(ui::VKEY_N,
45 false, true, true);
46 accel_update_screen_ = views::Accelerator(ui::VKEY_U,
47 false, true, true);
48 accel_image_screen_ = views::Accelerator(ui::VKEY_I,
49 false, true, true);
50 accel_eula_screen_ = views::Accelerator(ui::VKEY_E,
51 false, true, true);
52 accel_register_screen_ = views::Accelerator(ui::VKEY_R,
53 false, true, true);
54 accel_enterprise_enrollment_screen_ =
55 views::Accelerator(ui::VKEY_P, false, true, true);
56 AddAccelerator(accel_login_screen_);
57 AddAccelerator(accel_network_screen_);
58 AddAccelerator(accel_update_screen_);
59 AddAccelerator(accel_image_screen_);
60 AddAccelerator(accel_eula_screen_);
61 AddAccelerator(accel_register_screen_);
62 AddAccelerator(accel_enterprise_enrollment_screen_);
63 #endif
64 AddAccelerator(accel_toggle_accessibility_);
65 AddAccelerator(accel_cancel_update_);
66 }
67
68 ~ContentView() {
69 content::NotificationService::current()->Notify(
70 chrome::NOTIFICATION_WIZARD_CONTENT_VIEW_DESTROYED,
71 content::NotificationService::AllSources(),
72 content::NotificationService::NoDetails());
73 }
74
75 bool AcceleratorPressed(const views::Accelerator& accel) {
76 WizardController* controller = WizardController::default_controller();
77 if (!controller)
78 return false;
79
80 if (accel == accel_toggle_accessibility_) {
81 chromeos::WizardAccessibilityHelper::GetInstance()->ToggleAccessibility();
82 } else if (accel == accel_cancel_update_) {
83 controller->CancelOOBEUpdate();
84 #if !defined(OFFICIAL_BUILD)
85 } else if (accel == accel_login_screen_) {
86 controller->ShowLoginScreen();
87 } else if (accel == accel_network_screen_) {
88 controller->ShowNetworkScreen();
89 } else if (accel == accel_update_screen_) {
90 controller->ShowUpdateScreen();
91 } else if (accel == accel_image_screen_) {
92 controller->ShowUserImageScreen();
93 } else if (accel == accel_eula_screen_) {
94 controller->ShowEulaScreen();
95 } else if (accel == accel_register_screen_) {
96 controller->ShowRegistrationScreen();
97 } else if (accel == accel_enterprise_enrollment_screen_) {
98 controller->ShowEnterpriseEnrollmentScreen();
99 #endif
100 } else {
101 return false;
102 }
103
104 return true;
105 }
106
107 virtual void Layout() {
108 for (int i = 0; i < child_count(); ++i) {
109 views::View* cur = child_at(i);
110 if (cur->IsVisible())
111 cur->SetBounds(0, 0, width(), height());
112 }
113 }
114
115 private:
116 #if !defined(OFFICIAL_BUILD)
117 views::Accelerator accel_login_screen_;
118 views::Accelerator accel_network_screen_;
119 views::Accelerator accel_update_screen_;
120 views::Accelerator accel_image_screen_;
121 views::Accelerator accel_eula_screen_;
122 views::Accelerator accel_register_screen_;
123 views::Accelerator accel_enterprise_enrollment_screen_;
124 #endif
125 views::Accelerator accel_toggle_accessibility_;
126 views::Accelerator accel_cancel_update_;
127
128 DISALLOW_COPY_AND_ASSIGN(ContentView);
129 };
130
131 } // namespace
132
133 ViewsOobeDisplay::ViewsOobeDisplay(const gfx::Rect& screen_bounds)
134 : widget_(NULL),
135 contents_(new ContentView()),
136 screen_bounds_(screen_bounds),
137 initial_show_(true),
138 screen_observer_(NULL) {
139 }
140
141 ViewsOobeDisplay::~ViewsOobeDisplay() {
142 if (widget_) {
143 widget_->Close();
144 widget_ = NULL;
145 }
146 }
147
148 void ViewsOobeDisplay::ShowScreen(WizardScreen* screen) {
149 bool force_widget_show = false;
150 views::Widget* window = NULL;
151
152 gfx::Rect current_bounds;
153 if (widget_)
154 current_bounds = widget_->GetClientAreaScreenBounds();
155
156 // Calls SetScreenSize() method.
157 screen->PrepareToShow();
158
159 gfx::Rect new_bounds = GetWizardScreenBounds(screen_size_.width(),
160 screen_size_.height());
161 if (new_bounds != current_bounds) {
162 if (widget_)
163 widget_->Close();
164 force_widget_show = true;
165 window = CreateScreenWindow(new_bounds, initial_show_);
166 }
167 screen->Show();
168 contents_->Layout();
169 contents_->SchedulePaint();
170 #if defined(TOOLKIT_USES_GTK)
171 if (force_widget_show) {
172 // This keeps the window from flashing at startup.
173 GdkWindow* gdk_window = window->GetNativeView()->window;
174 gdk_window_set_back_pixmap(gdk_window, NULL, false);
175 if (widget_)
176 widget_->Show();
177 }
178 #endif
179 }
180
181 void ViewsOobeDisplay::HideScreen(WizardScreen* screen) {
182 initial_show_ = false;
183 screen->Hide();
184 contents_->Layout();
185 contents_->SchedulePaint();
186 }
187
188 UpdateScreenActor* ViewsOobeDisplay::GetUpdateScreenActor() {
189 if (update_screen_actor_ == NULL)
190 update_screen_actor_.reset(new ViewsUpdateScreenActor(this));
191 return update_screen_actor_.get();
192 }
193
194 NetworkScreenActor* ViewsOobeDisplay::GetNetworkScreenActor() {
195 if (network_screen_actor_ == NULL)
196 network_screen_actor_.reset(new ViewsNetworkScreenActor(this));
197 return network_screen_actor_.get();
198 }
199
200 EulaScreenActor* ViewsOobeDisplay::GetEulaScreenActor() {
201 if (eula_screen_actor_ == NULL)
202 eula_screen_actor_.reset(new ViewsEulaScreenActor(this));
203 return eula_screen_actor_.get();
204 }
205
206 EnterpriseEnrollmentScreenActor* ViewsOobeDisplay::
207 GetEnterpriseEnrollmentScreenActor() {
208 if (enterprise_enrollment_screen_actor_ == NULL) {
209 enterprise_enrollment_screen_actor_.reset(
210 new ViewsEnterpriseEnrollmentScreenActor(this));
211 }
212 return enterprise_enrollment_screen_actor_.get();
213 }
214
215 UserImageScreenActor* ViewsOobeDisplay::GetUserImageScreenActor() {
216 if (user_image_screen_actor_ == NULL)
217 user_image_screen_actor_.reset(new ViewsUserImageScreenActor(this));
218 return user_image_screen_actor_.get();
219 }
220
221 ViewScreenDelegate* ViewsOobeDisplay::GetRegistrationScreenActor() {
222 return this;
223 }
224
225 ViewScreenDelegate* ViewsOobeDisplay::GetHTMLPageScreenActor() {
226 return this;
227 }
228
229 views::Widget* ViewsOobeDisplay::CreateScreenWindow(
230 const gfx::Rect& bounds, bool initial_show) {
231 widget_ = new views::Widget;
232 views::Widget::InitParams widget_params(
233 views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
234 // Window transparency makes background flicker through controls that
235 // are constantly updating its contents (like image view with video
236 // stream). Hence enabling double buffer.
237 widget_params.double_buffer = true;
238 widget_params.transparent = true;
239 widget_params.bounds = bounds;
240 widget_->Init(widget_params);
241 std::vector<int> params;
242 // For initial show WM would animate background window.
243 // Otherwise it stays unchanged.
244 params.push_back(initial_show);
245
246 #if defined(TOOLKIT_USES_GTK)
247 chromeos::WmIpc::instance()->SetWindowType(
248 widget_->GetNativeView(),
249 chromeos::WM_IPC_WINDOW_LOGIN_GUEST,
250 &params);
251 #endif
252
253 widget_->SetContentsView(contents_);
254 return widget_;
255 }
256
257 gfx::Rect ViewsOobeDisplay::GetWizardScreenBounds(int screen_width,
258 int screen_height) const {
259 int offset_x = (screen_bounds_.width() - screen_width) / 2;
260 int offset_y = (screen_bounds_.height() - screen_height) / 2;
261 int window_x = screen_bounds_.x() + offset_x;
262 int window_y = screen_bounds_.y() + offset_y;
263 return gfx::Rect(window_x, window_y, screen_width, screen_height);
264 }
265
266 views::View* ViewsOobeDisplay::GetWizardView() {
267 return contents_;
268 }
269
270 chromeos::ScreenObserver* ViewsOobeDisplay::GetObserver() {
271 return screen_observer_;
272 }
273
274 void ViewsOobeDisplay::SetScreenSize(const gfx::Size &screen_size) {
275 screen_size_ = screen_size;
276 }
277
278 void ViewsOobeDisplay::SetScreenObserver(ScreenObserver* screen_observer) {
279 screen_observer_ = screen_observer;
280 }
281
282 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/login/views_oobe_display.h ('k') | chrome/browser/chromeos/login/views_update_screen_actor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698