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 // Custom binding for the contentSettings API. 6 7 var sendRequest = require('sendRequest').sendRequest; 8 var validate = require('schemaUtils').validate; 9 10 function extendSchema(schema) { 11 var extendedSchema = $Array.slice(schema); 12 extendedSchema.unshift({'type': 'string'}); 13 return extendedSchema; 14 } 15 16 function ContentSetting(contentType, settingSchema) { 17 this.get = function(details, callback) { 18 var getSchema = this.functionSchemas.get.definition.parameters; 19 validate([details, callback], getSchema); 20 return sendRequest('contentSettings.get', 21 [contentType, details, callback], 22 extendSchema(getSchema)); 23 }; 24 this.set = function(details, callback) { 25 var setSchema = $Array.slice( 26 this.functionSchemas.set.definition.parameters); 27 setSchema[0].properties.setting = settingSchema; 28 validate([details, callback], setSchema); 29 return sendRequest('contentSettings.set', 30 [contentType, details, callback], 31 extendSchema(setSchema)); 32 }; 33 this.clear = function(details, callback) { 34 var clearSchema = this.functionSchemas.clear.definition.parameters; 35 validate([details, callback], clearSchema); 36 return sendRequest('contentSettings.clear', 37 [contentType, details, callback], 38 extendSchema(clearSchema)); 39 }; 40 this.getResourceIdentifiers = function(callback) { 41 var schema = 42 this.functionSchemas.getResourceIdentifiers.definition.parameters; 43 validate([callback], schema); 44 return sendRequest( 45 'contentSettings.getResourceIdentifiers', 46 [contentType, callback], 47 extendSchema(schema)); 48 }; 49 } 50 51 exports.ContentSetting = ContentSetting; 52