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/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/files/file_enumerator.h" | 8 #include "base/files/file_enumerator.h" |
9 #include "base/files/file_util.h" | 9 #include "base/files/file_util.h" |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
11 #include "base/strings/stringprintf.h" | 11 #include "base/strings/stringprintf.h" |
12 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" |
13 #include "base/threading/thread_restrictions.h" | 13 #include "base/threading/thread_restrictions.h" |
14 #include "content/public/browser/permission_manager.h" | 14 #include "content/public/browser/permission_manager.h" |
15 #include "content/public/browser/permission_type.h" | 15 #include "content/public/browser/permission_type.h" |
16 #include "content/public/common/url_constants.h" | 16 #include "content/public/common/url_constants.h" |
17 #include "content/public/test/browser_test.h" | 17 #include "content/public/test/browser_test.h" |
18 #include "headless/lib/browser/headless_browser_context_impl.h" | 18 #include "headless/lib/browser/headless_browser_context_impl.h" |
19 #include "headless/lib/browser/headless_web_contents_impl.h" | 19 #include "headless/lib/browser/headless_web_contents_impl.h" |
20 #include "headless/lib/headless_macros.h" | 20 #include "headless/lib/headless_macros.h" |
21 #include "headless/public/devtools/domains/inspector.h" | 21 #include "headless/public/devtools/domains/inspector.h" |
22 #include "headless/public/devtools/domains/network.h" | 22 #include "headless/public/devtools/domains/network.h" |
23 #include "headless/public/devtools/domains/page.h" | 23 #include "headless/public/devtools/domains/page.h" |
| 24 #include "headless/public/devtools/domains/tracing.h" |
24 #include "headless/public/headless_browser.h" | 25 #include "headless/public/headless_browser.h" |
25 #include "headless/public/headless_devtools_client.h" | 26 #include "headless/public/headless_devtools_client.h" |
26 #include "headless/public/headless_devtools_target.h" | 27 #include "headless/public/headless_devtools_target.h" |
27 #include "headless/public/headless_web_contents.h" | 28 #include "headless/public/headless_web_contents.h" |
28 #include "headless/test/headless_browser_test.h" | 29 #include "headless/test/headless_browser_test.h" |
29 #include "headless/test/test_protocol_handler.h" | 30 #include "headless/test/test_protocol_handler.h" |
30 #include "headless/test/test_url_request_job.h" | 31 #include "headless/test/test_url_request_job.h" |
31 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" | 32 #include "net/base/registry_controlled_domains/registry_controlled_domain.h" |
32 #include "net/cookies/cookie_store.h" | 33 #include "net/cookies/cookie_store.h" |
33 #include "net/test/spawned_test_server/spawned_test_server.h" | 34 #include "net/test/spawned_test_server/spawned_test_server.h" |
(...skipping 748 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
782 content::PermissionManager* permission_manager = | 783 content::PermissionManager* permission_manager = |
783 web_contents->browser_context()->GetPermissionManager(); | 784 web_contents->browser_context()->GetPermissionManager(); |
784 EXPECT_NE(nullptr, permission_manager); | 785 EXPECT_NE(nullptr, permission_manager); |
785 | 786 |
786 // Check that the permission manager returns ASK for a given permission type. | 787 // Check that the permission manager returns ASK for a given permission type. |
787 EXPECT_EQ(blink::mojom::PermissionStatus::ASK, | 788 EXPECT_EQ(blink::mojom::PermissionStatus::ASK, |
788 permission_manager->GetPermissionStatus( | 789 permission_manager->GetPermissionStatus( |
789 content::PermissionType::NOTIFICATIONS, url, url)); | 790 content::PermissionType::NOTIFICATIONS, url, url)); |
790 } | 791 } |
791 | 792 |
| 793 namespace { |
| 794 |
| 795 class TraceHelper : public headless::tracing::ExperimentalObserver { |
| 796 public: |
| 797 TraceHelper(HeadlessBrowserTest* browser_test, HeadlessDevToolsTarget* target) |
| 798 : browser_test_(browser_test), |
| 799 target_(target), |
| 800 client_(HeadlessDevToolsClient::Create()), |
| 801 tracing_data_(base::MakeUnique<base::ListValue>()) { |
| 802 EXPECT_FALSE(target_->IsAttached()); |
| 803 target_->AttachClient(client_.get()); |
| 804 EXPECT_TRUE(target_->IsAttached()); |
| 805 |
| 806 client_->GetTracing()->GetExperimental()->AddObserver(this); |
| 807 |
| 808 client_->GetTracing()->GetExperimental()->Start( |
| 809 tracing::StartParams::Builder().Build(), |
| 810 base::Bind(&TraceHelper::OnTracingStarted, base::Unretained(this))); |
| 811 } |
| 812 |
| 813 ~TraceHelper() override { |
| 814 target_->DetachClient(client_.get()); |
| 815 EXPECT_FALSE(target_->IsAttached()); |
| 816 } |
| 817 |
| 818 std::unique_ptr<base::ListValue> TakeTracingData() { |
| 819 return std::move(tracing_data_); |
| 820 } |
| 821 |
| 822 private: |
| 823 void OnTracingStarted(std::unique_ptr<headless::tracing::StartResult>) { |
| 824 // We don't need the callback from End, but the OnTracingComplete event. |
| 825 client_->GetTracing()->GetExperimental()->End( |
| 826 headless::tracing::EndParams::Builder().Build()); |
| 827 } |
| 828 |
| 829 // headless::tracing::ExperimentalObserver implementation: |
| 830 void OnDataCollected( |
| 831 const headless::tracing::DataCollectedParams& params) override { |
| 832 for (const auto& value : *params.GetValue()) { |
| 833 tracing_data_->Append(value->CreateDeepCopy()); |
| 834 } |
| 835 } |
| 836 |
| 837 void OnTracingComplete( |
| 838 const headless::tracing::TracingCompleteParams& params) override { |
| 839 browser_test_->FinishAsynchronousTest(); |
| 840 } |
| 841 |
| 842 HeadlessBrowserTest* browser_test_; // Not owned. |
| 843 HeadlessDevToolsTarget* target_; // Not owned. |
| 844 std::unique_ptr<HeadlessDevToolsClient> client_; |
| 845 |
| 846 std::unique_ptr<base::ListValue> tracing_data_; |
| 847 |
| 848 DISALLOW_COPY_AND_ASSIGN(TraceHelper); |
| 849 }; |
| 850 |
| 851 } // namespace |
| 852 |
| 853 IN_PROC_BROWSER_TEST_F(HeadlessBrowserTest, TraceUsingBrowserDevToolsTarget) { |
| 854 HeadlessDevToolsTarget* target = browser()->GetDevToolsTarget(); |
| 855 EXPECT_NE(nullptr, target); |
| 856 |
| 857 TraceHelper helper(this, target); |
| 858 RunAsynchronousTest(); |
| 859 |
| 860 std::unique_ptr<base::ListValue> tracing_data = helper.TakeTracingData(); |
| 861 EXPECT_TRUE(tracing_data); |
| 862 EXPECT_LT(0u, tracing_data->GetSize()); |
| 863 } |
| 864 |
792 } // namespace headless | 865 } // namespace headless |
OLD | NEW |