cast_websocket_handshake_throttle_provider.cc 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // Copyright 2020 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "chromecast/renderer/cast_websocket_handshake_throttle_provider.h"
  5. #include "base/feature_list.h"
  6. #include "base/memory/ptr_util.h"
  7. #include "chromecast/renderer/activity_filtering_websocket_handshake_throttle.h"
  8. #include "services/network/public/cpp/features.h"
  9. namespace chromecast {
  10. CastWebSocketHandshakeThrottleProvider::CastWebSocketHandshakeThrottleProvider(
  11. CastActivityUrlFilterManager* url_filter_manager)
  12. : cast_activity_url_filter_manager_(url_filter_manager) {
  13. DCHECK(url_filter_manager);
  14. DETACH_FROM_THREAD(thread_checker_);
  15. }
  16. CastWebSocketHandshakeThrottleProvider::
  17. ~CastWebSocketHandshakeThrottleProvider() {
  18. DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
  19. }
  20. CastWebSocketHandshakeThrottleProvider::CastWebSocketHandshakeThrottleProvider(
  21. const chromecast::CastWebSocketHandshakeThrottleProvider& other)
  22. : cast_activity_url_filter_manager_(
  23. other.cast_activity_url_filter_manager_) {
  24. DETACH_FROM_THREAD(thread_checker_);
  25. }
  26. std::unique_ptr<blink::WebSocketHandshakeThrottleProvider>
  27. CastWebSocketHandshakeThrottleProvider::Clone(
  28. scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
  29. return base::WrapUnique(new CastWebSocketHandshakeThrottleProvider(*this));
  30. }
  31. std::unique_ptr<blink::WebSocketHandshakeThrottle>
  32. CastWebSocketHandshakeThrottleProvider::CreateThrottle(
  33. int render_frame_id,
  34. scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
  35. DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
  36. auto* activity_url_filter =
  37. cast_activity_url_filter_manager_->GetActivityUrlFilterForRenderFrameID(
  38. render_frame_id);
  39. if (!activity_url_filter)
  40. return nullptr;
  41. return std::make_unique<ActivityFilteringWebSocketHandshakeThrottle>(
  42. activity_url_filter);
  43. }
  44. } // namespace chromecast