diff options
author | yoz@chromium.org <yoz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-07 06:39:26 +0000 |
---|---|---|
committer | yoz@chromium.org <yoz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-07 06:39:26 +0000 |
commit | ab187710fcc34da51e568eb40b3c50488a095dae (patch) | |
tree | ade9232cd7515ede718e196c29a06bdde42df141 /apps | |
parent | f1608f8dc1cec3df5e6652693dc347fa7db19fb2 (diff) | |
download | chromium_src-ab187710fcc34da51e568eb40b3c50488a095dae.zip chromium_src-ab187710fcc34da51e568eb40b3c50488a095dae.tar.gz chromium_src-ab187710fcc34da51e568eb40b3c50488a095dae.tar.bz2 |
Split API permission registration.
Permissions declared in extensions/common are registered there.
This doesn't yet break AppShell's dependencies on Chrome features/permissions (that will be a simple change after this, and it will likely cause breakage).
BUG=339301
R=rockot@chromium.org
Review URL: https://codereview.chromium.org/265833014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@268681 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'apps')
-rw-r--r-- | apps/shell/common/shell_extensions_client.cc | 34 | ||||
-rw-r--r-- | apps/shell/common/shell_extensions_client.h | 8 |
2 files changed, 20 insertions, 22 deletions
diff --git a/apps/shell/common/shell_extensions_client.cc b/apps/shell/common/shell_extensions_client.cc index 6abe2b6..9b96545 100644 --- a/apps/shell/common/shell_extensions_client.cc +++ b/apps/shell/common/shell_extensions_client.cc @@ -5,6 +5,7 @@ #include "apps/shell/common/shell_extensions_client.h" #include "apps/shell/common/api/generated_schemas.h" +#include "base/lazy_instance.h" #include "base/logging.h" #include "chrome/common/extensions/api/generated_schemas.h" #include "chrome/common/extensions/permissions/chrome_api_permissions.h" @@ -19,6 +20,7 @@ #include "extensions/common/features/simple_feature.h" #include "extensions/common/manifest_handler.h" #include "extensions/common/permissions/permission_message_provider.h" +#include "extensions/common/permissions/permissions_info.h" #include "extensions/common/permissions/permissions_provider.h" #include "extensions/common/url_pattern_set.h" #include "grit/app_shell_resources.h" @@ -46,7 +48,7 @@ extensions::SimpleFeature* CreateFeature() { } // TODO(jamescook): Refactor ChromePermissionsMessageProvider so we can share -// code. +// code. For now, this implementation does nothing. class ShellPermissionMessageProvider : public extensions::PermissionMessageProvider { public: @@ -85,9 +87,14 @@ class ShellPermissionMessageProvider DISALLOW_COPY_AND_ASSIGN(ShellPermissionMessageProvider); }; +base::LazyInstance<ShellPermissionMessageProvider> + g_permission_message_provider = LAZY_INSTANCE_INITIALIZER; + } // namespace -ShellExtensionsClient::ShellExtensionsClient() { +ShellExtensionsClient::ShellExtensionsClient() + : chrome_api_permissions_(extensions::ChromeAPIPermissions()), + extensions_api_permissions_(extensions::ExtensionsAPIPermissions()) { } ShellExtensionsClient::~ShellExtensionsClient() { @@ -103,30 +110,17 @@ void ShellExtensionsClient::Initialize() { extensions::ManifestHandler::FinalizeRegistration(); // TODO(jamescook): Do we need to whitelist any extensions? -} -const extensions::PermissionsProvider& -ShellExtensionsClient::GetPermissionsProvider() const { - // TODO(jamescook): app_shell needs a way to use a subset of the Chrome - // extension Features and Permissions. In particular, the lists of Features - // (including API features, manifest features and permission features) are - // listed in JSON files from c/c/e/api that are included into Chrome's - // resources.pak (_api_features.json and _permission_features.json). The - // PermissionsProvider must match the set of permissions used by the features - // in those files. We either need to make app_shell (and hence the extensions - // module) know about all possible permissions, or create a mechanism whereby - // we can build our own JSON files with only a subset of the data. For now, - // just provide all permissions Chrome knows about. Fixing this issue is - // http://crbug.com/339301 - static extensions::ChromeAPIPermissions provider; - return provider; + extensions::PermissionsInfo::GetInstance()->AddProvider( + chrome_api_permissions_); + extensions::PermissionsInfo::GetInstance()->AddProvider( + extensions_api_permissions_); } const extensions::PermissionMessageProvider& ShellExtensionsClient::GetPermissionMessageProvider() const { NOTIMPLEMENTED(); - static ShellPermissionMessageProvider provider; - return provider; + return g_permission_message_provider.Get(); } scoped_ptr<FeatureProvider> ShellExtensionsClient::CreateFeatureProvider( diff --git a/apps/shell/common/shell_extensions_client.h b/apps/shell/common/shell_extensions_client.h index 79587c0..875ce57 100644 --- a/apps/shell/common/shell_extensions_client.h +++ b/apps/shell/common/shell_extensions_client.h @@ -7,7 +7,9 @@ #include "base/basictypes.h" #include "base/compiler_specific.h" +#include "chrome/common/extensions/permissions/chrome_api_permissions.h" #include "extensions/common/extensions_client.h" +#include "extensions/common/permissions/extensions_api_permissions.h" namespace apps { @@ -19,8 +21,6 @@ class ShellExtensionsClient : public extensions::ExtensionsClient { // extensions::ExtensionsClient overrides: virtual void Initialize() OVERRIDE; - virtual const extensions::PermissionsProvider& GetPermissionsProvider() const - OVERRIDE; virtual const extensions::PermissionMessageProvider& GetPermissionMessageProvider() const OVERRIDE; virtual scoped_ptr<extensions::FeatureProvider> CreateFeatureProvider( @@ -43,6 +43,10 @@ class ShellExtensionsClient : public extensions::ExtensionsClient { virtual bool ShouldSuppressFatalErrors() const OVERRIDE; private: + // TODO(yoz): Don't include Chrome permissions. + const extensions::ChromeAPIPermissions chrome_api_permissions_; + const extensions::ExtensionsAPIPermissions extensions_api_permissions_; + ScriptingWhitelist scripting_whitelist_; DISALLOW_COPY_AND_ASSIGN(ShellExtensionsClient); |