| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/browser_plugin/browser_plugin_guest.h" | 5 #include "content/browser/browser_plugin/browser_plugin_guest.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 // |guest_proxy_routing_id_| and perform any necessary cleanup on Detach | 141 // |guest_proxy_routing_id_| and perform any necessary cleanup on Detach |
| 142 // to enable this. | 142 // to enable this. |
| 143 // | 143 // |
| 144 // TODO(ekaramad): If the guest is embedded inside a cross-process <iframe> | 144 // TODO(ekaramad): If the guest is embedded inside a cross-process <iframe> |
| 145 // (e.g., <embed>-ed PDF), the reverse proxy will not be created and the | 145 // (e.g., <embed>-ed PDF), the reverse proxy will not be created and the |
| 146 // posted message's source attribute will be null which in turn breaks the | 146 // posted message's source attribute will be null which in turn breaks the |
| 147 // two-way messaging between the guest and the embedder. We should either | 147 // two-way messaging between the guest and the embedder. We should either |
| 148 // create a RenderFrameProxyHost for the reverse path, or implement | 148 // create a RenderFrameProxyHost for the reverse path, or implement |
| 149 // MimeHandlerViewGuest using OOPIF (https://crbug.com/659750). | 149 // MimeHandlerViewGuest using OOPIF (https://crbug.com/659750). |
| 150 SiteInstance* owner_site_instance = delegate_->GetOwnerSiteInstance(); | 150 SiteInstance* owner_site_instance = delegate_->GetOwnerSiteInstance(); |
| 151 if (!owner_site_instance) |
| 152 return MSG_ROUTING_NONE; |
| 151 int proxy_routing_id = GetWebContents() | 153 int proxy_routing_id = GetWebContents() |
| 152 ->GetFrameTree() | 154 ->GetFrameTree() |
| 153 ->root() | 155 ->root() |
| 154 ->render_manager() | 156 ->render_manager() |
| 155 ->CreateRenderFrameProxy(owner_site_instance); | 157 ->CreateRenderFrameProxy(owner_site_instance); |
| 156 guest_proxy_routing_id_ = RenderFrameProxyHost::FromID( | 158 guest_proxy_routing_id_ = RenderFrameProxyHost::FromID( |
| 157 owner_site_instance->GetProcess()->GetID(), proxy_routing_id) | 159 owner_site_instance->GetProcess()->GetID(), proxy_routing_id) |
| 158 ->GetRenderViewHost()->GetRoutingID(); | 160 ->GetRenderViewHost()->GetRoutingID(); |
| 159 | 161 |
| 160 return guest_proxy_routing_id_; | 162 return guest_proxy_routing_id_; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 172 last_seen_view_size_ = new_size; | 174 last_seen_view_size_ = new_size; |
| 173 } | 175 } |
| 174 } | 176 } |
| 175 | 177 |
| 176 void BrowserPluginGuest::SizeContents(const gfx::Size& new_size) { | 178 void BrowserPluginGuest::SizeContents(const gfx::Size& new_size) { |
| 177 GetWebContents()->GetView()->SizeContents(new_size); | 179 GetWebContents()->GetView()->SizeContents(new_size); |
| 178 } | 180 } |
| 179 | 181 |
| 180 void BrowserPluginGuest::WillDestroy() { | 182 void BrowserPluginGuest::WillDestroy() { |
| 181 is_in_destruction_ = true; | 183 is_in_destruction_ = true; |
| 184 |
| 185 // It is important that the WebContents is notified of destruction before |
| 186 // detaching. |
| 187 GetWebContents()->BrowserPluginGuestWillDestroy(); |
| 188 |
| 189 attached_ = false; |
| 182 owner_web_contents_ = nullptr; | 190 owner_web_contents_ = nullptr; |
| 183 attached_ = false; | 191 |
| 184 } | 192 } |
| 185 | 193 |
| 186 RenderWidgetHostImpl* BrowserPluginGuest::GetOwnerRenderWidgetHost() const { | 194 RenderWidgetHostImpl* BrowserPluginGuest::GetOwnerRenderWidgetHost() const { |
| 187 return static_cast<RenderWidgetHostImpl*>( | 195 return static_cast<RenderWidgetHostImpl*>( |
| 188 delegate_->GetOwnerRenderWidgetHost()); | 196 delegate_->GetOwnerRenderWidgetHost()); |
| 189 } | 197 } |
| 190 | 198 |
| 191 void BrowserPluginGuest::Init() { | 199 void BrowserPluginGuest::Init() { |
| 192 if (initialized_) | 200 if (initialized_) |
| 193 return; | 201 return; |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 425 GetSurfaceManager()->SatisfySequence(sequence); | 433 GetSurfaceManager()->SatisfySequence(sequence); |
| 426 } | 434 } |
| 427 | 435 |
| 428 void BrowserPluginGuest::OnRequireSequence( | 436 void BrowserPluginGuest::OnRequireSequence( |
| 429 int instance_id, | 437 int instance_id, |
| 430 const cc::SurfaceId& id, | 438 const cc::SurfaceId& id, |
| 431 const cc::SurfaceSequence& sequence) { | 439 const cc::SurfaceSequence& sequence) { |
| 432 GetSurfaceManager()->RequireSequence(id, sequence); | 440 GetSurfaceManager()->RequireSequence(id, sequence); |
| 433 } | 441 } |
| 434 | 442 |
| 435 bool BrowserPluginGuest::HandleFindForEmbedder( | |
| 436 int request_id, | |
| 437 const base::string16& search_text, | |
| 438 const blink::WebFindOptions& options) { | |
| 439 return delegate_->HandleFindForEmbedder(request_id, search_text, options); | |
| 440 } | |
| 441 | |
| 442 bool BrowserPluginGuest::HandleStopFindingForEmbedder(StopFindAction action) { | |
| 443 return delegate_->HandleStopFindingForEmbedder(action); | |
| 444 } | |
| 445 | |
| 446 void BrowserPluginGuest::ResendEventToEmbedder( | 443 void BrowserPluginGuest::ResendEventToEmbedder( |
| 447 const blink::WebInputEvent& event) { | 444 const blink::WebInputEvent& event) { |
| 448 if (!attached() || !owner_web_contents_) | 445 if (!attached() || !owner_web_contents_) |
| 449 return; | 446 return; |
| 450 | 447 |
| 451 DCHECK(browser_plugin_instance_id_); | 448 DCHECK(browser_plugin_instance_id_); |
| 452 RenderWidgetHostViewBase* view = | 449 RenderWidgetHostViewBase* view = |
| 453 static_cast<RenderWidgetHostViewBase*>(GetOwnerRenderWidgetHostView()); | 450 static_cast<RenderWidgetHostViewBase*>(GetOwnerRenderWidgetHostView()); |
| 454 | 451 |
| 455 gfx::Vector2d offset_from_embedder = guest_window_rect_.OffsetFromOrigin(); | 452 gfx::Vector2d offset_from_embedder = guest_window_rect_.OffsetFromOrigin(); |
| (...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1061 range, character_bounds); | 1058 range, character_bounds); |
| 1062 } | 1059 } |
| 1063 #endif | 1060 #endif |
| 1064 | 1061 |
| 1065 void BrowserPluginGuest::SetContextMenuPosition(const gfx::Point& position) { | 1062 void BrowserPluginGuest::SetContextMenuPosition(const gfx::Point& position) { |
| 1066 if (delegate_) | 1063 if (delegate_) |
| 1067 delegate_->SetContextMenuPosition(position); | 1064 delegate_->SetContextMenuPosition(position); |
| 1068 } | 1065 } |
| 1069 | 1066 |
| 1070 } // namespace content | 1067 } // namespace content |
| OLD | NEW |