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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 | 50 |
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_ = nullptr; | 53 web_contents_ = nullptr; |
53 } | 54 } |
54 | 55 |
55 std::unique_ptr<HeadlessWebContents> web_contents_; | 56 std::unique_ptr<HeadlessWebContents> web_contents_; |
56 std::unique_ptr<HeadlessDevToolsClient> devtools_client_; | 57 std::unique_ptr<HeadlessDevToolsClient> devtools_client_; |
57 }; | 58 }; |
58 | 59 |
59 class HeadlessDevToolsClientNavigationTest : public HeadlessDevToolsClientTest { | 60 class HeadlessDevToolsClientNavigationTest : public HeadlessDevToolsClientTest, |
| 61 page::Observer { |
60 public: | 62 public: |
61 void RunDevToolsClientTest() override { | 63 void RunDevToolsClientTest() override { |
62 EXPECT_TRUE(embedded_test_server()->Start()); | 64 EXPECT_TRUE(embedded_test_server()->Start()); |
63 std::unique_ptr<page::NavigateParams> params = | 65 std::unique_ptr<page::NavigateParams> params = |
64 page::NavigateParams::Builder() | 66 page::NavigateParams::Builder() |
65 .SetUrl(embedded_test_server()->GetURL("/hello.html").spec()) | 67 .SetUrl(embedded_test_server()->GetURL("/hello.html").spec()) |
66 .Build(); | 68 .Build(); |
| 69 devtools_client_->GetPage()->AddObserver(this); |
| 70 devtools_client_->GetPage()->Enable(); |
67 devtools_client_->GetPage()->Navigate(std::move(params)); | 71 devtools_client_->GetPage()->Navigate(std::move(params)); |
68 } | 72 } |
69 | 73 |
70 // TODO(skyostil): Wait for a load event once we support them. | 74 void OnLoadEventFired(const page::LoadEventFiredParams& params) override { |
71 void DidFinishNavigation(bool success) override { | 75 devtools_client_->GetPage()->RemoveObserver(this); |
72 EXPECT_TRUE(success); | |
73 FinishAsynchronousTest(); | 76 FinishAsynchronousTest(); |
74 } | 77 } |
75 }; | 78 }; |
76 | 79 |
77 DEVTOOLS_CLIENT_TEST_F(HeadlessDevToolsClientNavigationTest); | 80 DEVTOOLS_CLIENT_TEST_F(HeadlessDevToolsClientNavigationTest); |
78 | 81 |
79 class HeadlessDevToolsClientEvalTest : public HeadlessDevToolsClientTest { | 82 class HeadlessDevToolsClientEvalTest : public HeadlessDevToolsClientTest { |
80 public: | 83 public: |
81 void RunDevToolsClientTest() override { | 84 void RunDevToolsClientTest() override { |
82 std::unique_ptr<runtime::EvaluateParams> params = | 85 std::unique_ptr<runtime::EvaluateParams> params = |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 EXPECT_TRUE(first_result_received_); | 141 EXPECT_TRUE(first_result_received_); |
139 FinishAsynchronousTest(); | 142 FinishAsynchronousTest(); |
140 } | 143 } |
141 | 144 |
142 private: | 145 private: |
143 bool first_result_received_; | 146 bool first_result_received_; |
144 }; | 147 }; |
145 | 148 |
146 DEVTOOLS_CLIENT_TEST_F(HeadlessDevToolsClientCallbackTest); | 149 DEVTOOLS_CLIENT_TEST_F(HeadlessDevToolsClientCallbackTest); |
147 | 150 |
| 151 class HeadlessDevToolsClientObserverTest : public HeadlessDevToolsClientTest, |
| 152 network::Observer { |
| 153 public: |
| 154 void RunDevToolsClientTest() override { |
| 155 EXPECT_TRUE(embedded_test_server()->Start()); |
| 156 devtools_client_->GetNetwork()->AddObserver(this); |
| 157 devtools_client_->GetNetwork()->Enable(); |
| 158 devtools_client_->GetPage()->Navigate( |
| 159 embedded_test_server()->GetURL("/hello.html").spec()); |
| 160 } |
| 161 |
| 162 void OnRequestWillBeSent( |
| 163 const network::RequestWillBeSentParams& params) override { |
| 164 EXPECT_EQ("GET", params.GetRequest()->GetMethod()); |
| 165 EXPECT_EQ(embedded_test_server()->GetURL("/hello.html").spec(), |
| 166 params.GetRequest()->GetUrl()); |
| 167 } |
| 168 |
| 169 void OnResponseReceived( |
| 170 const network::ResponseReceivedParams& params) override { |
| 171 EXPECT_EQ(200, params.GetResponse()->GetStatus()); |
| 172 EXPECT_EQ("OK", params.GetResponse()->GetStatusText()); |
| 173 std::string content_type; |
| 174 EXPECT_TRUE(params.GetResponse()->GetHeaders()->GetString("Content-Type", |
| 175 &content_type)); |
| 176 EXPECT_EQ("text/html", content_type); |
| 177 |
| 178 devtools_client_->GetNetwork()->RemoveObserver(this); |
| 179 FinishAsynchronousTest(); |
| 180 } |
| 181 }; |
| 182 |
| 183 DEVTOOLS_CLIENT_TEST_F(HeadlessDevToolsClientObserverTest); |
| 184 |
148 } // namespace headless | 185 } // namespace headless |
OLD | NEW |