Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(768)

Side by Side Diff: components/subresource_filter/content/browser/async_document_subresource_filter_unittest.cc

Issue 2731013002: ActivationStateComputingThrottle unit tests (Closed)
Patch Set: engedy review2 Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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/content/browser/async_document_subresour ce_filter.h" 5 #include "components/subresource_filter/content/browser/async_document_subresour ce_filter.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/bind_helpers.h" 11 #include "base/bind_helpers.h"
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/memory/ptr_util.h" 13 #include "base/memory/ptr_util.h"
14 #include "base/message_loop/message_loop.h" 14 #include "base/message_loop/message_loop.h"
15 #include "base/run_loop.h" 15 #include "base/run_loop.h"
16 #include "base/test/test_simple_task_runner.h" 16 #include "base/test/test_simple_task_runner.h"
17 #include "base/threading/sequenced_task_runner_handle.h" 17 #include "base/threading/sequenced_task_runner_handle.h"
18 #include "components/subresource_filter/content/browser/async_document_subresour ce_filter_test_utils.h"
18 #include "components/subresource_filter/core/common/proto/rules.pb.h" 19 #include "components/subresource_filter/core/common/proto/rules.pb.h"
19 #include "components/subresource_filter/core/common/test_ruleset_creator.h" 20 #include "components/subresource_filter/core/common/test_ruleset_creator.h"
20 #include "components/subresource_filter/core/common/test_ruleset_utils.h" 21 #include "components/subresource_filter/core/common/test_ruleset_utils.h"
21 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
22 23
23 namespace subresource_filter { 24 namespace subresource_filter {
24 25
25 class AsyncDocumentSubresourceFilterTest : public ::testing::Test { 26 class AsyncDocumentSubresourceFilterTest : public ::testing::Test {
26 public: 27 public:
27 AsyncDocumentSubresourceFilterTest() = default; 28 AsyncDocumentSubresourceFilterTest() = default;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
77 scoped_refptr<base::TestSimpleTaskRunner> blocking_task_runner_ = 78 scoped_refptr<base::TestSimpleTaskRunner> blocking_task_runner_ =
78 new base::TestSimpleTaskRunner; 79 new base::TestSimpleTaskRunner;
79 80
80 std::unique_ptr<VerifiedRulesetDealer::Handle> dealer_handle_; 81 std::unique_ptr<VerifiedRulesetDealer::Handle> dealer_handle_;
81 82
82 DISALLOW_COPY_AND_ASSIGN(AsyncDocumentSubresourceFilterTest); 83 DISALLOW_COPY_AND_ASSIGN(AsyncDocumentSubresourceFilterTest);
83 }; 84 };
84 85
85 namespace { 86 namespace {
86 87
87 class TestActivationStateCallbackReceiver { 88 // TODO(csharrison): If more consumers need to test these callbacks at this
88 public: 89 // granularity, consider moving these classes into
89 TestActivationStateCallbackReceiver() = default; 90 // async_document_subresource_filter_test_utils.
90
91 base::Callback<void(ActivationState)> callback() {
92 return base::Bind(&TestActivationStateCallbackReceiver::Callback,
93 base::Unretained(this));
94 }
95 void ExpectReceivedOnce(ActivationState expected_state) const {
96 ASSERT_EQ(1, callback_count_);
97 EXPECT_EQ(expected_state, last_activation_state_);
98 }
99
100 private:
101 void Callback(ActivationState activation_state) {
102 ++callback_count_;
103 last_activation_state_ = activation_state;
104 }
105
106 ActivationState last_activation_state_;
107 int callback_count_ = 0;
108
109 DISALLOW_COPY_AND_ASSIGN(TestActivationStateCallbackReceiver);
110 };
111
112 class TestCallbackReceiver { 91 class TestCallbackReceiver {
113 public: 92 public:
114 TestCallbackReceiver() = default; 93 TestCallbackReceiver() = default;
115 94
116 base::Closure closure() { 95 base::Closure GetClosure() {
117 return base::Bind(&TestCallbackReceiver::Callback, base::Unretained(this)); 96 return base::Bind(&TestCallbackReceiver::Callback, base::Unretained(this));
118 } 97 }
119 int callback_count() const { return callback_count_; } 98 int callback_count() const { return callback_count_; }
120 99
121 private: 100 private:
122 void Callback() { ++callback_count_; } 101 void Callback() { ++callback_count_; }
123 102
124 int callback_count_ = 0; 103 int callback_count_ = 0;
125 104
126 DISALLOW_COPY_AND_ASSIGN(TestCallbackReceiver); 105 DISALLOW_COPY_AND_ASSIGN(TestCallbackReceiver);
127 }; 106 };
128 107
129 class LoadPolicyCallbackReceiver { 108 class LoadPolicyCallbackReceiver {
130 public: 109 public:
131 LoadPolicyCallbackReceiver() = default; 110 LoadPolicyCallbackReceiver() = default;
132 111
133 AsyncDocumentSubresourceFilter::LoadPolicyCallback callback() { 112 AsyncDocumentSubresourceFilter::LoadPolicyCallback GetCallback() {
134 return base::Bind(&LoadPolicyCallbackReceiver::Callback, 113 return base::Bind(&LoadPolicyCallbackReceiver::Callback,
135 base::Unretained(this)); 114 base::Unretained(this));
136 } 115 }
137 void ExpectReceivedOnce(LoadPolicy load_policy) const { 116 void ExpectReceivedOnce(LoadPolicy load_policy) const {
138 ASSERT_EQ(1, callback_count_); 117 ASSERT_EQ(1, callback_count_);
139 EXPECT_EQ(load_policy, last_load_policy_); 118 EXPECT_EQ(load_policy, last_load_policy_);
140 } 119 }
141 120
142 private: 121 private:
143 void Callback(LoadPolicy load_policy) { 122 void Callback(LoadPolicy load_policy) {
144 ++callback_count_; 123 ++callback_count_;
145 last_load_policy_ = load_policy; 124 last_load_policy_ = load_policy;
146 } 125 }
147 126
148 int callback_count_ = 0; 127 int callback_count_ = 0;
149 LoadPolicy last_load_policy_; 128 LoadPolicy last_load_policy_;
150 129
151 DISALLOW_COPY_AND_ASSIGN(LoadPolicyCallbackReceiver); 130 DISALLOW_COPY_AND_ASSIGN(LoadPolicyCallbackReceiver);
152 }; 131 };
153 132
154 } // namespace 133 } // namespace
155 134
156 TEST_F(AsyncDocumentSubresourceFilterTest, ActivationStateIsReported) { 135 TEST_F(AsyncDocumentSubresourceFilterTest, ActivationStateIsReported) {
157 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset())); 136 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset()));
158 auto ruleset_handle = CreateRulesetHandle(); 137 auto ruleset_handle = CreateRulesetHandle();
159 138
160 AsyncDocumentSubresourceFilter::InitializationParams params( 139 AsyncDocumentSubresourceFilter::InitializationParams params(
161 GURL("http://example.com"), ActivationLevel::ENABLED, false); 140 GURL("http://example.com"), ActivationLevel::ENABLED, false);
162 141
163 TestActivationStateCallbackReceiver activation_state; 142 testing::TestActivationStateCallbackReceiver activation_state;
164 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>( 143 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>(
165 ruleset_handle.get(), std::move(params), activation_state.callback(), 144 ruleset_handle.get(), std::move(params), activation_state.GetCallback(),
166 base::OnceClosure()); 145 base::OnceClosure());
167 146
168 RunUntilIdle(); 147 RunUntilIdle();
169 activation_state.ExpectReceivedOnce( 148 activation_state.ExpectReceivedOnce(
170 ActivationState(ActivationLevel::ENABLED)); 149 ActivationState(ActivationLevel::ENABLED));
171 } 150 }
172 151
173 TEST_F(AsyncDocumentSubresourceFilterTest, ActivationStateIsComputedCorrectly) { 152 TEST_F(AsyncDocumentSubresourceFilterTest, ActivationStateIsComputedCorrectly) {
174 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset())); 153 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset()));
175 auto ruleset_handle = CreateRulesetHandle(); 154 auto ruleset_handle = CreateRulesetHandle();
176 155
177 AsyncDocumentSubresourceFilter::InitializationParams params( 156 AsyncDocumentSubresourceFilter::InitializationParams params(
178 GURL("http://whitelisted.subframe.com"), ActivationLevel::ENABLED, false); 157 GURL("http://whitelisted.subframe.com"), ActivationLevel::ENABLED, false);
179 params.parent_document_origin = url::Origin(GURL("http://example.com")); 158 params.parent_document_origin = url::Origin(GURL("http://example.com"));
180 159
181 TestActivationStateCallbackReceiver activation_state; 160 testing::TestActivationStateCallbackReceiver activation_state;
182 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>( 161 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>(
183 ruleset_handle.get(), std::move(params), activation_state.callback(), 162 ruleset_handle.get(), std::move(params), activation_state.GetCallback(),
184 base::OnceClosure()); 163 base::OnceClosure());
185 164
186 RunUntilIdle(); 165 RunUntilIdle();
187 166
188 ActivationState expected_activation_state(ActivationLevel::ENABLED); 167 ActivationState expected_activation_state(ActivationLevel::ENABLED);
189 expected_activation_state.generic_blocking_rules_disabled = true; 168 expected_activation_state.generic_blocking_rules_disabled = true;
190 activation_state.ExpectReceivedOnce(expected_activation_state); 169 activation_state.ExpectReceivedOnce(expected_activation_state);
191 } 170 }
192 171
193 TEST_F(AsyncDocumentSubresourceFilterTest, DisabledForCorruptRuleset) { 172 TEST_F(AsyncDocumentSubresourceFilterTest, DisabledForCorruptRuleset) {
194 testing::TestRuleset::CorruptByFilling(ruleset(), 0, 100, 0xFF); 173 testing::TestRuleset::CorruptByFilling(ruleset(), 0, 100, 0xFF);
195 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset())); 174 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset()));
196 175
197 auto ruleset_handle = CreateRulesetHandle(); 176 auto ruleset_handle = CreateRulesetHandle();
198 177
199 AsyncDocumentSubresourceFilter::InitializationParams params( 178 AsyncDocumentSubresourceFilter::InitializationParams params(
200 GURL("http://example.com"), ActivationLevel::ENABLED, false); 179 GURL("http://example.com"), ActivationLevel::ENABLED, false);
201 180
202 TestActivationStateCallbackReceiver activation_state; 181 testing::TestActivationStateCallbackReceiver activation_state;
203 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>( 182 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>(
204 ruleset_handle.get(), std::move(params), activation_state.callback(), 183 ruleset_handle.get(), std::move(params), activation_state.GetCallback(),
205 base::OnceClosure()); 184 base::OnceClosure());
206 185
207 RunUntilIdle(); 186 RunUntilIdle();
208 activation_state.ExpectReceivedOnce( 187 activation_state.ExpectReceivedOnce(
209 ActivationState(ActivationLevel::DISABLED)); 188 ActivationState(ActivationLevel::DISABLED));
210 } 189 }
211 190
212 TEST_F(AsyncDocumentSubresourceFilterTest, GetLoadPolicyForSubdocument) { 191 TEST_F(AsyncDocumentSubresourceFilterTest, GetLoadPolicyForSubdocument) {
213 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset())); 192 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset()));
214 auto ruleset_handle = CreateRulesetHandle(); 193 auto ruleset_handle = CreateRulesetHandle();
215 194
216 AsyncDocumentSubresourceFilter::InitializationParams params( 195 AsyncDocumentSubresourceFilter::InitializationParams params(
217 GURL("http://example.com"), ActivationLevel::ENABLED, false); 196 GURL("http://example.com"), ActivationLevel::ENABLED, false);
218 197
219 TestActivationStateCallbackReceiver activation_state; 198 testing::TestActivationStateCallbackReceiver activation_state;
220 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>( 199 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>(
221 ruleset_handle.get(), std::move(params), activation_state.callback(), 200 ruleset_handle.get(), std::move(params), activation_state.GetCallback(),
222 base::OnceClosure()); 201 base::OnceClosure());
223 202
224 LoadPolicyCallbackReceiver load_policy_1; 203 LoadPolicyCallbackReceiver load_policy_1;
225 LoadPolicyCallbackReceiver load_policy_2; 204 LoadPolicyCallbackReceiver load_policy_2;
226 filter->GetLoadPolicyForSubdocument(GURL("http://example.com/allowed.html"), 205 filter->GetLoadPolicyForSubdocument(GURL("http://example.com/allowed.html"),
227 load_policy_1.callback()); 206 load_policy_1.GetCallback());
228 filter->GetLoadPolicyForSubdocument( 207 filter->GetLoadPolicyForSubdocument(
229 GURL("http://example.com/disallowed.html"), load_policy_2.callback()); 208 GURL("http://example.com/disallowed.html"), load_policy_2.GetCallback());
230 209
231 RunUntilIdle(); 210 RunUntilIdle();
232 load_policy_1.ExpectReceivedOnce(LoadPolicy::ALLOW); 211 load_policy_1.ExpectReceivedOnce(LoadPolicy::ALLOW);
233 load_policy_2.ExpectReceivedOnce(LoadPolicy::DISALLOW); 212 load_policy_2.ExpectReceivedOnce(LoadPolicy::DISALLOW);
234 } 213 }
235 214
236 TEST_F(AsyncDocumentSubresourceFilterTest, FirstDisallowedLoadIsReported) { 215 TEST_F(AsyncDocumentSubresourceFilterTest, FirstDisallowedLoadIsReported) {
237 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset())); 216 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset()));
238 auto ruleset_handle = CreateRulesetHandle(); 217 auto ruleset_handle = CreateRulesetHandle();
239 218
240 TestCallbackReceiver first_disallowed_load_receiver; 219 TestCallbackReceiver first_disallowed_load_receiver;
241 AsyncDocumentSubresourceFilter::InitializationParams params( 220 AsyncDocumentSubresourceFilter::InitializationParams params(
242 GURL("http://example.com"), ActivationLevel::ENABLED, false); 221 GURL("http://example.com"), ActivationLevel::ENABLED, false);
243 222
244 TestActivationStateCallbackReceiver activation_state; 223 testing::TestActivationStateCallbackReceiver activation_state;
245 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>( 224 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>(
246 ruleset_handle.get(), std::move(params), activation_state.callback(), 225 ruleset_handle.get(), std::move(params), activation_state.GetCallback(),
247 first_disallowed_load_receiver.closure()); 226 first_disallowed_load_receiver.GetClosure());
248 227
249 LoadPolicyCallbackReceiver load_policy_1; 228 LoadPolicyCallbackReceiver load_policy_1;
250 filter->GetLoadPolicyForSubdocument(GURL("http://example.com/allowed.html"), 229 filter->GetLoadPolicyForSubdocument(GURL("http://example.com/allowed.html"),
251 load_policy_1.callback()); 230 load_policy_1.GetCallback());
252 RunUntilIdle(); 231 RunUntilIdle();
253 load_policy_1.ExpectReceivedOnce(LoadPolicy::ALLOW); 232 load_policy_1.ExpectReceivedOnce(LoadPolicy::ALLOW);
254 EXPECT_EQ(0, first_disallowed_load_receiver.callback_count()); 233 EXPECT_EQ(0, first_disallowed_load_receiver.callback_count());
255 234
256 LoadPolicyCallbackReceiver load_policy_2; 235 LoadPolicyCallbackReceiver load_policy_2;
257 filter->GetLoadPolicyForSubdocument( 236 filter->GetLoadPolicyForSubdocument(
258 GURL("http://example.com/disallowed.html"), load_policy_2.callback()); 237 GURL("http://example.com/disallowed.html"), load_policy_2.GetCallback());
259 RunUntilIdle(); 238 RunUntilIdle();
260 load_policy_2.ExpectReceivedOnce(LoadPolicy::DISALLOW); 239 load_policy_2.ExpectReceivedOnce(LoadPolicy::DISALLOW);
261 EXPECT_EQ(0, first_disallowed_load_receiver.callback_count()); 240 EXPECT_EQ(0, first_disallowed_load_receiver.callback_count());
262 241
263 filter->ReportDisallowedLoad(); 242 filter->ReportDisallowedLoad();
264 EXPECT_EQ(1, first_disallowed_load_receiver.callback_count()); 243 EXPECT_EQ(1, first_disallowed_load_receiver.callback_count());
265 RunUntilIdle(); 244 RunUntilIdle();
266 } 245 }
267 246
268 } // namespace subresource_filter 247 } // namespace subresource_filter
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698