OLD | NEW |
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" |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
134 | 134 |
135 TEST_F(AsyncDocumentSubresourceFilterTest, ActivationStateIsReported) { | 135 TEST_F(AsyncDocumentSubresourceFilterTest, ActivationStateIsReported) { |
136 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset())); | 136 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset())); |
137 auto ruleset_handle = CreateRulesetHandle(); | 137 auto ruleset_handle = CreateRulesetHandle(); |
138 | 138 |
139 AsyncDocumentSubresourceFilter::InitializationParams params( | 139 AsyncDocumentSubresourceFilter::InitializationParams params( |
140 GURL("http://example.com"), ActivationLevel::ENABLED, false); | 140 GURL("http://example.com"), ActivationLevel::ENABLED, false); |
141 | 141 |
142 testing::TestActivationStateCallbackReceiver activation_state; | 142 testing::TestActivationStateCallbackReceiver activation_state; |
143 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>( | 143 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>( |
144 ruleset_handle.get(), std::move(params), activation_state.GetCallback(), | 144 ruleset_handle.get(), std::move(params), activation_state.GetCallback()); |
145 base::OnceClosure()); | |
146 | 145 |
147 RunUntilIdle(); | 146 RunUntilIdle(); |
148 activation_state.ExpectReceivedOnce( | 147 activation_state.ExpectReceivedOnce( |
149 ActivationState(ActivationLevel::ENABLED)); | 148 ActivationState(ActivationLevel::ENABLED)); |
150 } | 149 } |
151 | 150 |
152 TEST_F(AsyncDocumentSubresourceFilterTest, ActivationStateIsComputedCorrectly) { | 151 TEST_F(AsyncDocumentSubresourceFilterTest, ActivationStateIsComputedCorrectly) { |
153 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset())); | 152 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset())); |
154 auto ruleset_handle = CreateRulesetHandle(); | 153 auto ruleset_handle = CreateRulesetHandle(); |
155 | 154 |
156 AsyncDocumentSubresourceFilter::InitializationParams params( | 155 AsyncDocumentSubresourceFilter::InitializationParams params( |
157 GURL("http://whitelisted.subframe.com"), ActivationLevel::ENABLED, false); | 156 GURL("http://whitelisted.subframe.com"), ActivationLevel::ENABLED, false); |
158 params.parent_document_origin = url::Origin(GURL("http://example.com")); | 157 params.parent_document_origin = url::Origin(GURL("http://example.com")); |
159 | 158 |
160 testing::TestActivationStateCallbackReceiver activation_state; | 159 testing::TestActivationStateCallbackReceiver activation_state; |
161 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>( | 160 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>( |
162 ruleset_handle.get(), std::move(params), activation_state.GetCallback(), | 161 ruleset_handle.get(), std::move(params), activation_state.GetCallback()); |
163 base::OnceClosure()); | |
164 | 162 |
165 RunUntilIdle(); | 163 RunUntilIdle(); |
166 | 164 |
167 ActivationState expected_activation_state(ActivationLevel::ENABLED); | 165 ActivationState expected_activation_state(ActivationLevel::ENABLED); |
168 expected_activation_state.generic_blocking_rules_disabled = true; | 166 expected_activation_state.generic_blocking_rules_disabled = true; |
169 activation_state.ExpectReceivedOnce(expected_activation_state); | 167 activation_state.ExpectReceivedOnce(expected_activation_state); |
170 } | 168 } |
171 | 169 |
172 TEST_F(AsyncDocumentSubresourceFilterTest, DisabledForCorruptRuleset) { | 170 TEST_F(AsyncDocumentSubresourceFilterTest, DisabledForCorruptRuleset) { |
173 testing::TestRuleset::CorruptByFilling(ruleset(), 0, 100, 0xFF); | 171 testing::TestRuleset::CorruptByFilling(ruleset(), 0, 100, 0xFF); |
174 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset())); | 172 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset())); |
175 | 173 |
176 auto ruleset_handle = CreateRulesetHandle(); | 174 auto ruleset_handle = CreateRulesetHandle(); |
177 | 175 |
178 AsyncDocumentSubresourceFilter::InitializationParams params( | 176 AsyncDocumentSubresourceFilter::InitializationParams params( |
179 GURL("http://example.com"), ActivationLevel::ENABLED, false); | 177 GURL("http://example.com"), ActivationLevel::ENABLED, false); |
180 | 178 |
181 testing::TestActivationStateCallbackReceiver activation_state; | 179 testing::TestActivationStateCallbackReceiver activation_state; |
182 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>( | 180 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>( |
183 ruleset_handle.get(), std::move(params), activation_state.GetCallback(), | 181 ruleset_handle.get(), std::move(params), activation_state.GetCallback()); |
184 base::OnceClosure()); | |
185 | 182 |
186 RunUntilIdle(); | 183 RunUntilIdle(); |
187 activation_state.ExpectReceivedOnce( | 184 activation_state.ExpectReceivedOnce( |
188 ActivationState(ActivationLevel::DISABLED)); | 185 ActivationState(ActivationLevel::DISABLED)); |
189 } | 186 } |
190 | 187 |
191 TEST_F(AsyncDocumentSubresourceFilterTest, GetLoadPolicyForSubdocument) { | 188 TEST_F(AsyncDocumentSubresourceFilterTest, GetLoadPolicyForSubdocument) { |
192 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset())); | 189 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset())); |
193 auto ruleset_handle = CreateRulesetHandle(); | 190 auto ruleset_handle = CreateRulesetHandle(); |
194 | 191 |
195 AsyncDocumentSubresourceFilter::InitializationParams params( | 192 AsyncDocumentSubresourceFilter::InitializationParams params( |
196 GURL("http://example.com"), ActivationLevel::ENABLED, false); | 193 GURL("http://example.com"), ActivationLevel::ENABLED, false); |
197 | 194 |
198 testing::TestActivationStateCallbackReceiver activation_state; | 195 testing::TestActivationStateCallbackReceiver activation_state; |
199 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>( | 196 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>( |
200 ruleset_handle.get(), std::move(params), activation_state.GetCallback(), | 197 ruleset_handle.get(), std::move(params), activation_state.GetCallback()); |
201 base::OnceClosure()); | |
202 | 198 |
203 LoadPolicyCallbackReceiver load_policy_1; | 199 LoadPolicyCallbackReceiver load_policy_1; |
204 LoadPolicyCallbackReceiver load_policy_2; | 200 LoadPolicyCallbackReceiver load_policy_2; |
205 filter->GetLoadPolicyForSubdocument(GURL("http://example.com/allowed.html"), | 201 filter->GetLoadPolicyForSubdocument(GURL("http://example.com/allowed.html"), |
206 load_policy_1.GetCallback()); | 202 load_policy_1.GetCallback()); |
207 filter->GetLoadPolicyForSubdocument( | 203 filter->GetLoadPolicyForSubdocument( |
208 GURL("http://example.com/disallowed.html"), load_policy_2.GetCallback()); | 204 GURL("http://example.com/disallowed.html"), load_policy_2.GetCallback()); |
209 | 205 |
210 RunUntilIdle(); | 206 RunUntilIdle(); |
211 load_policy_1.ExpectReceivedOnce(LoadPolicy::ALLOW); | 207 load_policy_1.ExpectReceivedOnce(LoadPolicy::ALLOW); |
212 load_policy_2.ExpectReceivedOnce(LoadPolicy::DISALLOW); | 208 load_policy_2.ExpectReceivedOnce(LoadPolicy::DISALLOW); |
213 } | 209 } |
214 | 210 |
215 TEST_F(AsyncDocumentSubresourceFilterTest, FirstDisallowedLoadIsReported) { | 211 TEST_F(AsyncDocumentSubresourceFilterTest, FirstDisallowedLoadIsReported) { |
216 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset())); | 212 dealer_handle()->SetRulesetFile(testing::TestRuleset::Open(ruleset())); |
217 auto ruleset_handle = CreateRulesetHandle(); | 213 auto ruleset_handle = CreateRulesetHandle(); |
218 | 214 |
219 TestCallbackReceiver first_disallowed_load_receiver; | 215 TestCallbackReceiver first_disallowed_load_receiver; |
220 AsyncDocumentSubresourceFilter::InitializationParams params( | 216 AsyncDocumentSubresourceFilter::InitializationParams params( |
221 GURL("http://example.com"), ActivationLevel::ENABLED, false); | 217 GURL("http://example.com"), ActivationLevel::ENABLED, false); |
222 | 218 |
223 testing::TestActivationStateCallbackReceiver activation_state; | 219 testing::TestActivationStateCallbackReceiver activation_state; |
224 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>( | 220 auto filter = base::MakeUnique<AsyncDocumentSubresourceFilter>( |
225 ruleset_handle.get(), std::move(params), activation_state.GetCallback(), | 221 ruleset_handle.get(), std::move(params), activation_state.GetCallback()); |
| 222 filter->set_first_disallowed_load_callback( |
226 first_disallowed_load_receiver.GetClosure()); | 223 first_disallowed_load_receiver.GetClosure()); |
227 | 224 |
228 LoadPolicyCallbackReceiver load_policy_1; | 225 LoadPolicyCallbackReceiver load_policy_1; |
229 filter->GetLoadPolicyForSubdocument(GURL("http://example.com/allowed.html"), | 226 filter->GetLoadPolicyForSubdocument(GURL("http://example.com/allowed.html"), |
230 load_policy_1.GetCallback()); | 227 load_policy_1.GetCallback()); |
231 RunUntilIdle(); | 228 RunUntilIdle(); |
232 load_policy_1.ExpectReceivedOnce(LoadPolicy::ALLOW); | 229 load_policy_1.ExpectReceivedOnce(LoadPolicy::ALLOW); |
233 EXPECT_EQ(0, first_disallowed_load_receiver.callback_count()); | 230 EXPECT_EQ(0, first_disallowed_load_receiver.callback_count()); |
234 | 231 |
235 LoadPolicyCallbackReceiver load_policy_2; | 232 LoadPolicyCallbackReceiver load_policy_2; |
236 filter->GetLoadPolicyForSubdocument( | 233 filter->GetLoadPolicyForSubdocument( |
237 GURL("http://example.com/disallowed.html"), load_policy_2.GetCallback()); | 234 GURL("http://example.com/disallowed.html"), load_policy_2.GetCallback()); |
238 RunUntilIdle(); | 235 RunUntilIdle(); |
239 load_policy_2.ExpectReceivedOnce(LoadPolicy::DISALLOW); | 236 load_policy_2.ExpectReceivedOnce(LoadPolicy::DISALLOW); |
240 EXPECT_EQ(0, first_disallowed_load_receiver.callback_count()); | 237 EXPECT_EQ(0, first_disallowed_load_receiver.callback_count()); |
241 | 238 |
242 filter->ReportDisallowedLoad(); | 239 filter->ReportDisallowedLoad(); |
243 EXPECT_EQ(1, first_disallowed_load_receiver.callback_count()); | 240 EXPECT_EQ(1, first_disallowed_load_receiver.callback_count()); |
244 RunUntilIdle(); | 241 RunUntilIdle(); |
245 } | 242 } |
246 | 243 |
247 } // namespace subresource_filter | 244 } // namespace subresource_filter |
OLD | NEW |