12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Custom binding for the contentSettings API. 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)var sendRequest = require('sendRequest').sendRequest; 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)var validate = require('schemaUtils').validate; 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)function extendSchema(schema) { 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch var extendedSchema = $Array.slice(schema); 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) extendedSchema.unshift({'type': 'string'}); 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return extendedSchema; 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)function ContentSetting(contentType, settingSchema) { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.get = function(details, callback) { 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var getSchema = this.functionSchemas.get.definition.parameters; 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) validate([details, callback], getSchema); 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return sendRequest('contentSettings.get', 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) [contentType, details, callback], 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) extendSchema(getSchema)); 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.set = function(details, callback) { 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch var setSchema = $Array.slice( 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch this.functionSchemas.set.definition.parameters); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) setSchema[0].properties.setting = settingSchema; 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) validate([details, callback], setSchema); 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return sendRequest('contentSettings.set', 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) [contentType, details, callback], 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) extendSchema(setSchema)); 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.clear = function(details, callback) { 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var clearSchema = this.functionSchemas.clear.definition.parameters; 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) validate([details, callback], clearSchema); 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return sendRequest('contentSettings.clear', 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) [contentType, details, callback], 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) extendSchema(clearSchema)); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.getResourceIdentifiers = function(callback) { 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var schema = 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.functionSchemas.getResourceIdentifiers.definition.parameters; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) validate([callback], schema); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return sendRequest( 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 'contentSettings.getResourceIdentifiers', 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) [contentType, callback], 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) extendSchema(schema)); 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)exports.ContentSetting = ContentSetting; 52