Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Side by Side Diff: chrome/renderer/resources/extensions/storage_custom_bindings.js

Issue 12313142: Revert 184837 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Custom binding for the storage API. 5 // Custom bindings for the storage API.
6 6
7 var binding = require('binding').Binding.create('storage'); 7 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden();
8
9 var normalizeArgumentsAndValidate = 8 var normalizeArgumentsAndValidate =
10 require('schemaUtils').normalizeArgumentsAndValidate 9 require('schemaUtils').normalizeArgumentsAndValidate
11 var sendRequest = require('sendRequest').sendRequest; 10 var sendRequest = require('sendRequest').sendRequest;
12 11
13 binding.registerCustomType('storage.StorageArea', function() { 12 chromeHidden.registerCustomType('storage.StorageArea', function() {
14 function extendSchema(schema) { 13 function extendSchema(schema) {
15 var extendedSchema = schema.slice(); 14 var extendedSchema = schema.slice();
16 extendedSchema.unshift({'type': 'string'}); 15 extendedSchema.unshift({'type': 'string'});
17 return extendedSchema; 16 return extendedSchema;
18 } 17 }
19 18
20 function StorageArea(namespace, schema) { 19 function StorageArea(namespace, schema) {
21 // Binds an API function for a namespace to its browser-side call, e.g. 20 // Binds an API function for a namespace to its browser-side call, e.g.
22 // storage.sync.get('foo') -> (binds to) -> 21 // storage.sync.get('foo') -> (binds to) ->
23 // storage.get('sync', 'foo'). 22 // storage.get('sync', 'foo').
24 // 23 //
25 // TODO(kalman): Put as a method on CustombindingObject and re-use (or 24 // TODO(kalman): Put as a method on CustomBindingsObject and re-use (or
26 // even generate) for other APIs that need to do this. Same for other 25 // even generate) for other APIs that need to do this. Same for other
27 // callers of registerCustomType(). 26 // callers of registerCustomType().
28 var self = this; 27 var self = this;
29 function bindApiFunction(functionName) { 28 function bindApiFunction(functionName) {
30 self[functionName] = function() { 29 self[functionName] = function() {
31 var funSchema = this.functionSchemas[functionName]; 30 var funSchema = this.functionSchemas[functionName];
32 var args = Array.prototype.slice.call(arguments); 31 var args = Array.prototype.slice.call(arguments);
33 args = normalizeArgumentsAndValidate(args, funSchema); 32 args = normalizeArgumentsAndValidate(args, funSchema);
34 return sendRequest( 33 return sendRequest(
35 'storage.' + functionName, 34 'storage.' + functionName,
36 [namespace].concat(args), 35 [namespace].concat(args),
37 extendSchema(funSchema.definition.parameters), 36 extendSchema(funSchema.definition.parameters),
38 {preserveNullInObjects: true}); 37 {preserveNullInObjects: true});
39 }; 38 };
40 } 39 }
41 var apiFunctions = ['get', 'set', 'remove', 'clear', 'getBytesInUse']; 40 var apiFunctions = ['get', 'set', 'remove', 'clear', 'getBytesInUse'];
42 apiFunctions.forEach(bindApiFunction); 41 apiFunctions.forEach(bindApiFunction);
43 } 42 }
44 43
45 return StorageArea; 44 return StorageArea;
46 }); 45 });
47
48 exports.binding = binding.generate();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698