| 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/content_subresource_filt
er_throttle_manager.h" | 5 #include "components/subresource_filter/content/browser/content_subresource_filt
er_throttle_manager.h" |
| 6 | 6 |
| 7 #include <map> |
| 7 #include <memory> | 8 #include <memory> |
| 9 #include <set> |
| 10 #include <tuple> |
| 8 #include <utility> | 11 #include <utility> |
| 9 | 12 |
| 10 #include "base/logging.h" | 13 #include "base/logging.h" |
| 11 #include "base/memory/ptr_util.h" | 14 #include "base/memory/ptr_util.h" |
| 12 #include "base/run_loop.h" | 15 #include "base/run_loop.h" |
| 13 #include "base/strings/stringprintf.h" | 16 #include "base/strings/stringprintf.h" |
| 14 #include "base/test/test_simple_task_runner.h" | 17 #include "base/test/test_simple_task_runner.h" |
| 15 #include "components/subresource_filter/content/browser/async_document_subresour
ce_filter.h" | 18 #include "components/subresource_filter/content/browser/async_document_subresour
ce_filter.h" |
| 16 #include "components/subresource_filter/content/common/subresource_filter_messag
es.h" | 19 #include "components/subresource_filter/content/common/subresource_filter_messag
es.h" |
| 17 #include "components/subresource_filter/core/common/activation_level.h" | 20 #include "components/subresource_filter/core/common/activation_level.h" |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 const char* GetNameForLogging() override { | 79 const char* GetNameForLogging() override { |
| 77 return "MockPageStateActivationThrottle"; | 80 return "MockPageStateActivationThrottle"; |
| 78 } | 81 } |
| 79 | 82 |
| 80 private: | 83 private: |
| 81 content::NavigationThrottle::ThrottleCheckResult MaybeNotifyActivation( | 84 content::NavigationThrottle::ThrottleCheckResult MaybeNotifyActivation( |
| 82 PageActivationNotificationTiming throttle_state) { | 85 PageActivationNotificationTiming throttle_state) { |
| 83 if (throttle_state == activation_throttle_state_) { | 86 if (throttle_state == activation_throttle_state_) { |
| 84 auto it = mock_page_activations_.find(navigation_handle()->GetURL()); | 87 auto it = mock_page_activations_.find(navigation_handle()->GetURL()); |
| 85 if (it != mock_page_activations_.end()) { | 88 if (it != mock_page_activations_.end()) { |
| 86 throttle_manager_->NotifyPageActivationComputed(navigation_handle(), | 89 throttle_manager_->NotifyPageActivationComputed( |
| 87 it->second); | 90 navigation_handle(), it->second, ActivationDecision::ACTIVATED); |
| 91 } else { |
| 92 throttle_manager_->NotifyPageActivationComputed( |
| 93 navigation_handle(), ActivationState(ActivationLevel::DISABLED), |
| 94 ActivationDecision::ACTIVATION_LIST_NOT_MATCHED); |
| 88 } | 95 } |
| 89 } | 96 } |
| 90 return content::NavigationThrottle::PROCEED; | 97 return content::NavigationThrottle::PROCEED; |
| 91 } | 98 } |
| 92 | 99 |
| 93 std::map<GURL, ActivationState> mock_page_activations_; | 100 std::map<GURL, ActivationState> mock_page_activations_; |
| 94 PageActivationNotificationTiming activation_throttle_state_; | 101 PageActivationNotificationTiming activation_throttle_state_; |
| 95 ContentSubresourceFilterThrottleManager* throttle_manager_; | 102 ContentSubresourceFilterThrottleManager* throttle_manager_; |
| 96 | 103 |
| 97 DISALLOW_COPY_AND_ASSIGN(MockPageStateActivationThrottle); | 104 DISALLOW_COPY_AND_ASSIGN(MockPageStateActivationThrottle); |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 253 content::NavigationHandle* navigation_handle) override { | 260 content::NavigationHandle* navigation_handle) override { |
| 254 if (navigation_handle->IsSameDocument()) | 261 if (navigation_handle->IsSameDocument()) |
| 255 return; | 262 return; |
| 256 | 263 |
| 257 // Inject the proper throttles at this time. | 264 // Inject the proper throttles at this time. |
| 258 std::vector<std::unique_ptr<content::NavigationThrottle>> throttles; | 265 std::vector<std::unique_ptr<content::NavigationThrottle>> throttles; |
| 259 PageActivationNotificationTiming state = | 266 PageActivationNotificationTiming state = |
| 260 ::testing::UnitTest::GetInstance()->current_test_info()->value_param() | 267 ::testing::UnitTest::GetInstance()->current_test_info()->value_param() |
| 261 ? GetParam() | 268 ? GetParam() |
| 262 : WILL_PROCESS_RESPONSE; | 269 : WILL_PROCESS_RESPONSE; |
| 263 throttles.push_back(base::MakeUnique<MockPageStateActivationThrottle>( | 270 if (navigation_handle->IsInMainFrame()) { |
| 264 navigation_handle, state, throttle_manager_.get())); | 271 throttles.push_back(base::MakeUnique<MockPageStateActivationThrottle>( |
| 272 navigation_handle, state, throttle_manager_.get())); |
| 273 } |
| 265 throttle_manager_->MaybeAppendNavigationThrottles(navigation_handle, | 274 throttle_manager_->MaybeAppendNavigationThrottles(navigation_handle, |
| 266 &throttles); | 275 &throttles); |
| 267 for (auto& it : throttles) { | 276 for (auto& it : throttles) { |
| 268 navigation_handle->RegisterThrottleForTesting(std::move(it)); | 277 navigation_handle->RegisterThrottleForTesting(std::move(it)); |
| 269 } | 278 } |
| 270 } | 279 } |
| 271 | 280 |
| 272 // ContentSubresourceFilterThrottleManager::Delegate: | 281 // ContentSubresourceFilterThrottleManager::Delegate: |
| 273 void OnFirstSubresourceLoadDisallowed() override { | 282 void OnFirstSubresourceLoadDisallowed() override { |
| 274 ++disallowed_notification_count_; | 283 ++disallowed_notification_count_; |
| (...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 694 EXPECT_EQ(0, disallowed_notification_count()); | 703 EXPECT_EQ(0, disallowed_notification_count()); |
| 695 EXPECT_EQ(1, attempted_frame_activations()); | 704 EXPECT_EQ(1, attempted_frame_activations()); |
| 696 } | 705 } |
| 697 | 706 |
| 698 // TODO(csharrison): Make sure the following conditions are exercised in tests: | 707 // TODO(csharrison): Make sure the following conditions are exercised in tests: |
| 699 // | 708 // |
| 700 // - Synchronous navigations to about:blank. These hit issues with the | 709 // - Synchronous navigations to about:blank. These hit issues with the |
| 701 // NavigationSimulator currently. | 710 // NavigationSimulator currently. |
| 702 | 711 |
| 703 } // namespace subresource_filter | 712 } // namespace subresource_filter |
| OLD | NEW |