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

Unified Diff: trunk/src/content/browser/service_worker/embedded_worker_instance_unittest.cc

Issue 296053013: Revert 272142 "Save running SW instance info, including its Site..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 7 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
Index: trunk/src/content/browser/service_worker/embedded_worker_instance_unittest.cc
===================================================================
--- trunk/src/content/browser/service_worker/embedded_worker_instance_unittest.cc (revision 272148)
+++ trunk/src/content/browser/service_worker/embedded_worker_instance_unittest.cc (working copy)
@@ -10,14 +10,8 @@
#include "content/browser/service_worker/embedded_worker_test_helper.h"
#include "content/browser/service_worker/service_worker_context_core.h"
#include "content/browser/service_worker/service_worker_context_wrapper.h"
-#include "content/browser/site_instance_impl.h"
#include "content/common/service_worker/embedded_worker_messages.h"
-#include "content/public/browser/storage_partition.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/test/test_browser_context.h"
#include "content/public/test/test_browser_thread_bundle.h"
-#include "content/public/test/test_renderer_host.h"
-#include "content/public/test/web_contents_tester.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace content {
@@ -135,74 +129,38 @@
ipc_sink()->GetUniqueMessageMatching(EmbeddedWorkerMsg_StartWorker::ID));
}
-static scoped_ptr<WebContents> CreateNavigatedWebContents(
- BrowserContext* browser_context,
- const GURL& url) {
- scoped_ptr<WebContents> result(WebContentsTester::CreateTestWebContents(
- browser_context, SiteInstance::Create(browser_context)));
- WebContentsTester::For(result.get())->NavigateAndCommit(url);
- return result.Pass();
-}
+TEST_F(EmbeddedWorkerInstanceTest, ChooseProcess) {
+ scoped_ptr<EmbeddedWorkerInstance> worker =
+ embedded_worker_registry()->CreateWorker();
+ EXPECT_EQ(EmbeddedWorkerInstance::STOPPED, worker->status());
-TEST(EmbeddedWorkerInstanceTestWithMockProcesses, ChooseProcess) {
- TestBrowserThreadBundle thread_bundle(TestBrowserThreadBundle::IO_MAINLOOP);
- IPC::TestSink test_sink;
- TestBrowserContext browser_context;
- RenderViewHostTestEnabler rvh_test_enabler;
+ // Simulate adding processes to the worker.
+ // Process 1 has 1 ref, 2 has 2 refs and 3 has 3 refs.
+ const int embedded_worker_id = worker->embedded_worker_id();
+ helper_->SimulateAddProcessToWorker(embedded_worker_id, 1);
+ helper_->SimulateAddProcessToWorker(embedded_worker_id, 2);
+ helper_->SimulateAddProcessToWorker(embedded_worker_id, 2);
+ helper_->SimulateAddProcessToWorker(embedded_worker_id, 3);
+ helper_->SimulateAddProcessToWorker(embedded_worker_id, 3);
+ helper_->SimulateAddProcessToWorker(embedded_worker_id, 3);
- {
- scoped_ptr<WebContents> web_contents1(CreateNavigatedWebContents(
- &browser_context, GURL("https://example1.com/")));
- scoped_ptr<WebContents> web_contents2(CreateNavigatedWebContents(
- &browser_context, GURL("https://example2.com/")));
- scoped_ptr<WebContents> web_contents3(CreateNavigatedWebContents(
- &browser_context, GURL("https://example3.com/")));
- const int pid1 = web_contents1->GetRenderProcessHost()->GetID();
- const int pid2 = web_contents2->GetRenderProcessHost()->GetID();
- const int pid3 = web_contents3->GetRenderProcessHost()->GetID();
- ASSERT_NE(pid1, pid2);
- ASSERT_NE(pid1, pid3);
- ASSERT_NE(pid2, pid3);
+ // Process 3 has the biggest # of references and it should be chosen.
+ ServiceWorkerStatusCode status;
+ base::RunLoop run_loop;
+ worker->Start(
+ 1L,
+ GURL("http://example.com/*"),
+ GURL("http://example.com/worker.js"),
+ std::vector<int>(),
+ base::Bind(&SaveStatusAndCall, &status, run_loop.QuitClosure()));
+ run_loop.Run();
+ EXPECT_EQ(SERVICE_WORKER_OK, status) << ServiceWorkerStatusToString(status);
+ EXPECT_EQ(EmbeddedWorkerInstance::STARTING, worker->status());
+ EXPECT_EQ(3, worker->process_id());
- scoped_refptr<ServiceWorkerContextWrapper> sw_context_wrapper =
- static_cast<ServiceWorkerContextWrapper*>(
- BrowserContext::GetStoragePartition(
- &browser_context, web_contents1->GetSiteInstance())
- ->GetServiceWorkerContext());
-
- scoped_ptr<EmbeddedWorkerInstance> worker = sw_context_wrapper->context()
- ->embedded_worker_registry()
- ->CreateWorker();
- EXPECT_EQ(EmbeddedWorkerInstance::STOPPED, worker->status());
-
- // Simulate adding processes to the worker.
- // Process 1 has 1 ref, 2 has 2 refs and 3 has 3 refs.
- worker->AddProcessReference(pid1);
- worker->AddProcessReference(pid2);
- worker->AddProcessReference(pid2);
- worker->AddProcessReference(pid3);
- worker->AddProcessReference(pid3);
- worker->AddProcessReference(pid3);
- sw_context_wrapper->context()
- ->embedded_worker_registry()
- ->AddChildProcessSender(pid3, &test_sink);
-
- // Process 3 has the biggest # of references and it should be chosen.
- ServiceWorkerStatusCode status;
- base::RunLoop run_loop;
- worker->Start(
- 1L,
- GURL("http://example.com/*"),
- GURL("http://example.com/worker.js"),
- std::vector<int>(),
- base::Bind(&SaveStatusAndCall, &status, run_loop.QuitClosure()));
- run_loop.Run();
- EXPECT_EQ(SERVICE_WORKER_OK, status) << ServiceWorkerStatusToString(status);
- EXPECT_EQ(EmbeddedWorkerInstance::STARTING, worker->status());
- EXPECT_EQ(pid3, worker->process_id());
- }
-
+ // Wait until started message is sent back.
base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(EmbeddedWorkerInstance::RUNNING, worker->status());
}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698