diff options
Diffstat (limited to 'content/browser/web_contents/web_contents_impl.cc')
-rw-r--r-- | content/browser/web_contents/web_contents_impl.cc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc index 9ddb933..30d1190 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc @@ -682,6 +682,8 @@ bool WebContentsImpl::OnMessageReceived(RenderViewHost* render_view_host, OnSetSelectedColorInColorChooser) IPC_MESSAGE_HANDLER(ViewHostMsg_PepperPluginHung, OnPepperPluginHung) IPC_MESSAGE_HANDLER(ViewHostMsg_WebUISend, OnWebUISend) + IPC_MESSAGE_HANDLER(ViewHostMsg_RequestPpapiBrokerPermission, + OnRequestPpapiBrokerPermission) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP_EX() message_source_ = NULL; @@ -2240,6 +2242,33 @@ void WebContentsImpl::OnWebUISend(const GURL& source_url, delegate_->WebUISend(this, source_url, name, args); } +void WebContentsImpl::OnRequestPpapiBrokerPermission( + int request_id, + const GURL& url, + const FilePath& plugin_path) { + base::Callback<void(bool)> callback = + base::Bind(&WebContentsImpl::OnPpapiBrokerPermissionResult, + base::Unretained(this), request_id); + ObserverListBase<WebContentsObserver>::Iterator it(observers_); + WebContentsObserver* observer; + while ((observer = it.GetNext()) != NULL) { + if (observer->RequestPpapiBrokerPermission(this, url, plugin_path, + callback)) + return; + } + + // Fall back to allowing the request if no observer handled it. + OnPpapiBrokerPermissionResult(request_id, true); +} + +void WebContentsImpl::OnPpapiBrokerPermissionResult(int request_id, + bool result) { + RenderViewHostImpl* rvh = GetRenderViewHostImpl(); + rvh->Send(new ViewMsg_PpapiBrokerPermissionResult(rvh->GetRoutingID(), + request_id, + result)); +} + // Notifies the RenderWidgetHost instance about the fact that the page is // loading, or done loading and calls the base implementation. void WebContentsImpl::SetIsLoading(bool is_loading, |