| Index: chrome/browser/chromeos/login/webui_login_view.cc
|
| diff --git a/chrome/browser/chromeos/login/webui_login_view.cc b/chrome/browser/chromeos/login/webui_login_view.cc
|
| index 6445ea63b92eeadd69511c404af590b690ab6ca1..0fa0ffb5e02d2fa515325e349dc2f21cadf1ef13 100644
|
| --- a/chrome/browser/chromeos/login/webui_login_view.cc
|
| +++ b/chrome/browser/chromeos/login/webui_login_view.cc
|
| @@ -4,6 +4,8 @@
|
|
|
| #include "chrome/browser/chromeos/login/webui_login_view.h"
|
|
|
| +#include "base/utf_string_conversions.h"
|
| +#include "base/values.h"
|
| #include "chrome/browser/chromeos/accessibility_util.h"
|
| #include "chrome/browser/chromeos/login/proxy_settings_dialog.h"
|
| #include "chrome/browser/chromeos/login/webui_login_display.h"
|
| @@ -14,7 +16,9 @@
|
| #include "chrome/browser/chromeos/wm_ipc.h"
|
| #include "chrome/browser/profiles/profile_manager.h"
|
| #include "chrome/browser/ui/views/dom_view.h"
|
| +#include "content/browser/renderer_host/render_view_host_observer.h"
|
| #include "content/browser/tab_contents/tab_contents.h"
|
| +#include "content/common/view_messages.h"
|
| #include "ui/gfx/rect.h"
|
| #include "ui/gfx/size.h"
|
| #include "views/widget/native_widget_gtk.h"
|
| @@ -32,6 +36,39 @@ const char kViewClassName[] = "browser/chromeos/login/WebUILoginView";
|
| const char kAccelNameAccessibility[] = "accessibility";
|
| const char kAccelNameEnrollment[] = "enrollment";
|
|
|
| +// Observes IPC messages from the FrameSniffer and notifies JS if error
|
| +// appears.
|
| +class SnifferObserver : public RenderViewHostObserver {
|
| + public:
|
| + SnifferObserver(RenderViewHost* host, WebUI* webui)
|
| + : RenderViewHostObserver(host), webui_(webui) {
|
| + DCHECK(webui_);
|
| + Send(new ViewMsg_StartFrameSniffer(routing_id(),
|
| + UTF8ToUTF16("gaia-frame")));
|
| + }
|
| +
|
| + virtual ~SnifferObserver() {}
|
| +
|
| + // IPC::Channel::Listener implementation.
|
| + virtual bool OnMessageReceived(const IPC::Message& message) {
|
| + bool handled = true;
|
| + IPC_BEGIN_MESSAGE_MAP(SnifferObserver, message)
|
| + IPC_MESSAGE_HANDLER(ViewHostMsg_FrameLoadingError, OnError)
|
| + IPC_MESSAGE_UNHANDLED(handled = false)
|
| + IPC_END_MESSAGE_MAP()
|
| + return handled;
|
| + }
|
| +
|
| + private:
|
| + void OnError(int error) {
|
| + base::FundamentalValue error_value(error);
|
| + webui_->CallJavascriptFunction("login.OfflineMessageScreen.onFrameError",
|
| + error_value);
|
| + }
|
| +
|
| + WebUI* webui_;
|
| +};
|
| +
|
| } // namespace
|
|
|
| namespace chromeos {
|
| @@ -204,6 +241,10 @@ void WebUILoginView::OnLocaleChanged() {
|
| SchedulePaint();
|
| }
|
|
|
| +void WebUILoginView::OnRenderHostCreated(RenderViewHost* host) {
|
| + new SnifferObserver(host, GetWebUI());
|
| +}
|
| +
|
| void WebUILoginView::OnTabMainFrameLoaded() {
|
| }
|
|
|
|
|