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

Unified Diff: headless/lib/headless_devtools_client_browsertest.cc

Issue 2531313002: Expose the full API for attaching devtools clients: (Closed)
Patch Set: Addressed code review comments Created 4 years, 1 month 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
« no previous file with comments | « headless/lib/browser/headless_web_contents_impl.cc ('k') | headless/public/headless_devtools_target.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: headless/lib/headless_devtools_client_browsertest.cc
diff --git a/headless/lib/headless_devtools_client_browsertest.cc b/headless/lib/headless_devtools_client_browsertest.cc
index cce4c045a9e5cbe33ba0a82be1f0231ce212a7ac..521c8b19253bb0565f3fe4cce1a2224a60d08e83 100644
--- a/headless/lib/headless_devtools_client_browsertest.cc
+++ b/headless/lib/headless_devtools_client_browsertest.cc
@@ -687,4 +687,63 @@ class HeadlessCrashObserverTest : public HeadlessAsyncDevTooledBrowserTest,
HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessCrashObserverTest);
+class HeadlessDevToolsClientAttachTest
+ : public HeadlessAsyncDevTooledBrowserTest {
+ public:
+ void RunDevTooledTest() override {
+ other_devtools_client_ = HeadlessDevToolsClient::Create();
+ HeadlessDevToolsTarget* devtools_target =
+ web_contents_->GetDevToolsTarget();
+
+ // Try attaching: there's already a client attached.
+ EXPECT_FALSE(devtools_target->AttachClient(other_devtools_client_.get()));
+ EXPECT_TRUE(devtools_target->IsAttached());
+ // Detach the existing client, attach the other client.
+ devtools_target->DetachClient(devtools_client_.get());
+ EXPECT_FALSE(devtools_target->IsAttached());
+ EXPECT_TRUE(devtools_target->AttachClient(other_devtools_client_.get()));
+ EXPECT_TRUE(devtools_target->IsAttached());
+
+ // Now, let's make sure this devtools client works.
+ other_devtools_client_->GetRuntime()->Evaluate(
+ "24 * 7", base::Bind(&HeadlessDevToolsClientAttachTest::OnFirstResult,
+ base::Unretained(this)));
+ }
+
+ void OnFirstResult(std::unique_ptr<runtime::EvaluateResult> result) {
+ int value;
+ EXPECT_TRUE(result->GetResult()->HasValue());
+ EXPECT_TRUE(result->GetResult()->GetValue()->GetAsInteger(&value));
+ EXPECT_EQ(24 * 7, value);
+
+ HeadlessDevToolsTarget* devtools_target =
+ web_contents_->GetDevToolsTarget();
+
+ // Try attach, then force-attach the original client.
+ EXPECT_FALSE(devtools_target->AttachClient(devtools_client_.get()));
+ devtools_target->ForceAttachClient(devtools_client_.get());
+ EXPECT_TRUE(devtools_target->IsAttached());
+
+ devtools_client_->GetRuntime()->Evaluate(
+ "27 * 4", base::Bind(&HeadlessDevToolsClientAttachTest::OnSecondResult,
+ base::Unretained(this)));
+ }
+
+ void OnSecondResult(std::unique_ptr<runtime::EvaluateResult> result) {
+ int value;
+ EXPECT_TRUE(result->GetResult()->HasValue());
+ EXPECT_TRUE(result->GetResult()->GetValue()->GetAsInteger(&value));
+ EXPECT_EQ(27 * 4, value);
+
+ // If everything worked, this call will not crash, since it
+ // detaches devtools_client_.
+ FinishAsynchronousTest();
+ }
+
+ protected:
+ std::unique_ptr<HeadlessDevToolsClient> other_devtools_client_;
+};
+
+HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessDevToolsClientAttachTest);
+
} // namespace headless
« no previous file with comments | « headless/lib/browser/headless_web_contents_impl.cc ('k') | headless/public/headless_devtools_target.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698