| OLD | NEW | 
|---|
|  | (Empty) | 
| 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 |  | 
| 3 // found in the LICENSE file. |  | 
| 4 |  | 
| 5 var normalizeArgumentsAndValidate = |  | 
| 6     require('schemaUtils').normalizeArgumentsAndValidate |  | 
| 7 var sendRequest = require('sendRequest').sendRequest; |  | 
| 8 |  | 
| 9 function extendSchema(schema) { |  | 
| 10   var extendedSchema = $Array.slice(schema); |  | 
| 11   extendedSchema.unshift({'type': 'string'}); |  | 
| 12   return extendedSchema; |  | 
| 13 } |  | 
| 14 |  | 
| 15 function StorageArea(namespace, schema) { |  | 
| 16   // Binds an API function for a namespace to its browser-side call, e.g. |  | 
| 17   // storage.sync.get('foo') -> (binds to) -> |  | 
| 18   // storage.get('sync', 'foo'). |  | 
| 19   // |  | 
| 20   // TODO(kalman): Put as a method on CustombindingObject and re-use (or |  | 
| 21   // even generate) for other APIs that need to do this. Same for other |  | 
| 22   // callers of registerCustomType(). |  | 
| 23   var self = this; |  | 
| 24   function bindApiFunction(functionName) { |  | 
| 25     self[functionName] = function() { |  | 
| 26       var funSchema = this.functionSchemas[functionName]; |  | 
| 27       var args = $Array.slice(arguments); |  | 
| 28       args = normalizeArgumentsAndValidate(args, funSchema); |  | 
| 29       return sendRequest( |  | 
| 30           'storage.' + functionName, |  | 
| 31           $Array.concat([namespace], args), |  | 
| 32           extendSchema(funSchema.definition.parameters), |  | 
| 33           {preserveNullInObjects: true}); |  | 
| 34     }; |  | 
| 35   } |  | 
| 36   var apiFunctions = ['get', 'set', 'remove', 'clear', 'getBytesInUse']; |  | 
| 37   $Array.forEach(apiFunctions, bindApiFunction); |  | 
| 38 } |  | 
| 39 |  | 
| 40 exports.StorageArea = StorageArea; |  | 
| OLD | NEW | 
|---|