Index: content/browser/web_contents/web_contents_impl.cc |
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc |
index 44a2a78bffa46a2f24a4b6bc49403bf4593f99cd..595bdc10043e58d74b1db9de274e590c2316490e 100644 |
--- a/content/browser/web_contents/web_contents_impl.cc |
+++ b/content/browser/web_contents/web_contents_impl.cc |
@@ -437,17 +437,19 @@ WebContentsImpl* WebContentsImpl::CreateWithOpener( |
WebContentsImpl* opener) { |
TRACE_EVENT0("browser", "WebContentsImpl::CreateWithOpener"); |
WebContentsImpl* new_contents = new WebContentsImpl( |
- params.browser_context, opener); |
+ params.browser_context, params.opener_suppressed ? NULL : opener); |
if (params.guest_instance_id) { |
- scoped_ptr<base::DictionaryValue> extra_params( |
- params.guest_extra_params->DeepCopy()); |
+ scoped_ptr<base::DictionaryValue> extra_params; |
+ if (params.guest_extra_params) |
+ extra_params.reset(params.guest_extra_params->DeepCopy()); |
// This makes |new_contents| act as a guest. |
// For more info, see comment above class BrowserPluginGuest. |
BrowserPluginGuest::Create(params.guest_instance_id, |
params.site_instance, |
new_contents, |
- extra_params.Pass()); |
+ extra_params.Pass(), |
+ opener ? opener->GetBrowserPluginGuest() : NULL); |
// We are instantiating a WebContents for browser plugin. Set its subframe |
// bit to true. |
new_contents->is_subframe_ = true; |
@@ -651,20 +653,6 @@ RenderViewHost* WebContentsImpl::GetRenderViewHost() const { |
return GetRenderManager()->current_host(); |
} |
-WebContents* WebContentsImpl::GetEmbedderWebContents() const { |
- BrowserPluginGuest* guest = GetBrowserPluginGuest(); |
- if (guest) |
- return guest->embedder_web_contents(); |
- return NULL; |
-} |
- |
-int WebContentsImpl::GetEmbeddedInstanceID() const { |
- BrowserPluginGuest* guest = GetBrowserPluginGuest(); |
- if (guest) |
- return guest->instance_id(); |
- return 0; |
-} |
- |
int WebContentsImpl::GetRoutingID() const { |
if (!GetRenderViewHost()) |
return MSG_ROUTING_NONE; |
@@ -1403,34 +1391,26 @@ void WebContentsImpl::CreateNewWindow( |
// Create the new web contents. This will automatically create the new |
// WebContentsView. In the future, we may want to create the view separately. |
- WebContentsImpl* new_contents = |
- new WebContentsImpl(GetBrowserContext(), |
- params.opener_suppressed ? NULL : this); |
- |
- new_contents->GetController().SetSessionStorageNamespace( |
- partition_id, |
- session_storage_namespace); |
CreateParams create_params(GetBrowserContext(), site_instance.get()); |
create_params.routing_id = route_id; |
create_params.main_frame_routing_id = main_frame_route_id; |
+ create_params.opener = this; |
+ create_params.opener_suppressed = params.opener_suppressed; |
+ if (params.disposition == NEW_BACKGROUND_TAB) |
+ create_params.initially_hidden = true; |
+ |
if (!is_guest) { |
create_params.context = view_->GetNativeView(); |
create_params.initial_size = GetContainerBounds().size(); |
} else { |
- // This makes |new_contents| act as a guest. |
- // For more info, see comment above class BrowserPluginGuest. |
- int instance_id = |
+ create_params.guest_instance_id = |
GetBrowserContext()->GetGuestManager()->GetNextInstanceID(); |
- WebContentsImpl* new_contents_impl = |
- static_cast<WebContentsImpl*>(new_contents); |
- BrowserPluginGuest::CreateWithOpener(instance_id, |
- new_contents_impl->opener() != NULL, |
- new_contents_impl, |
- GetBrowserPluginGuest()); |
} |
- if (params.disposition == NEW_BACKGROUND_TAB) |
- create_params.initially_hidden = true; |
- new_contents->Init(create_params); |
+ WebContentsImpl* new_contents = static_cast<WebContentsImpl*>( |
+ WebContents::Create(create_params)); |
+ new_contents->GetController().SetSessionStorageNamespace( |
+ partition_id, |
+ session_storage_namespace); |
new_contents->RenderViewCreated(new_contents->GetRenderViewHost()); |
// Save the window for later if we're not suppressing the opener (since it |