| // Copyright 2021 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/browser/cast_permission_user_data.h" |
| |
| #include <memory> |
| |
| #include "base/memory/ptr_util.h" |
| #include "content/public/browser/web_contents.h" |
| #include "third_party/blink/public/common/permissions/permission_utils.h" |
| |
| namespace { |
| const char kCastPermissionUserDataKey[] = |
| "chromecast.shell.CastPermissionUserDataKey"; |
| } // namespace |
| |
| namespace chromecast { |
| namespace shell { |
| |
| CastPermissionUserData::CastPermissionUserData( |
| content::WebContents* web_contents, |
| const std::string& app_id, |
| const GURL& app_web_url, |
| bool enforce_feature_permissions, |
| std::vector<int32_t> feature_permissions, |
| std::vector<std::string> additional_feature_permission_origins) |
| : app_id_(app_id), |
| app_web_url_(app_web_url), |
| enforce_feature_permissions_(enforce_feature_permissions), |
| feature_permissions_(std::move(feature_permissions)), |
| additional_feature_permission_origins_( |
| std::move(additional_feature_permission_origins)) { |
| feature_permissions_.insert( |
| static_cast<int32_t>(blink::PermissionType::PROTECTED_MEDIA_IDENTIFIER)); |
| web_contents->SetUserData(&kCastPermissionUserDataKey, |
| base::WrapUnique(this)); |
| } |
| |
| CastPermissionUserData::~CastPermissionUserData() {} |
| |
| // static |
| CastPermissionUserData* CastPermissionUserData::FromWebContents( |
| content::WebContents* web_contents) { |
| return static_cast<CastPermissionUserData*>( |
| web_contents->GetUserData(&kCastPermissionUserDataKey)); |
| } |
| |
| } // namespace shell |
| } // namespace chromecast |