Commit a70afb73 authored by Randy Rossi's avatar Randy Rossi Committed by Commit Bot

Add chromecast version of extension api permissions

This CL brings in a chromecast version of the extension
api permissions that will have to be registered for
ChromeVox.  Most of the APIs will end up being stubbed.

Bug: 73383411
Test: None
Change-Id: I6d847a9d3d6d19a016274c1498eb9a5f45c793fc
Reviewed-on: https://chromium-review.googlesource.com/1049956
Commit-Queue: Randy Rossi <rmrossi@chromium.org>
Reviewed-by: default avatarAlex Sakhartchouk <alexst@chromium.org>
Reviewed-by: default avatarMarc Treib <treib@chromium.org>
Cr-Commit-Position: refs/heads/master@{#557291}
parent 15a5770f
......@@ -30,6 +30,10 @@ cast_source_set("common") {
sources += [
"cast_extensions_client.cc",
"cast_extensions_client.h",
"extensions_api/cast_aliases.cc",
"extensions_api/cast_aliases.h",
"extensions_api/cast_api_permissions.cc",
"extensions_api/cast_api_permissions.h",
"extensions_api/cast_extension_messages.cc",
"extensions_api/cast_extension_messages.h",
]
......
......@@ -10,7 +10,9 @@
#include "base/lazy_instance.h"
#include "base/logging.h"
#include "base/macros.h"
#include "chromecast/common/extensions_api/cast_aliases.h"
#include "chromecast/common/extensions_api/cast_api_features.h"
#include "chromecast/common/extensions_api/cast_api_permissions.h"
#include "chromecast/common/extensions_api/cast_behavior_features.h"
#include "chromecast/common/extensions_api/cast_manifest_features.h"
#include "chromecast/common/extensions_api/cast_permission_features.h"
......@@ -93,6 +95,8 @@ void CastExtensionsClient::Initialize() {
ManifestHandler::FinalizeRegistration();
// TODO(jamescook): Do we need to whitelist any extensions?
PermissionsInfo::GetInstance()->AddProvider(cast_api_permissions_,
GetCastPermissionAliases());
PermissionsInfo::GetInstance()->AddProvider(extensions_api_permissions_,
GetExtensionsPermissionAliases());
}
......
......@@ -7,6 +7,7 @@
#include "base/compiler_specific.h"
#include "base/macros.h"
#include "chromecast/common/extensions_api/cast_api_permissions.h"
#include "extensions/common/extensions_client.h"
#include "extensions/common/permissions/extensions_api_permissions.h"
#include "url/gurl.h"
......@@ -48,6 +49,7 @@ class CastExtensionsClient : public ExtensionsClient {
std::string GetUserAgent() const override;
private:
const CastAPIPermissions cast_api_permissions_;
const ExtensionsAPIPermissions extensions_api_permissions_;
ScriptingWhitelist scripting_whitelist_;
......
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromecast/common/extensions_api/cast_aliases.h"
namespace extensions {
std::vector<Alias> GetCastPermissionAliases() {
// In alias constructor, first value is the alias name; second value is the
// real name. See also alias.h.
return {Alias("windows", "tabs")};
}
} // namespace extensions
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROMECAST_COMMON_EXTENSIONS_API_CAST_ALIASES_H_
#define CHROMECAST_COMMON_EXTENSIONS_API_CAST_ALIASES_H_
#include <vector>
#include "extensions/common/alias.h"
namespace extensions {
std::vector<Alias> GetCastPermissionAliases();
} // namespace extensions
#endif // CHROMECAST_COMMON_EXTENSIONS_API_CAST_ALIASES_H_
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromecast/common/extensions_api/cast_api_permissions.h"
#include <stddef.h>
#include <memory>
#include "base/macros.h"
#include "base/memory/ptr_util.h"
#include "extensions/common/permissions/api_permission.h"
#include "extensions/common/permissions/api_permission_set.h"
#include "extensions/common/permissions/media_galleries_permission.h"
#include "extensions/common/permissions/permissions_info.h"
#include "extensions/common/permissions/settings_override_permission.h"
namespace extensions {
namespace {
template <typename T>
APIPermission* CreateAPIPermission(const APIPermissionInfo* permission) {
return new T(permission);
}
} // namespace
std::vector<std::unique_ptr<APIPermissionInfo>>
CastAPIPermissions::GetAllPermissions() const {
// WARNING: If you are modifying a permission message in this list, be sure to
// add the corresponding permission message rule to
// CastPermissionMessageProvider::GetPermissionMessages as well.
APIPermissionInfo::InitInfo permissions_to_register[] = {
// Register permissions for all extension types.
{APIPermission::kIdentity, "identity"},
{APIPermission::kExperimental, "experimental",
APIPermissionInfo::kFlagCannotBeOptional},
{APIPermission::kNotifications, "notifications"},
// Register extension permissions.
{APIPermission::kAccessibilityFeaturesModify,
"accessibilityFeatures.modify"},
{APIPermission::kAccessibilityFeaturesRead, "accessibilityFeatures.read"},
{APIPermission::kAccessibilityPrivate, "accessibilityPrivate",
APIPermissionInfo::kFlagCannotBeOptional},
{APIPermission::kBookmark, "bookmarks"},
{APIPermission::kBrailleDisplayPrivate, "brailleDisplayPrivate",
APIPermissionInfo::kFlagCannotBeOptional},
{APIPermission::kHistory, "history"},
{APIPermission::kTab, "tabs"},
{APIPermission::kTts, "tts", APIPermissionInfo::kFlagCannotBeOptional},
{APIPermission::kTtsEngine, "ttsEngine",
APIPermissionInfo::kFlagCannotBeOptional},
// Register private permissions.
{APIPermission::kCommandsAccessibility, "commands.accessibility",
APIPermissionInfo::kFlagCannotBeOptional},
{APIPermission::kCommandLinePrivate, "commandLinePrivate",
APIPermissionInfo::kFlagCannotBeOptional},
{APIPermission::kIdentityPrivate, "identityPrivate",
APIPermissionInfo::kFlagCannotBeOptional},
{APIPermission::kVirtualKeyboardPrivate, "virtualKeyboardPrivate",
APIPermissionInfo::kFlagCannotBeOptional},
};
std::vector<std::unique_ptr<APIPermissionInfo>> permissions;
for (size_t i = 0; i < arraysize(permissions_to_register); ++i)
permissions.push_back(
base::WrapUnique(new APIPermissionInfo(permissions_to_register[i])));
return permissions;
}
} // namespace extensions
// Copyright (c) 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROMECAST_COMMON_EXTENSIONS_API_CAST_API_PERMISSIONS_H_
#define CHROMECAST_COMMON_EXTENSIONS_API_CAST_API_PERMISSIONS_H_
#include <vector>
#include "base/compiler_specific.h"
#include "extensions/common/permissions/permissions_provider.h"
namespace extensions {
// Registers the permissions used in Cast with the PermissionsInfo global.
class CastAPIPermissions : public PermissionsProvider {
public:
std::vector<std::unique_ptr<APIPermissionInfo>> GetAllPermissions()
const override;
};
} // namespace extensions
#endif // CHROMECAST_COMMON_EXTENSIONS_API_CAST_API_PERMISSIONS_H_
......@@ -413,6 +413,7 @@ class APIPermissionInfo {
private:
// Instances should only be constructed from within a PermissionsProvider.
friend class CastAPIPermissions;
friend class ChromeAPIPermissions;
friend class ExtensionsAPIPermissions;
// Implementations of APIPermission will want to get the permission message,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment