OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 <memory> | 5 #include <memory> |
6 | 6 |
7 #include "content/public/test/browser_test.h" | 7 #include "content/public/test/browser_test.h" |
| 8 #include "headless/public/domains/network.h" |
8 #include "headless/public/domains/page.h" | 9 #include "headless/public/domains/page.h" |
9 #include "headless/public/domains/runtime.h" | 10 #include "headless/public/domains/runtime.h" |
10 #include "headless/public/headless_browser.h" | 11 #include "headless/public/headless_browser.h" |
11 #include "headless/public/headless_devtools_client.h" | 12 #include "headless/public/headless_devtools_client.h" |
12 #include "headless/public/headless_devtools_target.h" | 13 #include "headless/public/headless_devtools_target.h" |
13 #include "headless/public/headless_web_contents.h" | 14 #include "headless/public/headless_web_contents.h" |
14 #include "headless/test/headless_browser_test.h" | 15 #include "headless/test/headless_browser_test.h" |
15 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
16 #include "ui/gfx/geometry/size.h" | 17 #include "ui/gfx/geometry/size.h" |
17 #include "url/gurl.h" | 18 #include "url/gurl.h" |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 web_contents_->GetDevToolsTarget()->DetachClient(devtools_client_.get()); | 51 web_contents_->GetDevToolsTarget()->DetachClient(devtools_client_.get()); |
51 web_contents_->RemoveObserver(this); | 52 web_contents_->RemoveObserver(this); |
52 web_contents_->Close(); | 53 web_contents_->Close(); |
53 web_contents_ = nullptr; | 54 web_contents_ = nullptr; |
54 } | 55 } |
55 | 56 |
56 HeadlessWebContents* web_contents_; | 57 HeadlessWebContents* web_contents_; |
57 std::unique_ptr<HeadlessDevToolsClient> devtools_client_; | 58 std::unique_ptr<HeadlessDevToolsClient> devtools_client_; |
58 }; | 59 }; |
59 | 60 |
60 class HeadlessDevToolsClientNavigationTest : public HeadlessDevToolsClientTest { | 61 class HeadlessDevToolsClientNavigationTest : public HeadlessDevToolsClientTest, |
| 62 page::Observer { |
61 public: | 63 public: |
62 void RunDevToolsClientTest() override { | 64 void RunDevToolsClientTest() override { |
63 EXPECT_TRUE(embedded_test_server()->Start()); | 65 EXPECT_TRUE(embedded_test_server()->Start()); |
64 std::unique_ptr<page::NavigateParams> params = | 66 std::unique_ptr<page::NavigateParams> params = |
65 page::NavigateParams::Builder() | 67 page::NavigateParams::Builder() |
66 .SetUrl(embedded_test_server()->GetURL("/hello.html").spec()) | 68 .SetUrl(embedded_test_server()->GetURL("/hello.html").spec()) |
67 .Build(); | 69 .Build(); |
| 70 devtools_client_->GetPage()->AddObserver(this); |
| 71 devtools_client_->GetPage()->Enable(); |
68 devtools_client_->GetPage()->Navigate(std::move(params)); | 72 devtools_client_->GetPage()->Navigate(std::move(params)); |
69 } | 73 } |
70 | 74 |
71 // TODO(skyostil): Wait for a load event once we support them. | 75 void OnLoadEventFired(const page::LoadEventFiredParams& params) override { |
72 void DidFinishNavigation(bool success) override { | 76 devtools_client_->GetPage()->RemoveObserver(this); |
73 EXPECT_TRUE(success); | |
74 FinishAsynchronousTest(); | 77 FinishAsynchronousTest(); |
75 } | 78 } |
| 79 |
| 80 // Check that events with no parameters still get a parameters object. |
| 81 void OnFrameResized(const page::FrameResizedParams& params) override {} |
76 }; | 82 }; |
77 | 83 |
78 DEVTOOLS_CLIENT_TEST_F(HeadlessDevToolsClientNavigationTest); | 84 DEVTOOLS_CLIENT_TEST_F(HeadlessDevToolsClientNavigationTest); |
79 | 85 |
80 class HeadlessDevToolsClientEvalTest : public HeadlessDevToolsClientTest { | 86 class HeadlessDevToolsClientEvalTest : public HeadlessDevToolsClientTest { |
81 public: | 87 public: |
82 void RunDevToolsClientTest() override { | 88 void RunDevToolsClientTest() override { |
83 std::unique_ptr<runtime::EvaluateParams> params = | 89 std::unique_ptr<runtime::EvaluateParams> params = |
84 runtime::EvaluateParams::Builder().SetExpression("1 + 2").Build(); | 90 runtime::EvaluateParams::Builder().SetExpression("1 + 2").Build(); |
85 devtools_client_->GetRuntime()->Evaluate( | 91 devtools_client_->GetRuntime()->Evaluate( |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 EXPECT_TRUE(first_result_received_); | 145 EXPECT_TRUE(first_result_received_); |
140 FinishAsynchronousTest(); | 146 FinishAsynchronousTest(); |
141 } | 147 } |
142 | 148 |
143 private: | 149 private: |
144 bool first_result_received_; | 150 bool first_result_received_; |
145 }; | 151 }; |
146 | 152 |
147 DEVTOOLS_CLIENT_TEST_F(HeadlessDevToolsClientCallbackTest); | 153 DEVTOOLS_CLIENT_TEST_F(HeadlessDevToolsClientCallbackTest); |
148 | 154 |
| 155 class HeadlessDevToolsClientObserverTest : public HeadlessDevToolsClientTest, |
| 156 network::Observer { |
| 157 public: |
| 158 void RunDevToolsClientTest() override { |
| 159 EXPECT_TRUE(embedded_test_server()->Start()); |
| 160 devtools_client_->GetNetwork()->AddObserver(this); |
| 161 devtools_client_->GetNetwork()->Enable(); |
| 162 devtools_client_->GetPage()->Navigate( |
| 163 embedded_test_server()->GetURL("/hello.html").spec()); |
| 164 } |
| 165 |
| 166 void OnRequestWillBeSent( |
| 167 const network::RequestWillBeSentParams& params) override { |
| 168 EXPECT_EQ("GET", params.GetRequest()->GetMethod()); |
| 169 EXPECT_EQ(embedded_test_server()->GetURL("/hello.html").spec(), |
| 170 params.GetRequest()->GetUrl()); |
| 171 } |
| 172 |
| 173 void OnResponseReceived( |
| 174 const network::ResponseReceivedParams& params) override { |
| 175 EXPECT_EQ(200, params.GetResponse()->GetStatus()); |
| 176 EXPECT_EQ("OK", params.GetResponse()->GetStatusText()); |
| 177 std::string content_type; |
| 178 EXPECT_TRUE(params.GetResponse()->GetHeaders()->GetString("Content-Type", |
| 179 &content_type)); |
| 180 EXPECT_EQ("text/html", content_type); |
| 181 |
| 182 devtools_client_->GetNetwork()->RemoveObserver(this); |
| 183 FinishAsynchronousTest(); |
| 184 } |
| 185 }; |
| 186 |
| 187 DEVTOOLS_CLIENT_TEST_F(HeadlessDevToolsClientObserverTest); |
| 188 |
149 } // namespace headless | 189 } // namespace headless |
OLD | NEW |