| OLD | NEW |
| 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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/stl_util.h" | 6 #include "base/stl_util.h" |
| 7 #include "content/browser/service_worker/embedded_worker_instance.h" | 7 #include "content/browser/service_worker/embedded_worker_instance.h" |
| 8 #include "content/browser/service_worker/embedded_worker_registry.h" | 8 #include "content/browser/service_worker/embedded_worker_registry.h" |
| 9 #include "content/browser/service_worker/service_worker_context_core.h" | 9 #include "content/browser/service_worker/service_worker_context_core.h" |
| 10 #include "content/common/service_worker_messages.h" | 10 #include "content/common/service_worker_messages.h" |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 EXPECT_TRUE(worker->Stop()); | 98 EXPECT_TRUE(worker->Stop()); |
| 99 EXPECT_EQ(EmbeddedWorkerInstance::STOPPING, worker->status()); | 99 EXPECT_EQ(EmbeddedWorkerInstance::STOPPING, worker->status()); |
| 100 | 100 |
| 101 // Simulate an upcall from embedded worker to notify that it's stopped. | 101 // Simulate an upcall from embedded worker to notify that it's stopped. |
| 102 worker->OnStopped(); | 102 worker->OnStopped(); |
| 103 EXPECT_EQ(EmbeddedWorkerInstance::STOPPED, worker->status()); | 103 EXPECT_EQ(EmbeddedWorkerInstance::STOPPED, worker->status()); |
| 104 | 104 |
| 105 // Verify that we've sent two messages to start and terminate the worker. | 105 // Verify that we've sent two messages to start and terminate the worker. |
| 106 const MessageList& messages = fake_sender.sent_messages(); | 106 const MessageList& messages = fake_sender.sent_messages(); |
| 107 ASSERT_EQ(2U, messages.size()); | 107 ASSERT_EQ(2U, messages.size()); |
| 108 ASSERT_EQ(ServiceWorkerMsg_StartWorker::ID, messages[0]->type()); | 108 ASSERT_EQ(EmbeddedWorkerMsg_StartWorker::ID, messages[0]->type()); |
| 109 ASSERT_EQ(ServiceWorkerMsg_TerminateWorker::ID, messages[1]->type()); | 109 ASSERT_EQ(EmbeddedWorkerMsg_StopWorker::ID, messages[1]->type()); |
| 110 } | 110 } |
| 111 | 111 |
| 112 TEST_F(EmbeddedWorkerInstanceTest, ChooseProcess) { | 112 TEST_F(EmbeddedWorkerInstanceTest, ChooseProcess) { |
| 113 scoped_ptr<EmbeddedWorkerInstance> worker = | 113 scoped_ptr<EmbeddedWorkerInstance> worker = |
| 114 embedded_worker_registry()->CreateWorker(); | 114 embedded_worker_registry()->CreateWorker(); |
| 115 EXPECT_EQ(EmbeddedWorkerInstance::STOPPED, worker->status()); | 115 EXPECT_EQ(EmbeddedWorkerInstance::STOPPED, worker->status()); |
| 116 | 116 |
| 117 FakeSender fake_sender; | 117 FakeSender fake_sender; |
| 118 | 118 |
| 119 // Simulate adding processes to the worker. | 119 // Simulate adding processes to the worker. |
| 120 // Process 1 has 1 ref, 2 has 2 refs and 3 has 3 refs. | 120 // Process 1 has 1 ref, 2 has 2 refs and 3 has 3 refs. |
| 121 worker->AddProcessReference(1); | 121 worker->AddProcessReference(1); |
| 122 worker->AddProcessReference(2); | 122 worker->AddProcessReference(2); |
| 123 worker->AddProcessReference(2); | 123 worker->AddProcessReference(2); |
| 124 worker->AddProcessReference(3); | 124 worker->AddProcessReference(3); |
| 125 worker->AddProcessReference(3); | 125 worker->AddProcessReference(3); |
| 126 worker->AddProcessReference(3); | 126 worker->AddProcessReference(3); |
| 127 embedded_worker_registry()->AddChildProcessSender(1, &fake_sender); | 127 embedded_worker_registry()->AddChildProcessSender(1, &fake_sender); |
| 128 embedded_worker_registry()->AddChildProcessSender(2, &fake_sender); | 128 embedded_worker_registry()->AddChildProcessSender(2, &fake_sender); |
| 129 embedded_worker_registry()->AddChildProcessSender(3, &fake_sender); | 129 embedded_worker_registry()->AddChildProcessSender(3, &fake_sender); |
| 130 | 130 |
| 131 // Process 3 has the biggest # of references and it should be chosen. | 131 // Process 3 has the biggest # of references and it should be chosen. |
| 132 EXPECT_TRUE(worker->Start(1L, GURL("http://example.com/worker.js"))); | 132 EXPECT_TRUE(worker->Start(1L, GURL("http://example.com/worker.js"))); |
| 133 EXPECT_EQ(EmbeddedWorkerInstance::STARTING, worker->status()); | 133 EXPECT_EQ(EmbeddedWorkerInstance::STARTING, worker->status()); |
| 134 EXPECT_EQ(3, worker->process_id()); | 134 EXPECT_EQ(3, worker->process_id()); |
| 135 } | 135 } |
| 136 | 136 |
| 137 } // namespace content | 137 } // namespace content |
| OLD | NEW |