| // Copyright 2020 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chromecast/renderer/cast_url_loader_throttle_provider.h" |
| |
| #include <string> |
| #include <utility> |
| |
| #include "base/functional/callback.h" |
| #include "base/memory/ptr_util.h" |
| #include "chromecast/common/activity_filtering_url_loader_throttle.h" |
| #include "chromecast/renderer/cast_activity_url_filter_manager.h" |
| #include "components/url_rewrite/common/url_loader_throttle.h" |
| #include "third_party/blink/public/common/loader/url_loader_throttle.h" |
| |
| namespace chromecast { |
| |
| CastURLLoaderThrottleProvider::CastURLLoaderThrottleProvider( |
| blink::URLLoaderThrottleProviderType type, |
| CastActivityUrlFilterManager* url_filter_manager) |
| : type_(type), cast_activity_url_filter_manager_(url_filter_manager) { |
| DETACH_FROM_SEQUENCE(sequence_checker_); |
| } |
| |
| CastURLLoaderThrottleProvider::~CastURLLoaderThrottleProvider() { |
| DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
| } |
| |
| CastURLLoaderThrottleProvider::CastURLLoaderThrottleProvider( |
| const chromecast::CastURLLoaderThrottleProvider& other) |
| : type_(other.type_), |
| cast_activity_url_filter_manager_( |
| other.cast_activity_url_filter_manager_) { |
| DETACH_FROM_SEQUENCE(sequence_checker_); |
| } |
| |
| std::unique_ptr<blink::URLLoaderThrottleProvider> |
| CastURLLoaderThrottleProvider::Clone() { |
| return base::WrapUnique(new CastURLLoaderThrottleProvider(*this)); |
| } |
| |
| blink::WebVector<std::unique_ptr<blink::URLLoaderThrottle>> |
| CastURLLoaderThrottleProvider::CreateThrottles( |
| base::optional_ref<const blink::LocalFrameToken> local_frame_token, |
| const network::ResourceRequest& request) { |
| DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); |
| |
| blink::WebVector<std::unique_ptr<blink::URLLoaderThrottle>> throttles; |
| |
| if (cast_activity_url_filter_manager_ && local_frame_token.has_value()) { |
| auto* activity_url_filter = cast_activity_url_filter_manager_ |
| ->GetActivityUrlFilterForRenderFrameToken( |
| local_frame_token.value()); |
| if (activity_url_filter) { |
| throttles.emplace_back( |
| std::make_unique<ActivityFilteringURLLoaderThrottle>( |
| activity_url_filter)); |
| } |
| } |
| |
| return throttles; |
| } |
| |
| void CastURLLoaderThrottleProvider::SetOnline(bool is_online) {} |
| |
| } // namespace chromecast |