diff options
author | kalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-19 04:22:38 +0000 |
---|---|---|
committer | kalman@chromium.org <kalman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-19 04:22:38 +0000 |
commit | 116f0a3aa63c5b508ce7d5e9aad1bbb7ab2921a6 (patch) | |
tree | 4051fe248e9794c97d8450dcc1c53c6f0cd13c44 /chrome/renderer | |
parent | 5eae551d867c6da7e1ed363110f02f89f99970d9 (diff) | |
download | chromium_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')
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, |