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