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.
5 var Event
= require('event_bindings').Event
;
6 var sendRequest
= require('sendRequest').sendRequest
;
7 var validate
= require('schemaUtils').validate
;
9 function extendSchema(schema
) {
10 var extendedSchema
= $Array
.slice(schema
);
11 extendedSchema
.unshift({'type': 'string'});
12 return extendedSchema
;
15 function ChromeSetting(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.ChromeSetting.get',
20 [prefKey
, details
, callback
],
21 extendSchema(getSchema
));
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.ChromeSetting.set',
29 [prefKey
, details
, callback
],
30 extendSchema(setSchema
));
32 this.clear = function(details
, callback
) {
33 var clearSchema
= this.functionSchemas
.clear
.definition
.parameters
;
34 validate([details
, callback
], clearSchema
);
35 return sendRequest('types.ChromeSetting.clear',
36 [prefKey
, details
, callback
],
37 extendSchema(clearSchema
));
39 this.onChange
= new Event('types.ChromeSetting.' + prefKey
+ '.onChange');
42 exports
.ChromeSetting
= ChromeSetting
;