1 // Copyright (c) 2014 Intel Corporation. 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 common = requireNative('widget_common');
10 var widgetStringInfo = {
12 "description" : empty,
17 "authorEmail" : empty,
23 function defineReadOnlyProperty(object, key, value) {
24 Object.defineProperty(object, key, {
29 value = window.innerWidth;
30 } else if (key == "height") {
31 value = window.innerHeight;
32 } else if (value == empty) {
33 value = extension.internal.sendSyncMessage(
34 { cmd: 'GetWidgetInfo', widgetKey: key });
42 for (var key in widgetStringInfo) {
43 defineReadOnlyProperty(exports, key, widgetStringInfo[key]);
46 var WidgetStorage = function() {
47 var _SetItem = function(itemKey, itemValue) {
48 var result = extension.internal.sendSyncMessage({
49 cmd: 'SetPreferencesItem',
50 preferencesItemKey: String(itemKey),
51 preferencesItemValue: String(itemValue) });
56 throw new common.CustomDOMException(
57 common.CustomDOMException.NO_MODIFICATION_ALLOWED_ERR,
58 'The object can not be modified.');
62 var _GetSetter = function(itemKey) {
63 var _itemKey = itemKey;
64 return function(itemValue) {
65 return _SetItem(_itemKey, itemValue);
69 var _GetGetter = function(itemKey) {
70 var _itemKey = itemKey;
72 var result = extension.internal.sendSyncMessage(
73 { cmd: 'GetItemValueByKey',
74 preferencesItemKey: String(itemKey) });
75 return result == empty ? null : result;
79 this.init = function() {
80 var result = extension.internal.sendSyncMessage({cmd: 'GetAllItems'});
81 for (var itemKey in result) {
82 this.__defineSetter__(String(itemKey), _GetSetter(itemKey));
83 this.__defineGetter__(String(itemKey), _GetGetter(itemKey));
87 this.__defineGetter__('length', function() {
88 var result = extension.internal.sendSyncMessage({cmd: 'GetAllItems'});
89 return Object.keys(result).length;
92 this.key = function(index) {
93 var result = extension.internal.sendSyncMessage({ cmd: 'GetAllItems'});
94 return Object.keys(result)[index];
97 this.getItem = function(itemKey) {
98 var result = extension.internal.sendSyncMessage({
99 cmd: 'GetItemValueByKey',
100 preferencesItemKey: String(itemKey)});
101 return result == empty ? null : result;
104 this.setItem = function(itemKey, itemValue) {
105 return _SetItem(itemKey, itemValue);
108 this.removeItem = function(itemKey) {
109 var result = extension.internal.sendSyncMessage({
110 cmd: 'RemovePreferencesItem',
111 preferencesItemKey: String(itemKey)});
114 throw new common.CustomDOMException(
115 common.CustomDOMException.NO_MODIFICATION_ALLOWED_ERR,
116 'The object can not be modified.');
120 this.clear = function() {
121 extension.internal.sendSyncMessage({cmd: 'ClearAllItems'});
127 var widgetStorage = new WidgetStorage();
128 exports.preferences = widgetStorage;
130 exports.toString = function() {
131 return '[object Widget]';
134 Object.defineProperty(exports, 'preferences', {
138 return widgetStorage;