| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "extensions/browser/extension_message_filter.h" | 5 #include "extensions/browser/extension_message_filter.h" |
| 6 | 6 |
| 7 #include "components/crx_file/id_util.h" | 7 #include "components/crx_file/id_util.h" |
| 8 #include "content/public/browser/browser_thread.h" | 8 #include "content/public/browser/browser_thread.h" |
| 9 #include "content/public/browser/render_frame_host.h" | 9 #include "content/public/browser/render_frame_host.h" |
| 10 #include "content/public/browser/render_process_host.h" | 10 #include "content/public/browser/render_process_host.h" |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 | 170 |
| 171 manager->AttachGuest(render_process_id_, | 171 manager->AttachGuest(render_process_id_, |
| 172 routing_id, | 172 routing_id, |
| 173 element_instance_id, | 173 element_instance_id, |
| 174 guest_instance_id, | 174 guest_instance_id, |
| 175 params); | 175 params); |
| 176 } | 176 } |
| 177 | 177 |
| 178 void ExtensionMessageFilter::OnExtensionCreateMimeHandlerViewGuest( | 178 void ExtensionMessageFilter::OnExtensionCreateMimeHandlerViewGuest( |
| 179 int render_frame_id, | 179 int render_frame_id, |
| 180 const std::string& src, | 180 int element_instance_id, |
| 181 const std::string& content_url, | 181 const base::DictionaryValue& create_params) { |
| 182 const std::string& mime_type, | |
| 183 int element_instance_id) { | |
| 184 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 182 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 185 GuestViewManager* manager = | 183 GuestViewManager* manager = |
| 186 GuestViewManager::FromBrowserContext(browser_context_); | 184 GuestViewManager::FromBrowserContext(browser_context_); |
| 187 if (!manager) | 185 if (!manager) |
| 188 return; | 186 return; |
| 189 | 187 |
| 190 content::RenderFrameHost* rfh = | 188 content::RenderFrameHost* rfh = |
| 191 content::RenderFrameHost::FromID(render_process_id_, render_frame_id); | 189 content::RenderFrameHost::FromID(render_process_id_, render_frame_id); |
| 192 content::WebContents* embedder_web_contents = | 190 content::WebContents* embedder_web_contents = |
| 193 content::WebContents::FromRenderFrameHost(rfh); | 191 content::WebContents::FromRenderFrameHost(rfh); |
| 194 if (!embedder_web_contents) | 192 if (!embedder_web_contents) |
| 195 return; | 193 return; |
| 196 | 194 |
| 195 std::string src; |
| 196 int element_width; |
| 197 int element_height; |
| 198 create_params.GetString(mime_handler_view::kSrc, &src); |
| 199 create_params.GetInteger(guestview::kElementWidth, &element_width); |
| 200 create_params.GetInteger(guestview::kElementHeight, &element_height); |
| 201 gfx::Size element_size(element_width, element_height); |
| 202 |
| 197 GuestViewManager::WebContentsCreatedCallback callback = | 203 GuestViewManager::WebContentsCreatedCallback callback = |
| 198 base::Bind(&ExtensionMessageFilter::MimeHandlerViewGuestCreatedCallback, | 204 base::Bind(&ExtensionMessageFilter::MimeHandlerViewGuestCreatedCallback, |
| 199 this, | 205 this, |
| 200 element_instance_id, | 206 element_instance_id, |
| 201 render_process_id_, | 207 render_process_id_, |
| 202 render_frame_id, | 208 render_frame_id, |
| 203 src); | 209 src, |
| 204 base::DictionaryValue create_params; | 210 element_size); |
| 205 create_params.SetString(mime_handler_view::kMimeType, mime_type); | |
| 206 create_params.SetString(mime_handler_view::kSrc, src); | |
| 207 create_params.SetString(mime_handler_view::kContentUrl, content_url); | |
| 208 manager->CreateGuest(MimeHandlerViewGuest::Type, | 211 manager->CreateGuest(MimeHandlerViewGuest::Type, |
| 209 embedder_web_contents, | 212 embedder_web_contents, |
| 210 create_params, | 213 create_params, |
| 211 callback); | 214 callback); |
| 212 } | 215 } |
| 213 | 216 |
| 214 void ExtensionMessageFilter::OnExtensionRemoveLazyListener( | 217 void ExtensionMessageFilter::OnExtensionRemoveLazyListener( |
| 215 const std::string& extension_id, const std::string& event_name) { | 218 const std::string& extension_id, const std::string& event_name) { |
| 216 EventRouter* router = EventRouter::Get(browser_context_); | 219 EventRouter* router = EventRouter::Get(browser_context_); |
| 217 if (!router) | 220 if (!router) |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 weak_ptr_factory_.GetWeakPtr(), | 292 weak_ptr_factory_.GetWeakPtr(), |
| 290 routing_id, | 293 routing_id, |
| 291 params); | 294 params); |
| 292 } | 295 } |
| 293 | 296 |
| 294 void ExtensionMessageFilter::MimeHandlerViewGuestCreatedCallback( | 297 void ExtensionMessageFilter::MimeHandlerViewGuestCreatedCallback( |
| 295 int element_instance_id, | 298 int element_instance_id, |
| 296 int embedder_render_process_id, | 299 int embedder_render_process_id, |
| 297 int embedder_render_frame_id, | 300 int embedder_render_frame_id, |
| 298 const std::string& src, | 301 const std::string& src, |
| 302 const gfx::Size& element_size, |
| 299 content::WebContents* web_contents) { | 303 content::WebContents* web_contents) { |
| 300 GuestViewManager* manager = | 304 GuestViewManager* manager = |
| 301 GuestViewManager::FromBrowserContext(browser_context_); | 305 GuestViewManager::FromBrowserContext(browser_context_); |
| 302 if (!manager) | 306 if (!manager) |
| 303 return; | 307 return; |
| 304 | 308 |
| 305 MimeHandlerViewGuest* guest_view = | 309 MimeHandlerViewGuest* guest_view = |
| 306 MimeHandlerViewGuest::FromWebContents(web_contents); | 310 MimeHandlerViewGuest::FromWebContents(web_contents); |
| 307 if (!guest_view) | 311 if (!guest_view) |
| 308 return; | 312 return; |
| 309 int guest_instance_id = guest_view->guest_instance_id(); | 313 int guest_instance_id = guest_view->guest_instance_id(); |
| 310 | 314 |
| 311 content::RenderFrameHost* rfh = content::RenderFrameHost::FromID( | 315 content::RenderFrameHost* rfh = content::RenderFrameHost::FromID( |
| 312 embedder_render_process_id, embedder_render_frame_id); | 316 embedder_render_process_id, embedder_render_frame_id); |
| 313 if (!rfh) | 317 if (!rfh) |
| 314 return; | 318 return; |
| 315 | 319 |
| 316 base::DictionaryValue attach_params; | 320 base::DictionaryValue attach_params; |
| 317 attach_params.SetString(mime_handler_view::kSrc, src); | 321 attach_params.SetString(mime_handler_view::kSrc, src); |
| 322 attach_params.SetInteger(guestview::kElementWidth, element_size.width()); |
| 323 attach_params.SetInteger(guestview::kElementHeight, element_size.height()); |
| 318 manager->AttachGuest(embedder_render_process_id, | 324 manager->AttachGuest(embedder_render_process_id, |
| 319 rfh->GetRenderViewHost()->GetRoutingID(), | 325 rfh->GetRenderViewHost()->GetRoutingID(), |
| 320 element_instance_id, | 326 element_instance_id, |
| 321 guest_instance_id, | 327 guest_instance_id, |
| 322 attach_params); | 328 attach_params); |
| 323 | 329 |
| 324 rfh->Send( | 330 rfh->Send( |
| 325 new ExtensionMsg_CreateMimeHandlerViewGuestACK(element_instance_id)); | 331 new ExtensionMsg_CreateMimeHandlerViewGuestACK(element_instance_id)); |
| 326 } | 332 } |
| 327 | 333 |
| 328 } // namespace extensions | 334 } // namespace extensions |
| OLD | NEW |