cast_permission_user_data.cc 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // Copyright 2021 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/browser/cast_permission_user_data.h"
  5. #include <memory>
  6. #include "base/memory/ptr_util.h"
  7. #include "content/public/browser/web_contents.h"
  8. #include "third_party/blink/public/common/permissions/permission_utils.h"
  9. namespace {
  10. const char kCastPermissionUserDataKey[] =
  11. "chromecast.shell.CastPermissionUserDataKey";
  12. } // namespace
  13. namespace chromecast {
  14. namespace shell {
  15. CastPermissionUserData::CastPermissionUserData(
  16. content::WebContents* web_contents,
  17. const std::string& app_id,
  18. const GURL& app_web_url,
  19. bool enforce_feature_permissions,
  20. std::vector<int32_t> feature_permissions,
  21. std::vector<std::string> additional_feature_permission_origins)
  22. : app_id_(app_id),
  23. app_web_url_(app_web_url),
  24. enforce_feature_permissions_(enforce_feature_permissions),
  25. feature_permissions_(std::move(feature_permissions)),
  26. additional_feature_permission_origins_(
  27. std::move(additional_feature_permission_origins)) {
  28. feature_permissions_.insert(
  29. static_cast<int32_t>(blink::PermissionType::PROTECTED_MEDIA_IDENTIFIER));
  30. web_contents->SetUserData(&kCastPermissionUserDataKey,
  31. base::WrapUnique(this));
  32. }
  33. CastPermissionUserData::~CastPermissionUserData() {}
  34. // static
  35. CastPermissionUserData* CastPermissionUserData::FromWebContents(
  36. content::WebContents* web_contents) {
  37. return static_cast<CastPermissionUserData*>(
  38. web_contents->GetUserData(&kCastPermissionUserDataKey));
  39. }
  40. } // namespace shell
  41. } // namespace chromecast