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

Side by Side 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 unified diff | 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 »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/process_manager.h" 5 #include "extensions/browser/process_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/scoped_ptr.h"
13 #include "base/run_loop.h" 13 #include "base/run_loop.h"
14 #include "chrome/browser/extensions/browser_action_test_util.h" 14 #include "chrome/browser/extensions/browser_action_test_util.h"
15 #include "chrome/browser/extensions/extension_browsertest.h" 15 #include "chrome/browser/extensions/extension_browsertest.h"
16 #include "chrome/browser/extensions/extension_service.h" 16 #include "chrome/browser/extensions/extension_service.h"
17 #include "chrome/browser/extensions/test_extension_dir.h" 17 #include "chrome/browser/extensions/test_extension_dir.h"
18 #include "chrome/browser/ui/tabs/tab_strip_model.h" 18 #include "chrome/browser/ui/tabs/tab_strip_model.h"
19 #include "chrome/common/extensions/extension_process_policy.h" 19 #include "chrome/common/extensions/extension_process_policy.h"
20 #include "chrome/test/base/in_process_browser_test.h" 20 #include "chrome/test/base/in_process_browser_test.h"
21 #include "chrome/test/base/ui_test_utils.h" 21 #include "chrome/test/base/ui_test_utils.h"
22 #include "content/public/browser/notification_service.h" 22 #include "content/public/browser/notification_service.h"
23 #include "content/public/browser/render_frame_host.h" 23 #include "content/public/browser/render_frame_host.h"
24 #include "content/public/browser/render_process_host.h"
24 #include "content/public/browser/web_contents.h" 25 #include "content/public/browser/web_contents.h"
25 #include "content/public/test/browser_test_utils.h" 26 #include "content/public/test/browser_test_utils.h"
26 #include "content/public/test/test_utils.h" 27 #include "content/public/test/test_utils.h"
27 #include "extensions/common/value_builder.h" 28 #include "extensions/common/value_builder.h"
28 #include "extensions/test/background_page_watcher.h" 29 #include "extensions/test/background_page_watcher.h"
29 #include "net/dns/mock_host_resolver.h" 30 #include "net/dns/mock_host_resolver.h"
30 #include "net/test/embedded_test_server/embedded_test_server.h" 31 #include "net/test/embedded_test_server/embedded_test_server.h"
31 32
32 namespace extensions { 33 namespace extensions {
33 34
(...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after
520 EXPECT_EQ(baseline_keepalive + 1, pm->GetLazyKeepaliveCount(extension.get())); 521 EXPECT_EQ(baseline_keepalive + 1, pm->GetLazyKeepaliveCount(extension.get()));
521 pm->OnNetworkRequestDone(frame_host, 1); 522 pm->OnNetworkRequestDone(frame_host, 1);
522 EXPECT_EQ(baseline_keepalive, pm->GetLazyKeepaliveCount(extension.get())); 523 EXPECT_EQ(baseline_keepalive, pm->GetLazyKeepaliveCount(extension.get()));
523 524
524 // Simulate only a request completion for this ID and ensure it doesn't result 525 // Simulate only a request completion for this ID and ensure it doesn't result
525 // in keepalive decrement. 526 // in keepalive decrement.
526 pm->OnNetworkRequestDone(frame_host, 2); 527 pm->OnNetworkRequestDone(frame_host, 2);
527 EXPECT_EQ(baseline_keepalive, pm->GetLazyKeepaliveCount(extension.get())); 528 EXPECT_EQ(baseline_keepalive, pm->GetLazyKeepaliveCount(extension.get()));
528 } 529 }
529 530
531 IN_PROC_BROWSER_TEST_F(ProcessManagerBrowserTest, ExtensionProcessReuse) {
532 const size_t kNumExtensions = 3;
533 content::RenderProcessHost::SetMaxRendererProcessCount(kNumExtensions - 1);
534 ProcessManager* pm = ProcessManager::Get(profile());
535
536 std::set<int> processes;
537 std::set<const Extension*> installed_extensions;
538
539 // Create 3 extensions, which is more than the process limit.
540 for (int i = 1; i <= static_cast<int>(kNumExtensions); ++i) {
541 const Extension* extension =
542 CreateExtension(base::StringPrintf("Extension %d", i), true);
543 installed_extensions.insert(extension);
544 ExtensionHost* extension_host =
545 pm->GetBackgroundHostForExtension(extension->id());
546
547 EXPECT_EQ(extension->url(),
548 extension_host->host_contents()->GetSiteInstance()->GetSiteURL());
549
550 processes.insert(extension_host->render_process_host()->GetID());
551 }
552
553 EXPECT_EQ(kNumExtensions, installed_extensions.size());
554
555 if (content::AreAllSitesIsolatedForTesting()) {
556 EXPECT_EQ(kNumExtensions, processes.size()) << "Extension process reuse is "
557 "expected to be disabled in "
558 "--site-per-process.";
559 } else {
560 EXPECT_LT(processes.size(), kNumExtensions)
561 << "Expected extension process reuse, but none happened.";
562 }
563
564 // Interact with each extension background page by setting and reading back
565 // the cookie. This would fail for one of the two extensions in a shared
566 // process, if that process is locked to a single origin. This is a regression
567 // test for http://crbug.com/600441.
568 for (const Extension* extension : installed_extensions) {
569 content::DOMMessageQueue queue;
570 ExecuteScriptInBackgroundPageNoWait(
571 extension->id(),
572 "document.cookie = 'extension_cookie';"
573 "window.domAutomationController.send(document.cookie);");
574 std::string message;
575 ASSERT_TRUE(queue.WaitForMessage(&message));
576 EXPECT_EQ(message, "\"extension_cookie\"");
577 }
578 }
579
530 } // namespace extensions 580 } // namespace extensions
OLDNEW
« 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