blob: d6767602fc67b0d6a367c76e92213e31cbc65d1c [file] [log] [blame]
Avi Drissmand878a5012022-09-12 19:13:301// Copyright 2019 The Chromium Authors
Andres Medinaa65ad1b2019-06-26 22:18:192// 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 Zhang2b7bae72021-05-10 19:17:037#include "base/logging.h"
Andres Medinaa65ad1b2019-06-26 22:18:198#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
12namespace chromecast {
13namespace shell {
14namespace {
15
16const char kUserDataKey[] = "chromecast.shell.RenderBlockUserData.key";
17
18CastRendererBlockData* 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
34void 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
43void CastRendererBlockData::SetApplicationMediaInfoManagerForWebContents(
44 content::WebContents* web_contents,
Dave Tapuskaf5db3672024-06-18 20:41:2545 base::WeakPtr<media::ApplicationMediaInfoManager>
46 application_media_info_manager) {
Andres Medinaa65ad1b2019-06-26 22:18:1947 DCHECK(web_contents);
48 CastRendererBlockData* data = GetOrCreateCastRendererBlockData(web_contents);
49 data->SetApplicationMediaInfoManager(application_media_info_manager);
50}
51
52CastRendererBlockData::CastRendererBlockData() : blocked_(false) {}
53CastRendererBlockData::~CastRendererBlockData() = default;
54
55void 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
63void CastRendererBlockData::SetApplicationMediaInfoManager(
Dave Tapuskaf5db3672024-06-18 20:41:2564 base::WeakPtr<media::ApplicationMediaInfoManager>
65 application_media_info_manager) {
Andres Medinaa65ad1b2019-06-26 22:18:1966 DCHECK(application_media_info_manager);
Dave Tapuskaf5db3672024-06-18 20:41:2567 application_media_info_manager_ = application_media_info_manager;
Andres Medinaa65ad1b2019-06-26 22:18:1968 application_media_info_manager_->SetRendererBlock(blocked_);
69}
70
71} // namespace shell
72} // namespace chromecast