summaryrefslogtreecommitdiff
path: root/chromium/content/browser/devtools/embedded_worker_devtools_manager_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/devtools/embedded_worker_devtools_manager_unittest.cc')
-rw-r--r--chromium/content/browser/devtools/embedded_worker_devtools_manager_unittest.cc178
1 files changed, 102 insertions, 76 deletions
diff --git a/chromium/content/browser/devtools/embedded_worker_devtools_manager_unittest.cc b/chromium/content/browser/devtools/embedded_worker_devtools_manager_unittest.cc
index 69b23052425..35a0b301ac2 100644
--- a/chromium/content/browser/devtools/embedded_worker_devtools_manager_unittest.cc
+++ b/chromium/content/browser/devtools/embedded_worker_devtools_manager_unittest.cc
@@ -8,33 +8,41 @@
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
#include "content/browser/browser_thread_impl.h"
-#include "content/browser/devtools/devtools_manager_impl.h"
+#include "content/browser/devtools/devtools_agent_host_impl.h"
+#include "content/browser/devtools/embedded_worker_devtools_agent_host.h"
#include "content/browser/shared_worker/shared_worker_instance.h"
-#include "content/browser/worker_host/worker_storage_partition.h"
-#include "content/public/browser/devtools_agent_host.h"
-#include "content/public/browser/devtools_client_host.h"
+#include "content/browser/shared_worker/worker_storage_partition.h"
#include "content/public/test/test_browser_context.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace content {
namespace {
-class TestDevToolsClientHost : public DevToolsClientHost {
+class TestDevToolsClientHost : public DevToolsAgentHostClient {
public:
TestDevToolsClientHost() {}
- virtual ~TestDevToolsClientHost() {}
- virtual void DispatchOnInspectorFrontend(
- const std::string& message) OVERRIDE {}
- virtual void InspectedContentsClosing() OVERRIDE {}
- virtual void ReplacedWithAnotherClient() OVERRIDE {}
+ ~TestDevToolsClientHost() override {}
+ void DispatchProtocolMessage(DevToolsAgentHost* agent_host,
+ const std::string& message) override {}
+ void AgentHostClosed(DevToolsAgentHost* agent_host, bool replaced) override {}
+ void InspectAgentHost(DevToolsAgentHost* agent_host) {
+ if (agent_host_.get())
+ agent_host_->DetachClient();
+ agent_host_ = agent_host;
+ if (agent_host_.get())
+ agent_host_->AttachClient(this);
+ }
private:
+ scoped_refptr<DevToolsAgentHost> agent_host_;
DISALLOW_COPY_AND_ASSIGN(TestDevToolsClientHost);
};
}
class EmbeddedWorkerDevToolsManagerTest : public testing::Test {
public:
+ typedef EmbeddedWorkerDevToolsAgentHost::WorkerState WorkerState;
+
EmbeddedWorkerDevToolsManagerTest()
: ui_thread_(BrowserThread::UI, &message_loop_),
browser_context_(new TestBrowserContext()),
@@ -50,22 +58,22 @@ class EmbeddedWorkerDevToolsManagerTest : public testing::Test {
partition_id_(*partition_.get()) {}
protected:
- virtual void SetUp() OVERRIDE {
+ void SetUp() override {
manager_ = EmbeddedWorkerDevToolsManager::GetInstance();
}
- virtual void TearDown() OVERRIDE {
+ void TearDown() override {
EmbeddedWorkerDevToolsManager::GetInstance()->ResetForTesting();
}
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) {
@@ -78,16 +86,6 @@ class EmbeddedWorkerDevToolsManagerTest : public testing::Test {
EXPECT_EQ(size, manager_->workers_.size());
}
- void RegisterDevToolsClientHostFor(DevToolsAgentHost* agent_host,
- DevToolsClientHost* client_host) {
- DevToolsManagerImpl::GetInstance()->RegisterDevToolsClientHostFor(
- agent_host, client_host);
- }
-
- void ClientHostClosing(DevToolsClientHost* client_host) {
- DevToolsManagerImpl::GetInstance()->ClientHostClosing(client_host);
- }
-
base::MessageLoopForIO message_loop_;
BrowserThreadImpl ui_thread_;
scoped_ptr<TestBrowserContext> browser_context_;
@@ -97,7 +95,7 @@ class EmbeddedWorkerDevToolsManagerTest : public testing::Test {
};
TEST_F(EmbeddedWorkerDevToolsManagerTest, BasicTest) {
- scoped_refptr<DevToolsAgentHost> agent_host;
+ scoped_refptr<DevToolsAgentHostImpl> agent_host;
SharedWorkerInstance instance1(GURL("http://example.com/w.js"),
base::string16(),
@@ -112,75 +110,75 @@ TEST_F(EmbeddedWorkerDevToolsManagerTest, BasicTest) {
// Created -> Started -> Destroyed
CheckWorkerNotExist(1, 1);
manager_->SharedWorkerCreated(1, 1, instance1);
- CheckWorkerState(1, 1, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED);
- manager_->WorkerContextStarted(1, 1);
- CheckWorkerState(1, 1, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED);
+ CheckWorkerState(1, 1, WorkerState::WORKER_UNINSPECTED);
+ manager_->WorkerReadyForInspection(1, 1);
+ 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);
+ manager_->WorkerReadyForInspection(1, 2);
+ 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);
- manager_->WorkerContextStarted(1, 3);
- CheckWorkerState(1, 3, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED);
+ CheckWorkerState(1, 3, WorkerState::WORKER_UNINSPECTED);
+ manager_->WorkerReadyForInspection(1, 3);
+ 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);
}
TEST_F(EmbeddedWorkerDevToolsManagerTest, AttachTest) {
- scoped_refptr<DevToolsAgentHost> agent_host1;
- scoped_refptr<DevToolsAgentHost> agent_host2;
+ scoped_refptr<DevToolsAgentHostImpl> agent_host1;
+ scoped_refptr<DevToolsAgentHostImpl> agent_host2;
SharedWorkerInstance instance1(GURL("http://example.com/w1.js"),
base::string16(),
@@ -199,69 +197,66 @@ 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);
- manager_->WorkerContextStarted(2, 1);
- CheckWorkerState(2, 1, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED);
+ client_host1->InspectAgentHost(agent_host1.get());
+ CheckWorkerState(2, 1, WorkerState::WORKER_INSPECTED);
+ manager_->WorkerReadyForInspection(2, 1);
+ 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);
- manager_->WorkerContextStarted(2, 2);
- CheckWorkerState(2, 2, EmbeddedWorkerDevToolsManager::WORKER_UNINSPECTED);
+ CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED);
+ manager_->WorkerReadyForInspection(2, 2);
+ 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);
- RegisterDevToolsClientHostFor(agent_host2.get(), client_host2.get());
- CheckWorkerState(2, 2, EmbeddedWorkerDevToolsManager::WORKER_INSPECTED);
+ CheckWorkerState(2, 2, WorkerState::WORKER_UNINSPECTED);
+ client_host2->InspectAgentHost(agent_host2.get());
+ 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);
- ClientHostClosing(client_host1.get());
+ manager_->WorkerReadyForInspection(2, 3);
+ CheckWorkerState(2, 3, WorkerState::WORKER_INSPECTED);
+ client_host1->InspectAgentHost(NULL);
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());
+ client_host2->InspectAgentHost(NULL);
CheckWorkerCount(1);
agent_host2 = NULL;
CheckWorkerCount(1);
@@ -269,4 +264,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);
+ client_host->InspectAgentHost(agent_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
+ client_host->InspectAgentHost(NULL);
+ 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