Commit cce6098f authored by yoz@chromium.org's avatar yoz@chromium.org

Move extension API schema registration to ExtensionsClient.

BUG=368334

Review URL: https://codereview.chromium.org/296133011

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@272696 0039d316-1c4b-4281-b951-d872f2087c98
parent 8204ede6
......@@ -207,6 +207,10 @@ base::StringPiece ShellExtensionsClient::GetAPISchema(
return extensions::core_api::GeneratedSchemas::Get(name);
}
void ShellExtensionsClient::RegisterAPISchemaResources(
extensions::ExtensionAPI* api) const {
}
bool ShellExtensionsClient::ShouldSuppressFatalErrors() const { return true; }
} // namespace apps
......@@ -41,6 +41,8 @@ class ShellExtensionsClient : public extensions::ExtensionsClient {
virtual bool IsAPISchemaGenerated(const std::string& name) const OVERRIDE;
virtual base::StringPiece GetAPISchema(const std::string& name) const
OVERRIDE;
virtual void RegisterAPISchemaResources(
extensions::ExtensionAPI* api) const OVERRIDE;
virtual bool ShouldSuppressFatalErrors() const OVERRIDE;
private:
......
......@@ -17,6 +17,7 @@
#include "extensions/common/api/generated_schemas.h"
#include "extensions/common/common_manifest_handlers.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_api.h"
#include "extensions/common/features/api_feature.h"
#include "extensions/common/features/base_feature_provider.h"
#include "extensions/common/features/feature_provider.h"
......@@ -33,6 +34,9 @@
#include "extensions/common/url_pattern.h"
#include "extensions/common/url_pattern_set.h"
#include "grit/common_resources.h"
#if defined(ENABLE_EXTENSIONS)
#include "grit/extensions_api_resources.h"
#endif
#include "grit/extensions_resources.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
......@@ -231,6 +235,42 @@ base::StringPiece ChromeExtensionsClient::GetAPISchema(
return apps::api::GeneratedSchemas::Get(name);
}
void ChromeExtensionsClient::RegisterAPISchemaResources(
ExtensionAPI* api) const {
#if defined(ENABLE_EXTENSIONS)
api->RegisterSchemaResource("accessibilityPrivate",
IDR_EXTENSION_API_JSON_ACCESSIBILITYPRIVATE);
api->RegisterSchemaResource("app", IDR_EXTENSION_API_JSON_APP);
api->RegisterSchemaResource("browserAction",
IDR_EXTENSION_API_JSON_BROWSERACTION);
api->RegisterSchemaResource("commands", IDR_EXTENSION_API_JSON_COMMANDS);
api->RegisterSchemaResource("declarativeContent",
IDR_EXTENSION_API_JSON_DECLARATIVE_CONTENT);
api->RegisterSchemaResource("declarativeWebRequest",
IDR_EXTENSION_API_JSON_DECLARATIVE_WEBREQUEST);
api->RegisterSchemaResource("fileBrowserHandler",
IDR_EXTENSION_API_JSON_FILEBROWSERHANDLER);
api->RegisterSchemaResource("inputMethodPrivate",
IDR_EXTENSION_API_JSON_INPUTMETHODPRIVATE);
api->RegisterSchemaResource("pageAction", IDR_EXTENSION_API_JSON_PAGEACTION);
api->RegisterSchemaResource("pageActions",
IDR_EXTENSION_API_JSON_PAGEACTIONS);
api->RegisterSchemaResource("privacy", IDR_EXTENSION_API_JSON_PRIVACY);
api->RegisterSchemaResource("processes", IDR_EXTENSION_API_JSON_PROCESSES);
api->RegisterSchemaResource("proxy", IDR_EXTENSION_API_JSON_PROXY);
api->RegisterSchemaResource("scriptBadge",
IDR_EXTENSION_API_JSON_SCRIPTBADGE);
api->RegisterSchemaResource("ttsEngine", IDR_EXTENSION_API_JSON_TTSENGINE);
api->RegisterSchemaResource("tts", IDR_EXTENSION_API_JSON_TTS);
api->RegisterSchemaResource("types", IDR_EXTENSION_API_JSON_TYPES);
api->RegisterSchemaResource("types.private",
IDR_EXTENSION_API_JSON_TYPES_PRIVATE);
api->RegisterSchemaResource("webstore", IDR_EXTENSION_API_JSON_WEBSTORE);
api->RegisterSchemaResource("webViewRequest",
IDR_EXTENSION_API_JSON_WEBVIEW_REQUEST);
#endif // defined(ENABLE_EXTENSIONS)
}
bool ChromeExtensionsClient::ShouldSuppressFatalErrors() const {
// <= dev means dev, canary, and trunk.
return GetCurrentChannel() <= chrome::VersionInfo::CHANNEL_DEV;
......
......@@ -45,6 +45,7 @@ class ChromeExtensionsClient : public ExtensionsClient {
virtual bool IsAPISchemaGenerated(const std::string& name) const OVERRIDE;
virtual base::StringPiece GetAPISchema(const std::string& name) const
OVERRIDE;
virtual void RegisterAPISchemaResources(ExtensionAPI* api) const OVERRIDE;
virtual bool ShouldSuppressFatalErrors() const OVERRIDE;
// Get the LazyInstance for ChromeExtensionsClient.
......
......@@ -13,7 +13,6 @@ include_rules = [
#
# TODO(jamescook): Remove these. http://crbug.com/162530
"!chrome/browser/chrome_notification_types.h",
'!grit/extensions_api_resources.h',
# This is needed for renderer JS sources which should eventually move to
# the extensions_resources target.
"!grit/renderer_resources.h",
......
......@@ -22,7 +22,6 @@
#include "extensions/common/features/feature_provider.h"
#include "extensions/common/permissions/permission_set.h"
#include "extensions/common/permissions/permissions_data.h"
#include "grit/extensions_api_resources.h"
#include "ui/base/resource/resource_bundle.h"
#include "url/gurl.h"
......@@ -227,34 +226,7 @@ void ExtensionAPI::InitDefaultConfiguration() {
for (size_t i = 0; i < arraysize(names); ++i)
RegisterDependencyProvider(names[i], FeatureProvider::GetByName(names[i]));
// Schemas to be loaded from resources.
CHECK(unloaded_schemas_.empty());
RegisterSchemaResource("accessibilityPrivate",
IDR_EXTENSION_API_JSON_ACCESSIBILITYPRIVATE);
RegisterSchemaResource("app", IDR_EXTENSION_API_JSON_APP);
RegisterSchemaResource("browserAction", IDR_EXTENSION_API_JSON_BROWSERACTION);
RegisterSchemaResource("commands", IDR_EXTENSION_API_JSON_COMMANDS);
RegisterSchemaResource("declarativeContent",
IDR_EXTENSION_API_JSON_DECLARATIVE_CONTENT);
RegisterSchemaResource("declarativeWebRequest",
IDR_EXTENSION_API_JSON_DECLARATIVE_WEBREQUEST);
RegisterSchemaResource("fileBrowserHandler",
IDR_EXTENSION_API_JSON_FILEBROWSERHANDLER);
RegisterSchemaResource("inputMethodPrivate",
IDR_EXTENSION_API_JSON_INPUTMETHODPRIVATE);
RegisterSchemaResource("pageAction", IDR_EXTENSION_API_JSON_PAGEACTION);
RegisterSchemaResource("pageActions", IDR_EXTENSION_API_JSON_PAGEACTIONS);
RegisterSchemaResource("privacy", IDR_EXTENSION_API_JSON_PRIVACY);
RegisterSchemaResource("processes", IDR_EXTENSION_API_JSON_PROCESSES);
RegisterSchemaResource("proxy", IDR_EXTENSION_API_JSON_PROXY);
RegisterSchemaResource("scriptBadge", IDR_EXTENSION_API_JSON_SCRIPTBADGE);
RegisterSchemaResource("ttsEngine", IDR_EXTENSION_API_JSON_TTSENGINE);
RegisterSchemaResource("tts", IDR_EXTENSION_API_JSON_TTS);
RegisterSchemaResource("types", IDR_EXTENSION_API_JSON_TYPES);
RegisterSchemaResource("types.private", IDR_EXTENSION_API_JSON_TYPES_PRIVATE);
RegisterSchemaResource("webstore", IDR_EXTENSION_API_JSON_WEBSTORE);
RegisterSchemaResource("webViewRequest",
IDR_EXTENSION_API_JSON_WEBVIEW_REQUEST);
ExtensionsClient::Get()->RegisterAPISchemaResources(this);
default_configuration_initialized_ = true;
}
......
......@@ -60,8 +60,11 @@ class ExtensionAPI {
ExtensionAPI();
virtual ~ExtensionAPI();
// Add a (non-generated) API schema resource.
void RegisterSchemaResource(const std::string& api_name, int resource_id);
// Add a FeatureProvider for APIs. The features are used to specify
// dependencies and constraints on the availability of APIs.
void RegisterDependencyProvider(const std::string& name,
const FeatureProvider* provider);
......
......@@ -18,6 +18,7 @@ namespace extensions {
class APIPermissionSet;
class Extension;
class ExtensionAPI;
class FeatureProvider;
class JSONFeatureProviderSource;
class ManifestPermissionSet;
......@@ -82,9 +83,13 @@ class ExtensionsClient {
// Returns true iff a schema named |name| is generated.
virtual bool IsAPISchemaGenerated(const std::string& name) const = 0;
// Gets the API schema named |name|.
// Gets the generated API schema named |name|.
virtual base::StringPiece GetAPISchema(const std::string& name) const = 0;
// Register non-generated API schema resources with the global ExtensionAPI.
// Called when the ExtensionAPI is lazily initialized.
virtual void RegisterAPISchemaResources(ExtensionAPI* api) const = 0;
// Determines if certain fatal extensions errors should be surpressed
// (i.e., only logged) or allowed (i.e., logged before crashing).
virtual bool ShouldSuppressFatalErrors() const = 0;
......
......@@ -85,6 +85,9 @@ base::StringPiece TestExtensionsClient::GetAPISchema(
return base::StringPiece();
}
void TestExtensionsClient::RegisterAPISchemaResources(ExtensionAPI* api) const {
}
bool TestExtensionsClient::ShouldSuppressFatalErrors() const {
return true;
}
......
......@@ -38,6 +38,7 @@ class TestExtensionsClient : public ExtensionsClient {
virtual bool IsAPISchemaGenerated(const std::string& name) const OVERRIDE;
virtual base::StringPiece GetAPISchema(
const std::string& name) const OVERRIDE;
virtual void RegisterAPISchemaResources(ExtensionAPI* api) const OVERRIDE;
virtual bool ShouldSuppressFatalErrors() const OVERRIDE;
// A whitelist of extensions that can script anywhere. Do not add to this
......
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