1// Copyright 2013 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 5var Event = require('event_bindings').Event; 6var sendRequest = require('sendRequest').sendRequest; 7var validate = require('schemaUtils').validate; 8 9function extendSchema(schema) { 10 var extendedSchema = $Array.slice(schema); 11 extendedSchema.unshift({'type': 'string'}); 12 return extendedSchema; 13} 14 15function ChromeDirectSetting(prefKey, valueSchema) { 16 this.get = function(details, callback) { 17 var getSchema = this.functionSchemas.get.definition.parameters; 18 validate([details, callback], getSchema); 19 return sendRequest('types.private.ChromeDirectSetting.get', 20 [prefKey, details, callback], 21 extendSchema(getSchema)); 22 }; 23 this.set = function(details, callback) { 24 var setSchema = $Array.slice( 25 this.functionSchemas.set.definition.parameters); 26 setSchema[0].properties.value = valueSchema; 27 validate([details, callback], setSchema); 28 return sendRequest('types.private.ChromeDirectSetting.set', 29 [prefKey, details, callback], 30 extendSchema(setSchema)); 31 }; 32 this.clear = function(details, callback) { 33 var clearSchema = this.functionSchemas.clear.definition.parameters; 34 validate([details, callback], clearSchema); 35 return sendRequest('types.private.ChromeDirectSetting.clear', 36 [prefKey, details, callback], 37 extendSchema(clearSchema)); 38 }; 39 this.onChange = new Event('types.private.ChromeDirectSetting.' + 40 prefKey + 41 '.onChange'); 42}; 43 44exports.ChromeDirectSetting = ChromeDirectSetting; 45 46