| 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 |