Avi Drissman | d878a501 | 2022-09-12 19:13:30 | [diff] [blame] | 1 | // Copyright 2019 The Chromium Authors |
Andres Medina | a65ad1b | 2019-06-26 22:18:19 | [diff] [blame] | 2 | // Use of this source code is governed by a BSD-style license that can be |
| 3 | // found in the LICENSE file. |
| 4 | |
| 5 | #include "chromecast/browser/cast_renderer_block_data.h" |
| 6 | |
Lei Zhang | 2b7bae7 | 2021-05-10 19:17:03 | [diff] [blame] | 7 | #include "base/logging.h" |
Andres Medina | a65ad1b | 2019-06-26 22:18:19 | [diff] [blame] | 8 | #include "chromecast/browser/application_media_info_manager.h" |
| 9 | #include "chromecast/browser/cast_session_id_map.h" |
| 10 | #include "content/public/browser/web_contents.h" |
| 11 | |
| 12 | namespace chromecast { |
| 13 | namespace shell { |
| 14 | namespace { |
| 15 | |
| 16 | const char kUserDataKey[] = "chromecast.shell.RenderBlockUserData.key"; |
| 17 | |
| 18 | CastRendererBlockData* GetOrCreateCastRendererBlockData( |
| 19 | content::WebContents* web_contents) { |
| 20 | CastRendererBlockData* data = static_cast<CastRendererBlockData*>( |
| 21 | web_contents->GetUserData(kUserDataKey)); |
| 22 | if (!data) { |
| 23 | auto cast_renderer_block_data = std::make_unique<CastRendererBlockData>(); |
| 24 | data = cast_renderer_block_data.get(); |
| 25 | web_contents->SetUserData(kUserDataKey, |
| 26 | std::move(cast_renderer_block_data)); |
| 27 | } |
| 28 | return data; |
| 29 | } |
| 30 | |
| 31 | } // namespace |
| 32 | |
| 33 | // static |
| 34 | void CastRendererBlockData::SetRendererBlockForWebContents( |
| 35 | content::WebContents* web_contents, |
| 36 | bool blocked) { |
| 37 | DCHECK(web_contents); |
| 38 | CastRendererBlockData* data = GetOrCreateCastRendererBlockData(web_contents); |
| 39 | data->SetBlocked(blocked); |
| 40 | } |
| 41 | |
| 42 | // static |
| 43 | void CastRendererBlockData::SetApplicationMediaInfoManagerForWebContents( |
| 44 | content::WebContents* web_contents, |
Dave Tapuska | f5db367 | 2024-06-18 20:41:25 | [diff] [blame] | 45 | base::WeakPtr<media::ApplicationMediaInfoManager> |
| 46 | application_media_info_manager) { |
Andres Medina | a65ad1b | 2019-06-26 22:18:19 | [diff] [blame] | 47 | DCHECK(web_contents); |
| 48 | CastRendererBlockData* data = GetOrCreateCastRendererBlockData(web_contents); |
| 49 | data->SetApplicationMediaInfoManager(application_media_info_manager); |
| 50 | } |
| 51 | |
| 52 | CastRendererBlockData::CastRendererBlockData() : blocked_(false) {} |
| 53 | CastRendererBlockData::~CastRendererBlockData() = default; |
| 54 | |
| 55 | void CastRendererBlockData::SetBlocked(bool blocked) { |
| 56 | LOG(INFO) << "Setting blocked to: " << blocked << " from " << blocked_; |
| 57 | blocked_ = blocked; |
| 58 | if (application_media_info_manager_) { |
| 59 | application_media_info_manager_->SetRendererBlock(blocked); |
| 60 | } |
| 61 | } |
| 62 | |
| 63 | void CastRendererBlockData::SetApplicationMediaInfoManager( |
Dave Tapuska | f5db367 | 2024-06-18 20:41:25 | [diff] [blame] | 64 | base::WeakPtr<media::ApplicationMediaInfoManager> |
| 65 | application_media_info_manager) { |
Andres Medina | a65ad1b | 2019-06-26 22:18:19 | [diff] [blame] | 66 | DCHECK(application_media_info_manager); |
Dave Tapuska | f5db367 | 2024-06-18 20:41:25 | [diff] [blame] | 67 | application_media_info_manager_ = application_media_info_manager; |
Andres Medina | a65ad1b | 2019-06-26 22:18:19 | [diff] [blame] | 68 | application_media_info_manager_->SetRendererBlock(blocked_); |
| 69 | } |
| 70 | |
| 71 | } // namespace shell |
| 72 | } // namespace chromecast |