Index: content/browser/devtools/embedded_worker_devtools_manager_unittest.cc |
diff --git a/content/browser/devtools/embedded_worker_devtools_manager_unittest.cc b/content/browser/devtools/embedded_worker_devtools_manager_unittest.cc |
index f9fa31af0c1178e8d81d32864fecd55905e688a3..347b6f39f4db067fa6fd517a3f2d5915966a6100 100644 |
--- a/content/browser/devtools/embedded_worker_devtools_manager_unittest.cc |
+++ b/content/browser/devtools/embedded_worker_devtools_manager_unittest.cc |
@@ -9,6 +9,7 @@ |
#include "base/run_loop.h" |
#include "content/browser/browser_thread_impl.h" |
#include "content/browser/devtools/devtools_manager_impl.h" |
+#include "content/browser/devtools/embedded_worker_devtools_agent_host.h" |
#include "content/browser/shared_worker/shared_worker_instance.h" |
#include "content/browser/shared_worker/worker_storage_partition.h" |
#include "content/public/browser/devtools_agent_host.h" |
@@ -35,6 +36,8 @@ class TestDevToolsClientHost : public DevToolsClientHost { |
class EmbeddedWorkerDevToolsManagerTest : public testing::Test { |
public: |
+ typedef EmbeddedWorkerDevToolsAgentHost::WorkerState WorkerState; |
+ |
EmbeddedWorkerDevToolsManagerTest() |
: ui_thread_(BrowserThread::UI, &message_loop_), |
browser_context_(new TestBrowserContext()), |
@@ -59,13 +62,13 @@ class EmbeddedWorkerDevToolsManagerTest : public testing::Test { |
void CheckWorkerState(int worker_process_id, |
int worker_route_id, |
- EmbeddedWorkerDevToolsManager::WorkerState state) { |
+ WorkerState state) { |
const EmbeddedWorkerDevToolsManager::WorkerId id(worker_process_id, |
worker_route_id); |
- EmbeddedWorkerDevToolsManager::WorkerInfoMap::iterator it = |
+ EmbeddedWorkerDevToolsManager::AgentHostMap::iterator it = |
manager_->workers_.find(id); |
EXPECT_TRUE(manager_->workers_.end() != it); |
- EXPECT_EQ(state, it->second->state()); |
+ EXPECT_EQ(state, it->second->state_); |
} |
void CheckWorkerNotExist(int worker_process_id, int worker_route_id) { |
@@ -112,67 +115,67 @@ TEST_F(EmbeddedWorkerDevToolsManagerTest, BasicTest) { |
// Created -> Started -> Destroyed |
CheckWorkerNotExist(1, 1); |
manager_->SharedWorkerCreated(1, 1, instance1); |
- CheckWorkerState(1, 1, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); |
+ CheckWorkerState(1, 1, WorkerState::WORKER_UNINSPECTED); |
manager_->WorkerContextStarted(1, 1); |
- CheckWorkerState(1, 1, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); |
+ CheckWorkerState(1, 1, WorkerState::WORKER_UNINSPECTED); |
manager_->WorkerDestroyed(1, 1); |
CheckWorkerNotExist(1, 1); |
// Created -> GetDevToolsAgentHost -> Started -> Destroyed |
CheckWorkerNotExist(1, 2); |
manager_->SharedWorkerCreated(1, 2, instance1); |
- CheckWorkerState(1, 2, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); |
+ CheckWorkerState(1, 2, WorkerState::WORKER_UNINSPECTED); |
agent_host = manager_->GetDevToolsAgentHostForWorker(1, 2); |
EXPECT_TRUE(agent_host.get()); |
- CheckWorkerState(1, 2, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); |
+ CheckWorkerState(1, 2, WorkerState::WORKER_UNINSPECTED); |
EXPECT_EQ(agent_host.get(), manager_->GetDevToolsAgentHostForWorker(1, 2)); |
manager_->WorkerContextStarted(1, 2); |
- CheckWorkerState(1, 2, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); |
+ CheckWorkerState(1, 2, WorkerState::WORKER_UNINSPECTED); |
manager_->WorkerDestroyed(1, 2); |
- CheckWorkerState(1, 2, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); |
+ CheckWorkerState(1, 2, WorkerState::WORKER_TERMINATED); |
agent_host = NULL; |
CheckWorkerNotExist(1, 2); |
// Created -> Started -> GetDevToolsAgentHost -> Destroyed |
CheckWorkerNotExist(1, 3); |
manager_->SharedWorkerCreated(1, 3, instance1); |
- CheckWorkerState(1, 3, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); |
+ CheckWorkerState(1, 3, WorkerState::WORKER_UNINSPECTED); |
manager_->WorkerContextStarted(1, 3); |
- CheckWorkerState(1, 3, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); |
+ CheckWorkerState(1, 3, WorkerState::WORKER_UNINSPECTED); |
agent_host = manager_->GetDevToolsAgentHostForWorker(1, 3); |
EXPECT_TRUE(agent_host.get()); |
- CheckWorkerState(1, 3, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); |
+ CheckWorkerState(1, 3, WorkerState::WORKER_UNINSPECTED); |
manager_->WorkerDestroyed(1, 3); |
- CheckWorkerState(1, 3, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); |
+ CheckWorkerState(1, 3, WorkerState::WORKER_TERMINATED); |
agent_host = NULL; |
CheckWorkerNotExist(1, 3); |
// Created -> Destroyed |
CheckWorkerNotExist(1, 4); |
manager_->SharedWorkerCreated(1, 4, instance1); |
- CheckWorkerState(1, 4, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); |
+ CheckWorkerState(1, 4, WorkerState::WORKER_UNINSPECTED); |
manager_->WorkerDestroyed(1, 4); |
CheckWorkerNotExist(1, 4); |
// Created -> GetDevToolsAgentHost -> Destroyed |
CheckWorkerNotExist(1, 5); |
manager_->SharedWorkerCreated(1, 5, instance1); |
- CheckWorkerState(1, 5, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); |
+ CheckWorkerState(1, 5, WorkerState::WORKER_UNINSPECTED); |
agent_host = manager_->GetDevToolsAgentHostForWorker(1, 5); |
EXPECT_TRUE(agent_host.get()); |
- CheckWorkerState(1, 5, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); |
+ CheckWorkerState(1, 5, WorkerState::WORKER_UNINSPECTED); |
manager_->WorkerDestroyed(1, 5); |
- CheckWorkerState(1, 5, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); |
+ CheckWorkerState(1, 5, WorkerState::WORKER_TERMINATED); |
agent_host = NULL; |
CheckWorkerNotExist(1, 5); |
// Created -> GetDevToolsAgentHost -> Free agent_host -> Destroyed |
CheckWorkerNotExist(1, 6); |
manager_->SharedWorkerCreated(1, 6, instance1); |
- CheckWorkerState(1, 6, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); |
+ CheckWorkerState(1, 6, WorkerState::WORKER_UNINSPECTED); |
agent_host = manager_->GetDevToolsAgentHostForWorker(1, 6); |
EXPECT_TRUE(agent_host.get()); |
- CheckWorkerState(1, 6, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); |
+ CheckWorkerState(1, 6, WorkerState::WORKER_UNINSPECTED); |
agent_host = NULL; |
manager_->WorkerDestroyed(1, 6); |
CheckWorkerNotExist(1, 6); |
@@ -199,67 +202,64 @@ TEST_F(EmbeddedWorkerDevToolsManagerTest, AttachTest) { |
scoped_ptr<TestDevToolsClientHost> client_host1(new TestDevToolsClientHost()); |
CheckWorkerNotExist(2, 1); |
manager_->SharedWorkerCreated(2, 1, instance1); |
- CheckWorkerState(2, 1, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); |
+ CheckWorkerState(2, 1, WorkerState::WORKER_UNINSPECTED); |
agent_host1 = manager_->GetDevToolsAgentHostForWorker(2, 1); |
EXPECT_TRUE(agent_host1.get()); |
- CheckWorkerState(2, 1, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); |
+ CheckWorkerState(2, 1, WorkerState::WORKER_UNINSPECTED); |
EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1)); |
RegisterDevToolsClientHostFor(agent_host1.get(), client_host1.get()); |
- CheckWorkerState(2, 1, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); |
+ CheckWorkerState(2, 1, WorkerState::WORKER_INSPECTED); |
manager_->WorkerContextStarted(2, 1); |
- CheckWorkerState(2, 1, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); |
+ CheckWorkerState(2, 1, WorkerState::WORKER_INSPECTED); |
manager_->WorkerDestroyed(2, 1); |
- CheckWorkerState(2, 1, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); |
+ CheckWorkerState(2, 1, WorkerState::WORKER_TERMINATED); |
EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 1)); |
// Created -> Started -> GetDevToolsAgentHost -> Register -> Destroyed |
scoped_ptr<TestDevToolsClientHost> client_host2(new TestDevToolsClientHost()); |
manager_->SharedWorkerCreated(2, 2, instance2); |
- CheckWorkerState(2, 2, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); |
+ CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); |
manager_->WorkerContextStarted(2, 2); |
- CheckWorkerState(2, 2, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED); |
+ CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); |
agent_host2 = manager_->GetDevToolsAgentHostForWorker(2, 2); |
EXPECT_TRUE(agent_host2.get()); |
EXPECT_NE(agent_host1.get(), agent_host2.get()); |
EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 2)); |
- CheckWorkerState(2, 2, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); |
+ CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED); |
RegisterDevToolsClientHostFor(agent_host2.get(), client_host2.get()); |
- CheckWorkerState(2, 2, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); |
+ CheckWorkerState(2, 2, WorkerState::WORKER_INSPECTED); |
manager_->WorkerDestroyed(2, 2); |
- CheckWorkerState(2, 2, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); |
+ CheckWorkerState(2, 2, WorkerState::WORKER_TERMINATED); |
EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 2)); |
// Re-created -> Started -> ClientHostClosing -> Destroyed |
- CheckWorkerState(2, 1, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); |
+ CheckWorkerState(2, 1, WorkerState::WORKER_TERMINATED); |
manager_->SharedWorkerCreated(2, 3, instance1); |
CheckWorkerNotExist(2, 1); |
- CheckWorkerState( |
- 2, 3, EmbeddedWorkerDevToolsManager::WORKER_PAUSED_FOR_REATTACH); |
+ CheckWorkerState(2, 3, WorkerState::WORKER_PAUSED_FOR_REATTACH); |
EXPECT_EQ(agent_host1.get(), manager_->GetDevToolsAgentHostForWorker(2, 3)); |
manager_->WorkerContextStarted(2, 3); |
- CheckWorkerState(2, 3, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED); |
+ CheckWorkerState(2, 3, WorkerState::WORKER_INSPECTED); |
ClientHostClosing(client_host1.get()); |
manager_->WorkerDestroyed(2, 3); |
- CheckWorkerState(2, 3, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); |
+ CheckWorkerState(2, 3, WorkerState::WORKER_TERMINATED); |
agent_host1 = NULL; |
CheckWorkerNotExist(2, 3); |
// Re-created -> Destroyed |
- CheckWorkerState(2, 2, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); |
+ CheckWorkerState(2, 2, WorkerState::WORKER_TERMINATED); |
manager_->SharedWorkerCreated(2, 4, instance2); |
CheckWorkerNotExist(2, 2); |
- CheckWorkerState( |
- 2, 4, EmbeddedWorkerDevToolsManager::WORKER_PAUSED_FOR_REATTACH); |
+ CheckWorkerState(2, 4, WorkerState::WORKER_PAUSED_FOR_REATTACH); |
EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 4)); |
manager_->WorkerDestroyed(2, 4); |
- CheckWorkerNotExist(2, 4); |
- CheckWorkerState(2, 2, EmbeddedWorkerDevToolsManager::WORKER_TERMINATED); |
+ CheckWorkerNotExist(2, 2); |
+ CheckWorkerState(2, 4, WorkerState::WORKER_TERMINATED); |
// Re-created -> ClientHostClosing -> Destroyed |
manager_->SharedWorkerCreated(2, 5, instance2); |
CheckWorkerNotExist(2, 2); |
- CheckWorkerState( |
- 2, 5, EmbeddedWorkerDevToolsManager::WORKER_PAUSED_FOR_REATTACH); |
+ CheckWorkerState(2, 5, WorkerState::WORKER_PAUSED_FOR_REATTACH); |
EXPECT_EQ(agent_host2.get(), manager_->GetDevToolsAgentHostForWorker(2, 5)); |
ClientHostClosing(client_host2.get()); |
CheckWorkerCount(1); |
@@ -269,4 +269,35 @@ TEST_F(EmbeddedWorkerDevToolsManagerTest, AttachTest) { |
CheckWorkerCount(0); |
} |
+TEST_F(EmbeddedWorkerDevToolsManagerTest, ReattachTest) { |
+ SharedWorkerInstance instance(GURL("http://example.com/w3.js"), |
+ base::string16(), |
+ base::string16(), |
+ blink::WebContentSecurityPolicyTypeReport, |
+ browser_context_->GetResourceContext(), |
+ partition_id_); |
+ scoped_ptr<TestDevToolsClientHost> client_host(new TestDevToolsClientHost()); |
+ // Created -> GetDevToolsAgentHost -> Register -> Destroyed |
+ manager_->SharedWorkerCreated(3, 1, instance); |
+ CheckWorkerState(3, 1, WorkerState::WORKER_UNINSPECTED); |
+ scoped_refptr<DevToolsAgentHost> agent_host( |
+ manager_->GetDevToolsAgentHostForWorker(3, 1)); |
+ EXPECT_TRUE(agent_host.get()); |
+ CheckWorkerState(3, 1, WorkerState::WORKER_UNINSPECTED); |
+ RegisterDevToolsClientHostFor(agent_host.get(), client_host.get()); |
+ CheckWorkerState(3, 1, WorkerState::WORKER_INSPECTED); |
+ manager_->WorkerDestroyed(3, 1); |
+ CheckWorkerState(3, 1, WorkerState::WORKER_TERMINATED); |
+ // ClientHostClosing -> Re-created -> release agent_host -> Destroyed |
+ ClientHostClosing(client_host.get()); |
+ CheckWorkerState(3, 1, WorkerState::WORKER_TERMINATED); |
+ manager_->SharedWorkerCreated(3, 2, instance); |
+ CheckWorkerState(3, 2, WorkerState::WORKER_UNINSPECTED); |
+ agent_host = NULL; |
+ CheckWorkerState(3, 2, WorkerState::WORKER_UNINSPECTED); |
+ manager_->WorkerDestroyed(3, 2); |
+ CheckWorkerNotExist(3, 2); |
+ CheckWorkerCount(0); |
+} |
+ |
} // namespace content |