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 "components/subresource_filter/core/common/document_subresource_filter.
h" | 5 #include "components/subresource_filter/core/common/document_subresource_filter.
h" |
6 | 6 |
7 #include "base/files/file.h" | 7 #include "base/files/file.h" |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/strings/string_piece.h" | 9 #include "base/strings/string_piece.h" |
10 #include "components/subresource_filter/core/common/memory_mapped_ruleset.h" | 10 #include "components/subresource_filter/core/common/memory_mapped_ruleset.h" |
11 #include "components/subresource_filter/core/common/test_ruleset_creator.h" | 11 #include "components/subresource_filter/core/common/test_ruleset_creator.h" |
12 #include "components/subresource_filter/core/common/test_ruleset_utils.h" | 12 #include "components/subresource_filter/core/common/test_ruleset_utils.h" |
13 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
14 | 14 |
15 namespace subresource_filter { | 15 namespace subresource_filter { |
16 | 16 |
17 namespace { | 17 namespace { |
18 | 18 |
19 constexpr auto kDisabled = ActivationLevel::DISABLED; | 19 constexpr auto kDisabled = ActivationLevel::DISABLED; |
20 constexpr auto kDryRun = ActivationLevel::DRYRUN; | 20 constexpr auto kDryRun = ActivationLevel::DRYRUN; |
21 constexpr auto kEnabled = ActivationLevel::ENABLED; | 21 constexpr auto kEnabled = ActivationLevel::ENABLED; |
22 | 22 |
23 constexpr auto kImageType = proto::ELEMENT_TYPE_IMAGE; | 23 constexpr auto kImageType = proto::ELEMENT_TYPE_IMAGE; |
24 constexpr auto kSubdocumentType = proto::ELEMENT_TYPE_SUBDOCUMENT; | 24 constexpr auto kSubdocumentType = proto::ELEMENT_TYPE_SUBDOCUMENT; |
25 | 25 |
26 constexpr const char kTestAlphaURL[] = "http://example.com/alpha"; | 26 constexpr const char kTestAlphaURL[] = "http://example.com/alpha"; |
27 constexpr const char kTestAlphaDataURI[] = "data:text/plain,alpha"; | 27 constexpr const char kTestAlphaDataURI[] = "data:text/plain,alpha"; |
| 28 constexpr const char kTestAlphaWSURI[] = "ws://example.com/alpha"; |
28 constexpr const char kTestBetaURL[] = "http://example.com/beta"; | 29 constexpr const char kTestBetaURL[] = "http://example.com/beta"; |
29 | 30 |
30 constexpr const char kTestAlphaURLPathSuffix[] = "alpha"; | 31 constexpr const char kTestAlphaURLPathSuffix[] = "alpha"; |
31 | 32 |
32 } // namespace | 33 } // namespace |
33 | 34 |
34 // Tests for DocumentSubresourceFilter class. ---------------------------------- | 35 // Tests for DocumentSubresourceFilter class. ---------------------------------- |
35 | 36 |
36 class DocumentSubresourceFilterTest : public ::testing::Test { | 37 class DocumentSubresourceFilterTest : public ::testing::Test { |
37 public: | 38 public: |
(...skipping 25 matching lines...) Expand all Loading... |
63 | 64 |
64 TEST_F(DocumentSubresourceFilterTest, DryRun) { | 65 TEST_F(DocumentSubresourceFilterTest, DryRun) { |
65 ActivationState activation_state(kDryRun); | 66 ActivationState activation_state(kDryRun); |
66 activation_state.measure_performance = true; | 67 activation_state.measure_performance = true; |
67 DocumentSubresourceFilter filter(url::Origin(), activation_state, ruleset()); | 68 DocumentSubresourceFilter filter(url::Origin(), activation_state, ruleset()); |
68 | 69 |
69 EXPECT_EQ(LoadPolicy::WOULD_DISALLOW, | 70 EXPECT_EQ(LoadPolicy::WOULD_DISALLOW, |
70 filter.GetLoadPolicy(GURL(kTestAlphaURL), kImageType)); | 71 filter.GetLoadPolicy(GURL(kTestAlphaURL), kImageType)); |
71 EXPECT_EQ(LoadPolicy::ALLOW, | 72 EXPECT_EQ(LoadPolicy::ALLOW, |
72 filter.GetLoadPolicy(GURL(kTestAlphaDataURI), kImageType)); | 73 filter.GetLoadPolicy(GURL(kTestAlphaDataURI), kImageType)); |
| 74 EXPECT_EQ( |
| 75 LoadPolicy::WOULD_DISALLOW, |
| 76 filter.GetLoadPolicy(GURL(kTestAlphaWSURI), proto::ELEMENT_TYPE_OTHER)); |
73 EXPECT_EQ(LoadPolicy::ALLOW, | 77 EXPECT_EQ(LoadPolicy::ALLOW, |
74 filter.GetLoadPolicy(GURL(kTestBetaURL), kImageType)); | 78 filter.GetLoadPolicy(GURL(kTestBetaURL), kImageType)); |
75 EXPECT_EQ(LoadPolicy::WOULD_DISALLOW, | 79 EXPECT_EQ(LoadPolicy::WOULD_DISALLOW, |
76 filter.GetLoadPolicy(GURL(kTestAlphaURL), kSubdocumentType)); | 80 filter.GetLoadPolicy(GURL(kTestAlphaURL), kSubdocumentType)); |
77 EXPECT_EQ(LoadPolicy::ALLOW, | 81 EXPECT_EQ(LoadPolicy::ALLOW, |
78 filter.GetLoadPolicy(GURL(kTestBetaURL), kSubdocumentType)); | 82 filter.GetLoadPolicy(GURL(kTestBetaURL), kSubdocumentType)); |
79 | 83 |
80 const auto& statistics = filter.statistics(); | 84 const auto& statistics = filter.statistics(); |
81 EXPECT_EQ(5, statistics.num_loads_total); | 85 EXPECT_EQ(6, statistics.num_loads_total); |
82 EXPECT_EQ(4, statistics.num_loads_evaluated); | 86 EXPECT_EQ(5, statistics.num_loads_evaluated); |
83 EXPECT_EQ(2, statistics.num_loads_matching_rules); | 87 EXPECT_EQ(3, statistics.num_loads_matching_rules); |
84 EXPECT_EQ(0, statistics.num_loads_disallowed); | 88 EXPECT_EQ(0, statistics.num_loads_disallowed); |
85 } | 89 } |
86 | 90 |
87 TEST_F(DocumentSubresourceFilterTest, Enabled) { | 91 TEST_F(DocumentSubresourceFilterTest, Enabled) { |
88 auto test_impl = [this](bool measure_performance) { | 92 auto test_impl = [this](bool measure_performance) { |
89 ActivationState activation_state(kEnabled); | 93 ActivationState activation_state(kEnabled); |
90 activation_state.measure_performance = measure_performance; | 94 activation_state.measure_performance = measure_performance; |
91 DocumentSubresourceFilter filter(url::Origin(), activation_state, | 95 DocumentSubresourceFilter filter(url::Origin(), activation_state, |
92 ruleset()); | 96 ruleset()); |
93 | 97 |
94 EXPECT_EQ(LoadPolicy::DISALLOW, | 98 EXPECT_EQ(LoadPolicy::DISALLOW, |
95 filter.GetLoadPolicy(GURL(kTestAlphaURL), kImageType)); | 99 filter.GetLoadPolicy(GURL(kTestAlphaURL), kImageType)); |
96 EXPECT_EQ(LoadPolicy::ALLOW, | 100 EXPECT_EQ(LoadPolicy::ALLOW, |
97 filter.GetLoadPolicy(GURL(kTestAlphaDataURI), kImageType)); | 101 filter.GetLoadPolicy(GURL(kTestAlphaDataURI), kImageType)); |
| 102 EXPECT_EQ( |
| 103 LoadPolicy::DISALLOW, |
| 104 filter.GetLoadPolicy(GURL(kTestAlphaWSURI), proto::ELEMENT_TYPE_OTHER)); |
98 EXPECT_EQ(LoadPolicy::ALLOW, | 105 EXPECT_EQ(LoadPolicy::ALLOW, |
99 filter.GetLoadPolicy(GURL(kTestBetaURL), kImageType)); | 106 filter.GetLoadPolicy(GURL(kTestBetaURL), kImageType)); |
100 EXPECT_EQ(LoadPolicy::DISALLOW, | 107 EXPECT_EQ(LoadPolicy::DISALLOW, |
101 filter.GetLoadPolicy(GURL(kTestAlphaURL), kSubdocumentType)); | 108 filter.GetLoadPolicy(GURL(kTestAlphaURL), kSubdocumentType)); |
102 EXPECT_EQ(LoadPolicy::ALLOW, | 109 EXPECT_EQ(LoadPolicy::ALLOW, |
103 filter.GetLoadPolicy(GURL(kTestBetaURL), kSubdocumentType)); | 110 filter.GetLoadPolicy(GURL(kTestBetaURL), kSubdocumentType)); |
104 | 111 |
105 const auto& statistics = filter.statistics(); | 112 const auto& statistics = filter.statistics(); |
106 EXPECT_EQ(5, statistics.num_loads_total); | 113 EXPECT_EQ(6, statistics.num_loads_total); |
107 EXPECT_EQ(4, statistics.num_loads_evaluated); | 114 EXPECT_EQ(5, statistics.num_loads_evaluated); |
108 EXPECT_EQ(2, statistics.num_loads_matching_rules); | 115 EXPECT_EQ(3, statistics.num_loads_matching_rules); |
109 EXPECT_EQ(2, statistics.num_loads_disallowed); | 116 EXPECT_EQ(3, statistics.num_loads_disallowed); |
110 | 117 |
111 if (!measure_performance) { | 118 if (!measure_performance) { |
112 EXPECT_TRUE(statistics.evaluation_total_cpu_duration.is_zero()); | 119 EXPECT_TRUE(statistics.evaluation_total_cpu_duration.is_zero()); |
113 EXPECT_TRUE(statistics.evaluation_total_wall_duration.is_zero()); | 120 EXPECT_TRUE(statistics.evaluation_total_wall_duration.is_zero()); |
114 } | 121 } |
115 // Otherwise, don't expect |total_duration| to be non-zero, although it | 122 // Otherwise, don't expect |total_duration| to be non-zero, although it |
116 // practically is (when timer is supported). | 123 // practically is (when timer is supported). |
117 }; | 124 }; |
118 | 125 |
119 test_impl(true /* measure_performance */); | 126 test_impl(true /* measure_performance */); |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
282 for (const auto& url_string : test_case.ancestor_document_urls) | 289 for (const auto& url_string : test_case.ancestor_document_urls) |
283 ancestor_document_urls.emplace_back(url_string); | 290 ancestor_document_urls.emplace_back(url_string); |
284 | 291 |
285 ActivationState activation_state = ComputeActivationState( | 292 ActivationState activation_state = ComputeActivationState( |
286 test_case.activation_level, false, ancestor_document_urls, ruleset()); | 293 test_case.activation_level, false, ancestor_document_urls, ruleset()); |
287 EXPECT_EQ(test_case.expected_activation_state, activation_state); | 294 EXPECT_EQ(test_case.expected_activation_state, activation_state); |
288 } | 295 } |
289 } | 296 } |
290 | 297 |
291 } // namespace subresource_filter | 298 } // namespace subresource_filter |
OLD | NEW |