cast_permission_user_data.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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. #ifndef CHROMECAST_BROWSER_CAST_PERMISSION_USER_DATA_H_
  5. #define CHROMECAST_BROWSER_CAST_PERMISSION_USER_DATA_H_
  6. #include <string>
  7. #include <vector>
  8. #include "base/containers/flat_set.h"
  9. #include "base/supports_user_data.h"
  10. #include "url/gurl.h"
  11. namespace content {
  12. class WebContents;
  13. }
  14. // TODO(b/191718807) Add App's page permission into this class.
  15. namespace chromecast {
  16. namespace shell {
  17. class CastPermissionUserData : public base::SupportsUserData::Data {
  18. public:
  19. // Lifetime of the object is managed by |web_contents|.
  20. CastPermissionUserData(
  21. content::WebContents* web_contents,
  22. const std::string& app_id,
  23. const GURL& app_web_url,
  24. bool enforce_feature_permissions,
  25. std::vector<int32_t> feature_permissions,
  26. std::vector<std::string> additional_feature_permission_origins);
  27. CastPermissionUserData(const CastPermissionUserData&) = delete;
  28. CastPermissionUserData& operator=(const CastPermissionUserData&) = delete;
  29. ~CastPermissionUserData() override;
  30. static CastPermissionUserData* FromWebContents(
  31. content::WebContents* web_contents);
  32. std::string GetAppId() { return app_id_; }
  33. GURL GetAppWebUrl() { return app_web_url_; }
  34. bool GetEnforceFeaturePermissions() { return enforce_feature_permissions_; }
  35. const base::flat_set<int32_t>& GetFeaturePermissions() const {
  36. return feature_permissions_;
  37. }
  38. const std::vector<std::string>& GetAdditionalFeaturePermissionOrigins()
  39. const {
  40. return additional_feature_permission_origins_;
  41. }
  42. private:
  43. const std::string app_id_;
  44. const GURL app_web_url_;
  45. const bool enforce_feature_permissions_;
  46. base::flat_set<int32_t> feature_permissions_;
  47. const std::vector<std::string> additional_feature_permission_origins_;
  48. };
  49. } // namespace shell
  50. } // namespace chromecast
  51. #endif // CHROMECAST_BROWSER_CAST_PERMISSION_USER_DATA_H_