summaryrefslogtreecommitdiffstats
path: root/chrome/common
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/common')
-rw-r--r--chrome/common/extensions/chrome_extensions_client.cc25
-rw-r--r--chrome/common/extensions/chrome_extensions_client.h9
-rw-r--r--chrome/common/extensions/extension.cc57
-rw-r--r--chrome/common/extensions/extension.h9
-rw-r--r--chrome/common/extensions/extension_messages.h3
-rw-r--r--chrome/common/extensions/permissions/permissions_data.cc14
6 files changed, 41 insertions, 76 deletions
diff --git a/chrome/common/extensions/chrome_extensions_client.cc b/chrome/common/extensions/chrome_extensions_client.cc
index dcc4d5f..8d16496 100644
--- a/chrome/common/extensions/chrome_extensions_client.cc
+++ b/chrome/common/extensions/chrome_extensions_client.cc
@@ -5,6 +5,7 @@
#include "chrome/common/extensions/chrome_extensions_client.h"
#include "chrome/common/extensions/chrome_manifest_handlers.h"
+#include "chrome/common/extensions/extension_constants.h"
#include "chrome/common/extensions/features/base_feature_provider.h"
#include "chrome/common/url_constants.h"
#include "content/public/common/url_constants.h"
@@ -28,6 +29,20 @@ ChromeExtensionsClient::~ChromeExtensionsClient() {
void ChromeExtensionsClient::Initialize() {
RegisterChromeManifestHandlers();
+
+ // Set up the scripting whitelist.
+ // Whitelist ChromeVox, an accessibility extension from Google that needs
+ // the ability to script webui pages. This is temporary and is not
+ // meant to be a general solution.
+ // TODO(dmazzoni): remove this once we have an extension API that
+ // allows any extension to request read-only access to webui pages.
+ scripting_whitelist_.push_back(extension_misc::kChromeVoxExtensionId);
+
+ // Whitelist "Discover DevTools Companion" extension from Google that
+ // needs the ability to script DevTools pages. Companion will assist
+ // online courses and will be needed while the online educational programs
+ // are in place.
+ scripting_whitelist_.push_back("angkfkebojeancgemegoedelbnjgcgme");
}
const PermissionsProvider&
@@ -67,6 +82,16 @@ void ChromeExtensionsClient::FilterHostPermissions(
}
}
+void ChromeExtensionsClient::SetScriptingWhitelist(
+ const ExtensionsClient::ScriptingWhitelist& whitelist) {
+ scripting_whitelist_ = whitelist;
+}
+
+const ExtensionsClient::ScriptingWhitelist&
+ChromeExtensionsClient::GetScriptingWhitelist() const {
+ return scripting_whitelist_;
+}
+
// static
ChromeExtensionsClient* ChromeExtensionsClient::GetInstance() {
return g_client.Pointer();
diff --git a/chrome/common/extensions/chrome_extensions_client.h b/chrome/common/extensions/chrome_extensions_client.h
index f832172..ca7b43b 100644
--- a/chrome/common/extensions/chrome_extensions_client.h
+++ b/chrome/common/extensions/chrome_extensions_client.h
@@ -32,6 +32,9 @@ class ChromeExtensionsClient : public ExtensionsClient {
const URLPatternSet& hosts,
URLPatternSet* new_hosts,
std::set<PermissionMessage>* messages) const OVERRIDE;
+ virtual void SetScriptingWhitelist(const ScriptingWhitelist& whitelist)
+ OVERRIDE;
+ virtual const ScriptingWhitelist& GetScriptingWhitelist() const OVERRIDE;
// Get the LazyInstance for ChromeExtensionsClient.
static ChromeExtensionsClient* GetInstance();
@@ -40,6 +43,12 @@ class ChromeExtensionsClient : public ExtensionsClient {
const ChromeAPIPermissions chrome_api_permissions_;
const ChromePermissionMessageProvider permission_message_provider_;
+ // A whitelist of extensions that can script anywhere. Do not add to this
+ // list (except in tests) without consulting the Extensions team first.
+ // Note: Component extensions have this right implicitly and do not need to be
+ // added to this list.
+ ScriptingWhitelist scripting_whitelist_;
+
friend struct base::DefaultLazyInstanceTraits<ChromeExtensionsClient>;
DISALLOW_COPY_AND_ASSIGN(ChromeExtensionsClient);
diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc
index 920f9cb..44e7215 100644
--- a/chrome/common/extensions/extension.cc
+++ b/chrome/common/extensions/extension.cc
@@ -62,41 +62,6 @@ const char kKeyInfoEndMarker[] = "KEY-----";
const char kPublic[] = "PUBLIC";
const char kPrivate[] = "PRIVATE";
-// A singleton object containing global data needed by the extension objects.
-class ExtensionConfig {
- public:
- static ExtensionConfig* GetInstance() {
- return Singleton<ExtensionConfig>::get();
- }
-
- Extension::ScriptingWhitelist* whitelist() { return &scripting_whitelist_; }
-
- private:
- friend struct DefaultSingletonTraits<ExtensionConfig>;
-
- ExtensionConfig() {
- // Whitelist ChromeVox, an accessibility extension from Google that needs
- // the ability to script webui pages. This is temporary and is not
- // meant to be a general solution.
- // TODO(dmazzoni): remove this once we have an extension API that
- // allows any extension to request read-only access to webui pages.
- scripting_whitelist_.push_back(extension_misc::kChromeVoxExtensionId);
-
- // Whitelist "Discover DevTools Companion" extension from Google that
- // needs the ability to script DevTools pages. Companion will assist
- // online courses and will be needed while the online educational programs
- // are in place.
- scripting_whitelist_.push_back("angkfkebojeancgemegoedelbnjgcgme");
- }
- ~ExtensionConfig() { }
-
- // A whitelist of extensions that can script anywhere. Do not add to this
- // list (except in tests) without consulting the Extensions team first.
- // Note: Component extensions have this right implicitly and do not need to be
- // added to this list.
- Extension::ScriptingWhitelist scripting_whitelist_;
-};
-
bool ContainsReservedCharacters(const base::FilePath& path) {
// We should disallow backslash '\\' as file path separator even on Windows,
// because the backslash is not regarded as file path separator on Linux/Mac.
@@ -110,11 +75,6 @@ bool ContainsReservedCharacters(const base::FilePath& path) {
} // namespace
-#if defined(OS_WIN)
-const char Extension::kExtensionRegistryPath[] =
- "Software\\Google\\Chrome\\Extensions";
-#endif
-
const char Extension::kMimeType[] = "application/x-chrome-extension";
const int Extension::kValidWebExtentSchemes =
@@ -329,23 +289,6 @@ GURL Extension::GetBaseURLFromExtensionId(const std::string& extension_id) {
content::kStandardSchemeSeparator + extension_id + "/");
}
-// static
-void Extension::SetScriptingWhitelist(
- const Extension::ScriptingWhitelist& whitelist) {
- ScriptingWhitelist* current_whitelist =
- ExtensionConfig::GetInstance()->whitelist();
- current_whitelist->clear();
- for (ScriptingWhitelist::const_iterator it = whitelist.begin();
- it != whitelist.end(); ++it) {
- current_whitelist->push_back(*it);
- }
-}
-
-// static
-const Extension::ScriptingWhitelist* Extension::GetScriptingWhitelist() {
- return ExtensionConfig::GetInstance()->whitelist();
-}
-
bool Extension::HasAPIPermission(APIPermission::ID permission) const {
return PermissionsData::HasAPIPermission(this, permission);
}
diff --git a/chrome/common/extensions/extension.h b/chrome/common/extensions/extension.h
index 913e0c24..2ebeeda 100644
--- a/chrome/common/extensions/extension.h
+++ b/chrome/common/extensions/extension.h
@@ -55,7 +55,6 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
public:
struct ManifestData;
- typedef std::vector<std::string> ScriptingWhitelist;
typedef std::map<const std::string, linked_ptr<ManifestData> >
ManifestDataMap;
@@ -176,10 +175,6 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
// Valid schemes for host permission URLPatterns.
static const int kValidHostPermissionSchemes;
-#if defined(OS_WIN)
- static const char kExtensionRegistryPath[];
-#endif
-
// The mimetype used for extensions.
static const char kMimeType[];
@@ -229,10 +224,6 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
// Returns the base extension url for a given |extension_id|.
static GURL GetBaseURLFromExtensionId(const std::string& extension_id);
- // Adds an extension to the scripting whitelist. Used for testing only.
- static void SetScriptingWhitelist(const ScriptingWhitelist& whitelist);
- static const ScriptingWhitelist* GetScriptingWhitelist();
-
// DEPRECATED: These methods have been moved to PermissionsData.
// TODO(rdevlin.cronin): remove these once all calls have been updated.
bool HasAPIPermission(APIPermission::ID permission) const;
diff --git a/chrome/common/extensions/extension_messages.h b/chrome/common/extensions/extension_messages.h
index c2b28c1..381a9d7 100644
--- a/chrome/common/extensions/extension_messages.h
+++ b/chrome/common/extensions/extension_messages.h
@@ -21,6 +21,7 @@
#include "content/public/common/common_param_traits.h"
#include "content/public/common/socket_permission_request.h"
#include "extensions/common/draggable_region.h"
+#include "extensions/common/extensions_client.h"
#include "extensions/common/url_pattern.h"
#include "extensions/common/url_pattern_set.h"
#include "extensions/common/view_type.h"
@@ -347,7 +348,7 @@ IPC_MESSAGE_CONTROL1(ExtensionMsg_Unloaded,
// only used for testing.
IPC_MESSAGE_CONTROL1(ExtensionMsg_SetScriptingWhitelist,
// extension ids
- extensions::Extension::ScriptingWhitelist)
+ extensions::ExtensionsClient::ScriptingWhitelist)
// Notification that renderer should run some JavaScript code.
IPC_MESSAGE_ROUTED1(ExtensionMsg_ExecuteCode,
diff --git a/chrome/common/extensions/permissions/permissions_data.cc b/chrome/common/extensions/permissions/permissions_data.cc
index f5fe932..d6fb529 100644
--- a/chrome/common/extensions/permissions/permissions_data.cc
+++ b/chrome/common/extensions/permissions/permissions_data.cc
@@ -18,6 +18,7 @@
#include "content/public/common/url_constants.h"
#include "extensions/common/constants.h"
#include "extensions/common/error_utils.h"
+#include "extensions/common/extensions_client.h"
#include "extensions/common/features/feature.h"
#include "extensions/common/features/feature_provider.h"
#include "extensions/common/manifest.h"
@@ -538,16 +539,11 @@ bool PermissionsData::CanExecuteScriptEverywhere(const Extension* extension) {
if (extension->location() == Manifest::COMPONENT)
return true;
- const Extension::ScriptingWhitelist* whitelist =
- Extension::GetScriptingWhitelist();
+ const ExtensionsClient::ScriptingWhitelist& whitelist =
+ ExtensionsClient::Get()->GetScriptingWhitelist();
- for (Extension::ScriptingWhitelist::const_iterator iter = whitelist->begin();
- iter != whitelist->end(); ++iter) {
- if (extension->id() == *iter)
- return true;
- }
-
- return false;
+ return std::find(whitelist.begin(), whitelist.end(), extension->id()) !=
+ whitelist.end();
}
// static