| OLD | NEW |
| 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/notifications/balloon_host.h" | 5 #include "chrome/browser/notifications/balloon_host.h" |
| 6 | 6 |
| 7 #include "chrome/browser/browser_list.h" | 7 #include "chrome/browser/browser_list.h" |
| 8 #include "chrome/browser/extensions/extension_message_handler.h" |
| 8 #include "chrome/browser/extensions/extension_process_manager.h" | 9 #include "chrome/browser/extensions/extension_process_manager.h" |
| 9 #include "chrome/browser/extensions/extension_service.h" | 10 #include "chrome/browser/extensions/extension_service.h" |
| 10 #include "chrome/browser/notifications/balloon.h" | 11 #include "chrome/browser/notifications/balloon.h" |
| 11 #include "chrome/browser/notifications/notification.h" | 12 #include "chrome/browser/notifications/notification.h" |
| 12 #include "chrome/browser/profiles/profile.h" | 13 #include "chrome/browser/profiles/profile.h" |
| 13 #include "chrome/browser/renderer_host/browser_render_process_host.h" | 14 #include "chrome/browser/renderer_host/browser_render_process_host.h" |
| 14 #include "chrome/browser/renderer_preferences_util.h" | 15 #include "chrome/browser/renderer_preferences_util.h" |
| 15 #include "chrome/browser/ui/webui/chrome_web_ui_factory.h" | 16 #include "chrome/browser/ui/webui/chrome_web_ui_factory.h" |
| 16 #include "chrome/common/bindings_policy.h" | 17 #include "chrome/common/bindings_policy.h" |
| 17 #include "chrome/common/render_messages.h" | 18 #include "chrome/common/render_messages.h" |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 // TODO(aa): Should this return the native view of the BalloonView*? | 64 // TODO(aa): Should this return the native view of the BalloonView*? |
| 64 return NULL; | 65 return NULL; |
| 65 } | 66 } |
| 66 | 67 |
| 67 TabContents* BalloonHost::associated_tab_contents() const { return NULL; } | 68 TabContents* BalloonHost::associated_tab_contents() const { return NULL; } |
| 68 | 69 |
| 69 const string16& BalloonHost::GetSource() const { | 70 const string16& BalloonHost::GetSource() const { |
| 70 return balloon_->notification().display_source(); | 71 return balloon_->notification().display_source(); |
| 71 } | 72 } |
| 72 | 73 |
| 74 bool BalloonHost::OnMessageReceived(const IPC::Message& message) { |
| 75 if (!extension_message_handler_.get()) |
| 76 return false; |
| 77 return extension_message_handler_->OnMessageReceived(message); |
| 78 } |
| 79 |
| 73 WebPreferences BalloonHost::GetWebkitPrefs() { | 80 WebPreferences BalloonHost::GetWebkitPrefs() { |
| 74 WebPreferences web_prefs = | 81 WebPreferences web_prefs = |
| 75 RenderViewHostDelegateHelper::GetWebkitPrefs(GetProfile(), | 82 RenderViewHostDelegateHelper::GetWebkitPrefs(GetProfile(), |
| 76 enable_web_ui_); | 83 enable_web_ui_); |
| 77 web_prefs.allow_scripts_to_close_windows = true; | 84 web_prefs.allow_scripts_to_close_windows = true; |
| 78 return web_prefs; | 85 return web_prefs; |
| 79 } | 86 } |
| 80 | 87 |
| 81 SiteInstance* BalloonHost::GetSiteInstance() const { | 88 SiteInstance* BalloonHost::GetSiteInstance() const { |
| 82 return site_instance_.get(); | 89 return site_instance_.get(); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 } | 132 } |
| 126 | 133 |
| 127 ViewType::Type BalloonHost::GetRenderViewType() const { | 134 ViewType::Type BalloonHost::GetRenderViewType() const { |
| 128 return ViewType::NOTIFICATION; | 135 return ViewType::NOTIFICATION; |
| 129 } | 136 } |
| 130 | 137 |
| 131 RenderViewHostDelegate::View* BalloonHost::GetViewDelegate() { | 138 RenderViewHostDelegate::View* BalloonHost::GetViewDelegate() { |
| 132 return this; | 139 return this; |
| 133 } | 140 } |
| 134 | 141 |
| 135 void BalloonHost::ProcessWebUIMessage( | |
| 136 const ExtensionHostMsg_DomMessage_Params& params) { | |
| 137 if (extension_function_dispatcher_.get()) { | |
| 138 extension_function_dispatcher_->HandleRequest(params); | |
| 139 } | |
| 140 } | |
| 141 | |
| 142 // RenderViewHostDelegate::View methods implemented to allow links to | 142 // RenderViewHostDelegate::View methods implemented to allow links to |
| 143 // open pages in new tabs. | 143 // open pages in new tabs. |
| 144 void BalloonHost::CreateNewWindow( | 144 void BalloonHost::CreateNewWindow( |
| 145 int route_id, | 145 int route_id, |
| 146 const ViewHostMsg_CreateWindow_Params& params) { | 146 const ViewHostMsg_CreateWindow_Params& params) { |
| 147 delegate_view_helper_.CreateNewWindow( | 147 delegate_view_helper_.CreateNewWindow( |
| 148 route_id, | 148 route_id, |
| 149 balloon_->profile(), | 149 balloon_->profile(), |
| 150 site_instance_.get(), | 150 site_instance_.get(), |
| 151 ChromeWebUIFactory::GetInstance()->GetWebUIType(balloon_->profile(), | 151 ChromeWebUIFactory::GetInstance()->GetWebUIType(balloon_->profile(), |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 rvh, this, balloon_->notification().content_url())); | 202 rvh, this, balloon_->notification().content_url())); |
| 203 } | 203 } |
| 204 if (extension_function_dispatcher_.get()) { | 204 if (extension_function_dispatcher_.get()) { |
| 205 rvh->AllowBindings(BindingsPolicy::EXTENSION); | 205 rvh->AllowBindings(BindingsPolicy::EXTENSION); |
| 206 rvh->set_is_extension_process(true); | 206 rvh->set_is_extension_process(true); |
| 207 const Extension* installed_app = | 207 const Extension* installed_app = |
| 208 GetProfile()->GetExtensionService()->GetInstalledApp( | 208 GetProfile()->GetExtensionService()->GetInstalledApp( |
| 209 balloon_->notification().content_url()); | 209 balloon_->notification().content_url()); |
| 210 static_cast<BrowserRenderProcessHost*>(rvh->process())->set_installed_app( | 210 static_cast<BrowserRenderProcessHost*>(rvh->process())->set_installed_app( |
| 211 installed_app); | 211 installed_app); |
| 212 |
| 213 extension_message_handler_.reset(new ExtensionMessageHandler( |
| 214 rvh->process()->id(), rvh, GetProfile())); |
| 215 extension_message_handler_->set_extension_function_dispatcher( |
| 216 extension_function_dispatcher_.get()); |
| 212 } else if (enable_web_ui_) { | 217 } else if (enable_web_ui_) { |
| 213 rvh->AllowBindings(BindingsPolicy::WEB_UI); | 218 rvh->AllowBindings(BindingsPolicy::WEB_UI); |
| 214 } | 219 } |
| 215 | 220 |
| 216 // Do platform-specific initialization. | 221 // Do platform-specific initialization. |
| 217 render_view_host_ = rvh; | 222 render_view_host_ = rvh; |
| 218 InitRenderWidgetHostView(); | 223 InitRenderWidgetHostView(); |
| 219 DCHECK(render_widget_host_view()); | 224 DCHECK(render_widget_host_view()); |
| 220 | 225 |
| 221 rvh->set_view(render_widget_host_view()); | 226 rvh->set_view(render_widget_host_view()); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 261 | 266 |
| 262 void BalloonHost::NotifyDisconnect() { | 267 void BalloonHost::NotifyDisconnect() { |
| 263 if (!should_notify_on_disconnect_) | 268 if (!should_notify_on_disconnect_) |
| 264 return; | 269 return; |
| 265 | 270 |
| 266 should_notify_on_disconnect_ = false; | 271 should_notify_on_disconnect_ = false; |
| 267 NotificationService::current()->Notify( | 272 NotificationService::current()->Notify( |
| 268 NotificationType::NOTIFY_BALLOON_DISCONNECTED, | 273 NotificationType::NOTIFY_BALLOON_DISCONNECTED, |
| 269 Source<BalloonHost>(this), NotificationService::NoDetails()); | 274 Source<BalloonHost>(this), NotificationService::NoDetails()); |
| 270 } | 275 } |
| OLD | NEW |