summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authorkalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-19 04:22:38 +0000
committerkalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-19 04:22:38 +0000
commit116f0a3aa63c5b508ce7d5e9aad1bbb7ab2921a6 (patch)
tree4051fe248e9794c97d8450dcc1c53c6f0cd13c44 /chrome/renderer
parent5eae551d867c6da7e1ed363110f02f89f99970d9 (diff)
downloadchromium_src-116f0a3aa63c5b508ce7d5e9aad1bbb7ab2921a6.zip
chromium_src-116f0a3aa63c5b508ce7d5e9aad1bbb7ab2921a6.tar.gz
chromium_src-116f0a3aa63c5b508ce7d5e9aad1bbb7ab2921a6.tar.bz2
Generate storage API constants using json_schema_compiler.
TEST=unit_tests --gtest_filter=*JsonSchema* Review URL: http://codereview.chromium.org/10116015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@132945 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/resources/extensions/event.js2
-rw-r--r--chrome/renderer/resources/extensions/json_schema.js4
-rw-r--r--chrome/renderer/resources/extensions/schema_generated_bindings.js19
-rw-r--r--chrome/renderer/resources/extensions/send_request.js4
4 files changed, 16 insertions, 13 deletions
diff --git a/chrome/renderer/resources/extensions/event.js b/chrome/renderer/resources/extensions/event.js
index 63b7d7f..5db2a59 100644
--- a/chrome/renderer/resources/extensions/event.js
+++ b/chrome/renderer/resources/extensions/event.js
@@ -205,7 +205,7 @@
results.push(result);
} catch (e) {
console.error("Error in event handler for '" + this.eventName_ +
- "': " + e.stack);
+ "': " + e.message + ' ' + e.stack);
}
}
if (results.length)
diff --git a/chrome/renderer/resources/extensions/json_schema.js b/chrome/renderer/resources/extensions/json_schema.js
index bc51d97..ec4b48d 100644
--- a/chrome/renderer/resources/extensions/json_schema.js
+++ b/chrome/renderer/resources/extensions/json_schema.js
@@ -137,8 +137,8 @@ chromeHidden.JSONSchemaValidator.getType = function(value) {
*/
chromeHidden.JSONSchemaValidator.prototype.addTypes = function(typeOrTypeList) {
function addType(validator, type) {
- if(!type.id)
- throw "Attempt to addType with missing 'id' property";
+ if (!type.id)
+ throw new Error("Attempt to addType with missing 'id' property");
validator.types[type.id] = type;
}
diff --git a/chrome/renderer/resources/extensions/schema_generated_bindings.js b/chrome/renderer/resources/extensions/schema_generated_bindings.js
index 4da0dba..66c193a 100644
--- a/chrome/renderer/resources/extensions/schema_generated_bindings.js
+++ b/chrome/renderer/resources/extensions/schema_generated_bindings.js
@@ -522,9 +522,14 @@
var value = propertyDef.value;
if (value) {
- if (propertyDef.type === 'integer') {
+ // Values may just have raw types as defined in the JSON, such
+ // as "WINDOW_ID_NONE": { "value": -1 }. We handle this here.
+ // TODO(kalman): enforce that things with a "value" property can't
+ // define their own types.
+ var type = propertyDef.type || typeof(value);
+ if (type === 'integer' || type === 'number') {
value = parseInt(value);
- } else if (propertyDef.type === 'boolean') {
+ } else if (type === 'boolean') {
value = value === "true";
} else if (propertyDef["$ref"]) {
var constructor = customTypes[propertyDef["$ref"]];
@@ -539,15 +544,13 @@
constructor.apply(value, args);
// Recursively add properties.
addProperties(value, propertyDef);
- } else if (propertyDef.type === 'object') {
+ } else if (type === 'object') {
// Recursively add properties.
addProperties(value, propertyDef);
- } else if (propertyDef.type !== 'string') {
- throw "NOT IMPLEMENTED (extension_api.json error): Cannot " +
- "parse values for type \"" + propertyDef.type + "\"";
+ } else if (type !== 'string') {
+ throw new Error("NOT IMPLEMENTED (extension_api.json error): " +
+ "Cannot parse values for type \"" + type + "\"");
}
- }
- if (value) {
m[propertyName] = value;
}
});
diff --git a/chrome/renderer/resources/extensions/send_request.js b/chrome/renderer/resources/extensions/send_request.js
index fff9c90..3e47f40 100644
--- a/chrome/renderer/resources/extensions/send_request.js
+++ b/chrome/renderer/resources/extensions/send_request.js
@@ -38,11 +38,11 @@ chromeHidden.handleResponse = function(requestId, name,
if (chromeHidden.validateCallbacks && !error) {
try {
if (!request.callbackSchema.parameters) {
- throw "No callback schemas defined";
+ throw new Error("No callback schemas defined");
}
if (request.callbackSchema.parameters.length > 1) {
- throw "Callbacks may only define one parameter";
+ throw new Error("Callbacks may only define one parameter");
}
chromeHidden.validate(callbackArgs,