Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1954)

Unified Diff: chrome/browser/extensions/process_manager_browsertest.cc

Issue 1867683002: Disarm LockToOrigin for extensions under --isolate-extensions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add a stupid cast. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/process_manager_browsertest.cc
diff --git a/chrome/browser/extensions/process_manager_browsertest.cc b/chrome/browser/extensions/process_manager_browsertest.cc
index 6a0190913b0711aeecaab644fb485f743d99220c..3bddd9fc82eb7b553efcc9147ef1709e90fcff39 100644
--- a/chrome/browser/extensions/process_manager_browsertest.cc
+++ b/chrome/browser/extensions/process_manager_browsertest.cc
@@ -21,6 +21,7 @@
#include "chrome/test/base/ui_test_utils.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/render_frame_host.h"
+#include "content/public/browser/render_process_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/test_utils.h"
@@ -527,4 +528,53 @@ IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest, KeepaliveOnNetworkRequest) {
EXPECT_EQ(baseline_keepalive, pm->GetLazyKeepaliveCount(extension.get()));
}
+IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest, ExtensionProcessReuse) {
+ const size_t kNumExtensions = 3;
+ content::RenderProcessHost::SetMaxRendererProcessCount(kNumExtensions - 1);
+ ProcessManager* pm = ProcessManager::Get(profile());
+
+ std::set<int> processes;
+ std::set<const Extension*> installed_extensions;
+
+ // Create 3 extensions, which is more than the process limit.
+ for (int i = 1; i <= static_cast<int>(kNumExtensions); ++i) {
+ const Extension* extension =
+ CreateExtension(base::StringPrintf("Extension %d", i), true);
+ installed_extensions.insert(extension);
+ ExtensionHost* extension_host =
+ pm->GetBackgroundHostForExtension(extension->id());
+
+ EXPECT_EQ(extension->url(),
+ extension_host->host_contents()->GetSiteInstance()->GetSiteURL());
+
+ processes.insert(extension_host->render_process_host()->GetID());
+ }
+
+ EXPECT_EQ(kNumExtensions, installed_extensions.size());
+
+ if (content::AreAllSitesIsolatedForTesting()) {
+ EXPECT_EQ(kNumExtensions, processes.size()) << "Extension process reuse is "
+ "expected to be disabled in "
+ "--site-per-process.";
+ } else {
+ EXPECT_LT(processes.size(), kNumExtensions)
+ << "Expected extension process reuse, but none happened.";
+ }
+
+ // Interact with each extension background page by setting and reading back
+ // the cookie. This would fail for one of the two extensions in a shared
+ // process, if that process is locked to a single origin. This is a regression
+ // test for http://crbug.com/600441.
+ for (const Extension* extension : installed_extensions) {
+ content::DOMMessageQueue queue;
+ ExecuteScriptInBackgroundPageNoWait(
+ extension->id(),
+ "document.cookie = 'extension_cookie';"
+ "window.domAutomationController.send(document.cookie);");
+ std::string message;
+ ASSERT_TRUE(queue.WaitForMessage(&message));
+ EXPECT_EQ(message, "\"extension_cookie\"");
+ }
+}
+
} // namespace extensions
« no previous file with comments | « chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698