summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authoryoz@chromium.org <yoz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-07 06:39:26 +0000
committeryoz@chromium.org <yoz@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-07 06:39:26 +0000
commitab187710fcc34da51e568eb40b3c50488a095dae (patch)
treeade9232cd7515ede718e196c29a06bdde42df141 /apps
parentf1608f8dc1cec3df5e6652693dc347fa7db19fb2 (diff)
downloadchromium_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.cc34
-rw-r--r--apps/shell/common/shell_extensions_client.h8
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);