Index: content/browser/browser_plugin/browser_plugin_guest_manager.cc |
diff --git a/content/browser/browser_plugin/browser_plugin_guest_manager.cc b/content/browser/browser_plugin/browser_plugin_guest_manager.cc |
index 3f6963cd335385024a792a6dd0042a3981bcacb8..7e2ad44eee65c5ffb552245926b000b5153e4b3f 100644 |
--- a/content/browser/browser_plugin/browser_plugin_guest_manager.cc |
+++ b/content/browser/browser_plugin/browser_plugin_guest_manager.cc |
@@ -4,7 +4,6 @@ |
#include "content/browser/browser_plugin/browser_plugin_guest_manager.h" |
-#include "base/command_line.h" |
#include "content/browser/browser_plugin/browser_plugin_guest.h" |
#include "content/browser/browser_plugin/browser_plugin_host_factory.h" |
#include "content/browser/renderer_host/render_view_host_impl.h" |
@@ -13,7 +12,6 @@ |
#include "content/common/browser_plugin/browser_plugin_messages.h" |
#include "content/common/content_export.h" |
#include "content/public/browser/user_metrics.h" |
-#include "content/public/common/content_switches.h" |
#include "content/public/common/result_codes.h" |
#include "content/public/common/url_constants.h" |
#include "content/public/common/url_utils.h" |
@@ -44,7 +42,6 @@ BrowserPluginGuest* BrowserPluginGuestManager::CreateGuest( |
int instance_id, |
const BrowserPluginHostMsg_Attach_Params& params, |
scoped_ptr<base::DictionaryValue> extra_params) { |
- SiteInstance* guest_site_instance = NULL; |
RenderProcessHost* embedder_process_host = |
embedder_site_instance->GetProcess(); |
// Validate that the partition id coming from the renderer is valid UTF-8, |
@@ -59,54 +56,39 @@ BrowserPluginGuest* BrowserPluginGuestManager::CreateGuest( |
return NULL; |
} |
- const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
- if (command_line.HasSwitch(switches::kSitePerProcess)) { |
- // When --site-per-process is specified, the behavior of BrowserPlugin |
- // as <webview> is broken and we use it for rendering out-of-process |
- // iframes instead. We use the src URL sent by the renderer to find the |
- // right process in which to place this instance. |
- // Note: Since BrowserPlugin doesn't support cross-process navigation, |
- // the instance will stay in the initially assigned process, regardless |
- // of the site it is navigated to. |
- // TODO(nasko): Fix this, and such that cross-process navigations are |
- // supported. |
- guest_site_instance = |
- embedder_site_instance->GetRelatedSiteInstance(GURL(params.src)); |
- } else { |
- // We usually require BrowserPlugins to be hosted by a storage isolated |
- // extension. We treat WebUI pages as a special case if they host the |
- // BrowserPlugin in a component extension iframe. In that case, we use the |
- // iframe's URL to determine the extension. |
- const GURL& embedder_site_url = embedder_site_instance->GetSiteURL(); |
- GURL validated_frame_url(params.embedder_frame_url); |
- RenderViewHost::FilterURL( |
- embedder_process_host, false, &validated_frame_url); |
- const std::string& host = content::HasWebUIScheme(embedder_site_url) ? |
- validated_frame_url.host() : embedder_site_url.host(); |
+ // We usually require BrowserPlugins to be hosted by a storage isolated |
+ // extension. We treat WebUI pages as a special case if they host the |
+ // BrowserPlugin in a component extension iframe. In that case, we use the |
+ // iframe's URL to determine the extension. |
+ const GURL& embedder_site_url = embedder_site_instance->GetSiteURL(); |
+ GURL validated_frame_url(params.embedder_frame_url); |
+ RenderViewHost::FilterURL( |
+ embedder_process_host, false, &validated_frame_url); |
+ const std::string& host = content::HasWebUIScheme(embedder_site_url) ? |
+ validated_frame_url.host() : embedder_site_url.host(); |
- std::string url_encoded_partition = net::EscapeQueryParamValue( |
- params.storage_partition_id, false); |
- // The SiteInstance of a given webview tag is based on the fact that it's |
- // a guest process in addition to which platform application the tag |
- // belongs to and what storage partition is in use, rather than the URL |
- // that the tag is being navigated to. |
- GURL guest_site(base::StringPrintf("%s://%s/%s?%s", |
- kGuestScheme, |
- host.c_str(), |
- params.persist_storage ? "persist" : "", |
- url_encoded_partition.c_str())); |
+ std::string url_encoded_partition = net::EscapeQueryParamValue( |
+ params.storage_partition_id, false); |
+ // The SiteInstance of a given webview tag is based on the fact that it's |
+ // a guest process in addition to which platform application the tag |
+ // belongs to and what storage partition is in use, rather than the URL |
+ // that the tag is being navigated to. |
+ GURL guest_site(base::StringPrintf("%s://%s/%s?%s", |
+ kGuestScheme, |
+ host.c_str(), |
+ params.persist_storage ? "persist" : "", |
+ url_encoded_partition.c_str())); |
- // If we already have a webview tag in the same app using the same storage |
- // partition, we should use the same SiteInstance so the existing tag and |
- // the new tag can script each other. |
- guest_site_instance = GetGuestSiteInstance(guest_site); |
- if (!guest_site_instance) { |
- // Create the SiteInstance in a new BrowsingInstance, which will ensure |
- // that webview tags are also not allowed to send messages across |
- // different partitions. |
- guest_site_instance = SiteInstance::CreateForURL( |
- embedder_site_instance->GetBrowserContext(), guest_site); |
- } |
+ // If we already have a webview tag in the same app using the same storage |
+ // partition, we should use the same SiteInstance so the existing tag and |
+ // the new tag can script each other. |
+ SiteInstance* guest_site_instance = GetGuestSiteInstance(guest_site); |
+ if (!guest_site_instance) { |
+ // Create the SiteInstance in a new BrowsingInstance, which will ensure |
+ // that webview tags are also not allowed to send messages across |
+ // different partitions. |
+ guest_site_instance = SiteInstance::CreateForURL( |
+ embedder_site_instance->GetBrowserContext(), guest_site); |
} |
return WebContentsImpl::CreateGuest( |