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

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

Issue 7779010: Implements frame sniffer to watch iframe loading state. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: clang fix Created 9 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 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/chromeos/login/webui_login_view.h" 5 #include "chrome/browser/chromeos/login/webui_login_view.h"
6 6
7 #include "base/utf_string_conversions.h"
8 #include "base/values.h"
7 #include "chrome/browser/chromeos/accessibility_util.h" 9 #include "chrome/browser/chromeos/accessibility_util.h"
8 #include "chrome/browser/chromeos/login/proxy_settings_dialog.h" 10 #include "chrome/browser/chromeos/login/proxy_settings_dialog.h"
9 #include "chrome/browser/chromeos/login/webui_login_display.h" 11 #include "chrome/browser/chromeos/login/webui_login_display.h"
10 #include "chrome/browser/chromeos/status/clock_menu_button.h" 12 #include "chrome/browser/chromeos/status/clock_menu_button.h"
11 #include "chrome/browser/chromeos/status/input_method_menu_button.h" 13 #include "chrome/browser/chromeos/status/input_method_menu_button.h"
12 #include "chrome/browser/chromeos/status/network_menu_button.h" 14 #include "chrome/browser/chromeos/status/network_menu_button.h"
13 #include "chrome/browser/chromeos/status/status_area_view.h" 15 #include "chrome/browser/chromeos/status/status_area_view.h"
14 #include "chrome/browser/chromeos/wm_ipc.h" 16 #include "chrome/browser/chromeos/wm_ipc.h"
15 #include "chrome/browser/profiles/profile_manager.h" 17 #include "chrome/browser/profiles/profile_manager.h"
16 #include "chrome/browser/ui/views/dom_view.h" 18 #include "chrome/browser/ui/views/dom_view.h"
19 #include "content/browser/renderer_host/render_view_host_observer.h"
17 #include "content/browser/tab_contents/tab_contents.h" 20 #include "content/browser/tab_contents/tab_contents.h"
21 #include "content/common/view_messages.h"
18 #include "ui/gfx/rect.h" 22 #include "ui/gfx/rect.h"
19 #include "ui/gfx/size.h" 23 #include "ui/gfx/size.h"
20 #include "views/widget/native_widget_gtk.h" 24 #include "views/widget/native_widget_gtk.h"
21 #include "views/widget/widget.h" 25 #include "views/widget/widget.h"
22 26
23 #if defined(TOUCH_UI) 27 #if defined(TOUCH_UI)
24 #include "chrome/browser/ui/touch/keyboard/keyboard_manager.h" 28 #include "chrome/browser/ui/touch/keyboard/keyboard_manager.h"
25 #endif 29 #endif
26 30
27 namespace { 31 namespace {
28 32
29 const char kViewClassName[] = "browser/chromeos/login/WebUILoginView"; 33 const char kViewClassName[] = "browser/chromeos/login/WebUILoginView";
30 34
31 // These strings must be kept in sync with handleAccelerator() in oobe.js. 35 // These strings must be kept in sync with handleAccelerator() in oobe.js.
32 const char kAccelNameAccessibility[] = "accessibility"; 36 const char kAccelNameAccessibility[] = "accessibility";
33 const char kAccelNameEnrollment[] = "enrollment"; 37 const char kAccelNameEnrollment[] = "enrollment";
34 38
39 // Observes IPC messages from the FrameSniffer and notifies JS if error
40 // appears.
41 class SnifferObserver : public RenderViewHostObserver {
42 public:
43 SnifferObserver(RenderViewHost* host, WebUI* webui)
44 : RenderViewHostObserver(host), webui_(webui) {
45 DCHECK(webui_);
46 Send(new ViewMsg_StartFrameSniffer(routing_id(),
47 UTF8ToUTF16("gaia-frame")));
48 }
49
50 virtual ~SnifferObserver() {}
51
52 // IPC::Channel::Listener implementation.
53 virtual bool OnMessageReceived(const IPC::Message& message) {
54 bool handled = true;
55 IPC_BEGIN_MESSAGE_MAP(SnifferObserver, message)
56 IPC_MESSAGE_HANDLER(ViewHostMsg_FrameLoadingError, OnError)
57 IPC_MESSAGE_UNHANDLED(handled = false)
58 IPC_END_MESSAGE_MAP()
59 return handled;
60 }
61
62 private:
63 void OnError(int error) {
64 base::FundamentalValue error_value(error);
65 webui_->CallJavascriptFunction("login.OfflineMessageScreen.onFrameError",
66 error_value);
67 }
68
69 WebUI* webui_;
70 };
71
35 } // namespace 72 } // namespace
36 73
37 namespace chromeos { 74 namespace chromeos {
38 75
39 // static 76 // static
40 const int WebUILoginView::kStatusAreaCornerPadding = 5; 77 const int WebUILoginView::kStatusAreaCornerPadding = 5;
41 78
42 // WebUILoginView public: ------------------------------------------------------ 79 // WebUILoginView public: ------------------------------------------------------
43 80
44 WebUILoginView::WebUILoginView() 81 WebUILoginView::WebUILoginView()
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 234
198 void WebUILoginView::OnDialogClosed() { 235 void WebUILoginView::OnDialogClosed() {
199 } 236 }
200 237
201 void WebUILoginView::OnLocaleChanged() { 238 void WebUILoginView::OnLocaleChanged() {
202 // Proxy settings dialog contains localized strings. 239 // Proxy settings dialog contains localized strings.
203 proxy_settings_dialog_.reset(); 240 proxy_settings_dialog_.reset();
204 SchedulePaint(); 241 SchedulePaint();
205 } 242 }
206 243
244 void WebUILoginView::OnRenderHostCreated(RenderViewHost* host) {
245 new SnifferObserver(host, GetWebUI());
246 }
247
207 void WebUILoginView::OnTabMainFrameLoaded() { 248 void WebUILoginView::OnTabMainFrameLoaded() {
208 } 249 }
209 250
210 void WebUILoginView::OnTabMainFrameFirstRender() { 251 void WebUILoginView::OnTabMainFrameFirstRender() {
211 InitStatusArea(); 252 InitStatusArea();
212 253
213 if (host_window_frozen_) { 254 if (host_window_frozen_) {
214 host_window_frozen_ = false; 255 host_window_frozen_ = false;
215 256
216 // Unfreezes the host window since tab is rendereed now. 257 // Unfreezes the host window since tab is rendereed now.
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 GetFocusManager()); 316 GetFocusManager());
276 317
277 // Make sure error bubble is cleared on keyboard event. This is needed 318 // Make sure error bubble is cleared on keyboard event. This is needed
278 // when the focus is inside an iframe. 319 // when the focus is inside an iframe.
279 WebUI* web_ui = GetWebUI(); 320 WebUI* web_ui = GetWebUI();
280 if (web_ui) 321 if (web_ui)
281 web_ui->CallJavascriptFunction("cr.ui.Oobe.clearErrors"); 322 web_ui->CallJavascriptFunction("cr.ui.Oobe.clearErrors");
282 } 323 }
283 324
284 } // namespace chromeos 325 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698