| 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 "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
| 8 #include "base/run_loop.h" |
| 8 #include "content/public/browser/render_widget_host_view.h" | 9 #include "content/public/browser/render_widget_host_view.h" |
| 9 #include "content/public/browser/web_contents.h" | 10 #include "content/public/browser/web_contents.h" |
| 10 #include "content/public/common/url_constants.h" | 11 #include "content/public/common/url_constants.h" |
| 11 #include "content/public/test/browser_test.h" | 12 #include "content/public/test/browser_test.h" |
| 12 #include "headless/lib/browser/headless_web_contents_impl.h" | 13 #include "headless/lib/browser/headless_web_contents_impl.h" |
| 13 #include "headless/public/devtools/domains/dom.h" | 14 #include "headless/public/devtools/domains/dom.h" |
| 14 #include "headless/public/devtools/domains/emulation.h" | 15 #include "headless/public/devtools/domains/emulation.h" |
| 15 #include "headless/public/devtools/domains/inspector.h" | 16 #include "headless/public/devtools/domains/inspector.h" |
| 16 #include "headless/public/devtools/domains/network.h" | 17 #include "headless/public/devtools/domains/network.h" |
| 17 #include "headless/public/devtools/domains/page.h" | 18 #include "headless/public/devtools/domains/page.h" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 : public HeadlessAsyncDevTooledBrowserTest, | 57 : public HeadlessAsyncDevTooledBrowserTest, |
| 57 page::ExperimentalObserver { | 58 page::ExperimentalObserver { |
| 58 public: | 59 public: |
| 59 void RunDevTooledTest() override { | 60 void RunDevTooledTest() override { |
| 60 EXPECT_TRUE(embedded_test_server()->Start()); | 61 EXPECT_TRUE(embedded_test_server()->Start()); |
| 61 std::unique_ptr<page::NavigateParams> params = | 62 std::unique_ptr<page::NavigateParams> params = |
| 62 page::NavigateParams::Builder() | 63 page::NavigateParams::Builder() |
| 63 .SetUrl(embedded_test_server()->GetURL("/hello.html").spec()) | 64 .SetUrl(embedded_test_server()->GetURL("/hello.html").spec()) |
| 64 .Build(); | 65 .Build(); |
| 65 devtools_client_->GetPage()->GetExperimental()->AddObserver(this); | 66 devtools_client_->GetPage()->GetExperimental()->AddObserver(this); |
| 66 devtools_client_->GetPage()->Enable(); | 67 base::RunLoop run_loop; |
| 68 base::MessageLoop::ScopedNestableTaskAllower nest_loop( |
| 69 base::MessageLoop::current()); |
| 70 devtools_client_->GetPage()->Enable(run_loop.QuitClosure()); |
| 71 run_loop.Run(); |
| 67 devtools_client_->GetPage()->Navigate(std::move(params)); | 72 devtools_client_->GetPage()->Navigate(std::move(params)); |
| 68 } | 73 } |
| 69 | 74 |
| 70 void OnLoadEventFired(const page::LoadEventFiredParams& params) override { | 75 void OnLoadEventFired(const page::LoadEventFiredParams& params) override { |
| 71 devtools_client_->GetPage()->Disable(); | 76 devtools_client_->GetPage()->Disable(); |
| 72 devtools_client_->GetPage()->GetExperimental()->RemoveObserver(this); | 77 devtools_client_->GetPage()->GetExperimental()->RemoveObserver(this); |
| 73 FinishAsynchronousTest(); | 78 FinishAsynchronousTest(); |
| 74 } | 79 } |
| 75 | 80 |
| 76 // Check that events with no parameters still get a parameters object. | 81 // Check that events with no parameters still get a parameters object. |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 }; | 154 }; |
| 150 | 155 |
| 151 HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessDevToolsClientCallbackTest); | 156 HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessDevToolsClientCallbackTest); |
| 152 | 157 |
| 153 class HeadlessDevToolsClientObserverTest | 158 class HeadlessDevToolsClientObserverTest |
| 154 : public HeadlessAsyncDevTooledBrowserTest, | 159 : public HeadlessAsyncDevTooledBrowserTest, |
| 155 network::Observer { | 160 network::Observer { |
| 156 public: | 161 public: |
| 157 void RunDevTooledTest() override { | 162 void RunDevTooledTest() override { |
| 158 EXPECT_TRUE(embedded_test_server()->Start()); | 163 EXPECT_TRUE(embedded_test_server()->Start()); |
| 164 base::RunLoop run_loop; |
| 159 devtools_client_->GetNetwork()->AddObserver(this); | 165 devtools_client_->GetNetwork()->AddObserver(this); |
| 160 devtools_client_->GetNetwork()->Enable(); | 166 devtools_client_->GetNetwork()->Enable(run_loop.QuitClosure()); |
| 167 base::MessageLoop::ScopedNestableTaskAllower nest_loop( |
| 168 base::MessageLoop::current()); |
| 169 run_loop.Run(); |
| 170 |
| 161 devtools_client_->GetPage()->Navigate( | 171 devtools_client_->GetPage()->Navigate( |
| 162 embedded_test_server()->GetURL("/hello.html").spec()); | 172 embedded_test_server()->GetURL("/hello.html").spec()); |
| 163 } | 173 } |
| 164 | 174 |
| 165 void OnRequestWillBeSent( | 175 void OnRequestWillBeSent( |
| 166 const network::RequestWillBeSentParams& params) override { | 176 const network::RequestWillBeSentParams& params) override { |
| 167 EXPECT_EQ("GET", params.GetRequest()->GetMethod()); | 177 EXPECT_EQ("GET", params.GetRequest()->GetMethod()); |
| 168 EXPECT_EQ(embedded_test_server()->GetURL("/hello.html").spec(), | 178 EXPECT_EQ(embedded_test_server()->GetURL("/hello.html").spec(), |
| 169 params.GetRequest()->GetUrl()); | 179 params.GetRequest()->GetUrl()); |
| 170 } | 180 } |
| (...skipping 14 matching lines...) Expand all Loading... |
| 185 }; | 195 }; |
| 186 | 196 |
| 187 HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessDevToolsClientObserverTest); | 197 HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessDevToolsClientObserverTest); |
| 188 | 198 |
| 189 class HeadlessDevToolsClientExperimentalTest | 199 class HeadlessDevToolsClientExperimentalTest |
| 190 : public HeadlessAsyncDevTooledBrowserTest, | 200 : public HeadlessAsyncDevTooledBrowserTest, |
| 191 page::ExperimentalObserver { | 201 page::ExperimentalObserver { |
| 192 public: | 202 public: |
| 193 void RunDevTooledTest() override { | 203 void RunDevTooledTest() override { |
| 194 EXPECT_TRUE(embedded_test_server()->Start()); | 204 EXPECT_TRUE(embedded_test_server()->Start()); |
| 205 base::RunLoop run_loop; |
| 206 devtools_client_->GetPage()->GetExperimental()->AddObserver(this); |
| 207 devtools_client_->GetPage()->Enable(run_loop.QuitClosure()); |
| 208 base::MessageLoop::ScopedNestableTaskAllower nest_loop( |
| 209 base::MessageLoop::current()); |
| 210 run_loop.Run(); |
| 195 // Check that experimental commands require parameter objects. | 211 // Check that experimental commands require parameter objects. |
| 196 devtools_client_->GetRuntime() | 212 devtools_client_->GetRuntime() |
| 197 ->GetExperimental() | 213 ->GetExperimental() |
| 198 ->SetCustomObjectFormatterEnabled( | 214 ->SetCustomObjectFormatterEnabled( |
| 199 runtime::SetCustomObjectFormatterEnabledParams::Builder() | 215 runtime::SetCustomObjectFormatterEnabledParams::Builder() |
| 200 .SetEnabled(false) | 216 .SetEnabled(false) |
| 201 .Build()); | 217 .Build()); |
| 202 | 218 |
| 203 // Check that a previously experimental command which takes no parameters | 219 // Check that a previously experimental command which takes no parameters |
| 204 // still works by giving it a parameter object. | 220 // still works by giving it a parameter object. |
| 205 devtools_client_->GetRuntime()->GetExperimental()->RunIfWaitingForDebugger( | 221 devtools_client_->GetRuntime()->GetExperimental()->RunIfWaitingForDebugger( |
| 206 runtime::RunIfWaitingForDebuggerParams::Builder().Build()); | 222 runtime::RunIfWaitingForDebuggerParams::Builder().Build()); |
| 207 | 223 |
| 208 devtools_client_->GetPage()->GetExperimental()->AddObserver(this); | |
| 209 devtools_client_->GetPage()->Enable(); | |
| 210 devtools_client_->GetPage()->Navigate( | 224 devtools_client_->GetPage()->Navigate( |
| 211 embedded_test_server()->GetURL("/hello.html").spec()); | 225 embedded_test_server()->GetURL("/hello.html").spec()); |
| 212 } | 226 } |
| 213 | 227 |
| 214 void OnFrameStoppedLoading( | 228 void OnFrameStoppedLoading( |
| 215 const page::FrameStoppedLoadingParams& params) override { | 229 const page::FrameStoppedLoadingParams& params) override { |
| 216 devtools_client_->GetPage()->Disable(); | 230 devtools_client_->GetPage()->Disable(); |
| 217 devtools_client_->GetPage()->GetExperimental()->RemoveObserver(this); | 231 devtools_client_->GetPage()->GetExperimental()->RemoveObserver(this); |
| 218 | 232 |
| 219 // Check that a non-experimental command which has no return value can be | 233 // Check that a non-experimental command which has no return value can be |
| (...skipping 411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 631 }; | 645 }; |
| 632 | 646 |
| 633 HEADLESS_ASYNC_DEVTOOLED_TEST_F(TargetDomainCreateTwoContexts); | 647 HEADLESS_ASYNC_DEVTOOLED_TEST_F(TargetDomainCreateTwoContexts); |
| 634 | 648 |
| 635 class HeadlessDevToolsNavigationControlTest | 649 class HeadlessDevToolsNavigationControlTest |
| 636 : public HeadlessAsyncDevTooledBrowserTest, | 650 : public HeadlessAsyncDevTooledBrowserTest, |
| 637 page::ExperimentalObserver { | 651 page::ExperimentalObserver { |
| 638 public: | 652 public: |
| 639 void RunDevTooledTest() override { | 653 void RunDevTooledTest() override { |
| 640 EXPECT_TRUE(embedded_test_server()->Start()); | 654 EXPECT_TRUE(embedded_test_server()->Start()); |
| 655 base::RunLoop run_loop; |
| 641 devtools_client_->GetPage()->GetExperimental()->AddObserver(this); | 656 devtools_client_->GetPage()->GetExperimental()->AddObserver(this); |
| 642 devtools_client_->GetPage()->Enable(); | 657 devtools_client_->GetPage()->Enable(run_loop.QuitClosure()); |
| 658 base::MessageLoop::ScopedNestableTaskAllower nest_loop( |
| 659 base::MessageLoop::current()); |
| 660 run_loop.Run(); |
| 643 devtools_client_->GetPage()->GetExperimental()->SetControlNavigations( | 661 devtools_client_->GetPage()->GetExperimental()->SetControlNavigations( |
| 644 headless::page::SetControlNavigationsParams::Builder() | 662 headless::page::SetControlNavigationsParams::Builder() |
| 645 .SetEnabled(true) | 663 .SetEnabled(true) |
| 646 .Build()); | 664 .Build()); |
| 647 devtools_client_->GetPage()->Navigate( | 665 devtools_client_->GetPage()->Navigate( |
| 648 embedded_test_server()->GetURL("/hello.html").spec()); | 666 embedded_test_server()->GetURL("/hello.html").spec()); |
| 649 } | 667 } |
| 650 | 668 |
| 651 void OnNavigationRequested( | 669 void OnNavigationRequested( |
| 652 const headless::page::NavigationRequestedParams& params) override { | 670 const headless::page::NavigationRequestedParams& params) override { |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 754 }; | 772 }; |
| 755 | 773 |
| 756 HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessDevToolsClientAttachTest); | 774 HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessDevToolsClientAttachTest); |
| 757 | 775 |
| 758 class HeadlessDevToolsMethodCallErrorTest | 776 class HeadlessDevToolsMethodCallErrorTest |
| 759 : public HeadlessAsyncDevTooledBrowserTest, | 777 : public HeadlessAsyncDevTooledBrowserTest, |
| 760 public page::Observer { | 778 public page::Observer { |
| 761 public: | 779 public: |
| 762 void RunDevTooledTest() override { | 780 void RunDevTooledTest() override { |
| 763 EXPECT_TRUE(embedded_test_server()->Start()); | 781 EXPECT_TRUE(embedded_test_server()->Start()); |
| 782 base::RunLoop run_loop; |
| 764 devtools_client_->GetPage()->AddObserver(this); | 783 devtools_client_->GetPage()->AddObserver(this); |
| 765 devtools_client_->GetPage()->Enable(); | 784 devtools_client_->GetPage()->Enable(run_loop.QuitClosure()); |
| 785 base::MessageLoop::ScopedNestableTaskAllower nest_loop( |
| 786 base::MessageLoop::current()); |
| 787 run_loop.Run(); |
| 766 devtools_client_->GetPage()->Navigate( | 788 devtools_client_->GetPage()->Navigate( |
| 767 embedded_test_server()->GetURL("/hello.html").spec()); | 789 embedded_test_server()->GetURL("/hello.html").spec()); |
| 768 } | 790 } |
| 769 | 791 |
| 770 void OnLoadEventFired(const page::LoadEventFiredParams& params) override { | 792 void OnLoadEventFired(const page::LoadEventFiredParams& params) override { |
| 771 devtools_client_->GetPage()->GetExperimental()->RemoveObserver(this); | 793 devtools_client_->GetPage()->GetExperimental()->RemoveObserver(this); |
| 772 devtools_client_->GetDOM()->GetDocument( | 794 devtools_client_->GetDOM()->GetDocument( |
| 773 base::Bind(&HeadlessDevToolsMethodCallErrorTest::OnGetDocument, | 795 base::Bind(&HeadlessDevToolsMethodCallErrorTest::OnGetDocument, |
| 774 base::Unretained(this))); | 796 base::Unretained(this))); |
| 775 } | 797 } |
| (...skipping 16 matching lines...) Expand all Loading... |
| 792 | 814 |
| 793 HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessDevToolsMethodCallErrorTest); | 815 HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessDevToolsMethodCallErrorTest); |
| 794 | 816 |
| 795 class HeadlessDevToolsNetworkBlockedUrlTest | 817 class HeadlessDevToolsNetworkBlockedUrlTest |
| 796 : public HeadlessAsyncDevTooledBrowserTest, | 818 : public HeadlessAsyncDevTooledBrowserTest, |
| 797 public page::Observer, | 819 public page::Observer, |
| 798 public network::Observer { | 820 public network::Observer { |
| 799 public: | 821 public: |
| 800 void RunDevTooledTest() override { | 822 void RunDevTooledTest() override { |
| 801 EXPECT_TRUE(embedded_test_server()->Start()); | 823 EXPECT_TRUE(embedded_test_server()->Start()); |
| 824 base::RunLoop run_loop; |
| 802 devtools_client_->GetPage()->AddObserver(this); | 825 devtools_client_->GetPage()->AddObserver(this); |
| 803 devtools_client_->GetPage()->Enable(); | 826 devtools_client_->GetPage()->Enable(); |
| 804 devtools_client_->GetNetwork()->AddObserver(this); | 827 devtools_client_->GetNetwork()->AddObserver(this); |
| 805 devtools_client_->GetNetwork()->Enable(); | 828 devtools_client_->GetNetwork()->Enable(run_loop.QuitClosure()); |
| 829 base::MessageLoop::ScopedNestableTaskAllower nest_loop( |
| 830 base::MessageLoop::current()); |
| 831 run_loop.Run(); |
| 806 devtools_client_->GetNetwork()->GetExperimental()->AddBlockedURL( | 832 devtools_client_->GetNetwork()->GetExperimental()->AddBlockedURL( |
| 807 network::AddBlockedURLParams::Builder() | 833 network::AddBlockedURLParams::Builder() |
| 808 .SetUrl("dom_tree_test.css") | 834 .SetUrl("dom_tree_test.css") |
| 809 .Build()); | 835 .Build()); |
| 810 devtools_client_->GetPage()->Navigate( | 836 devtools_client_->GetPage()->Navigate( |
| 811 embedded_test_server()->GetURL("/dom_tree_test.html").spec()); | 837 embedded_test_server()->GetURL("/dom_tree_test.html").spec()); |
| 812 } | 838 } |
| 813 | 839 |
| 814 std::string GetUrlPath(const std::string& url) const { | 840 std::string GetUrlPath(const std::string& url) const { |
| 815 GURL gurl(url); | 841 GURL gurl(url); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 845 | 871 |
| 846 std::map<std::string, std::string> request_id_to_path_; | 872 std::map<std::string, std::string> request_id_to_path_; |
| 847 std::vector<std::string> requests_to_be_sent_; | 873 std::vector<std::string> requests_to_be_sent_; |
| 848 std::vector<std::string> responses_received_; | 874 std::vector<std::string> responses_received_; |
| 849 std::vector<std::string> failures_; | 875 std::vector<std::string> failures_; |
| 850 }; | 876 }; |
| 851 | 877 |
| 852 HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessDevToolsNetworkBlockedUrlTest); | 878 HEADLESS_ASYNC_DEVTOOLED_TEST_F(HeadlessDevToolsNetworkBlockedUrlTest); |
| 853 | 879 |
| 854 } // namespace headless | 880 } // namespace headless |
| OLD | NEW |