Bumping manifests a=b2g-bump
[gecko.git] / dom / requestsync / RequestSyncTask.jsm
blob0cb8d6d85fbe854027a7cb3fb767e538c387d359
1 /* This Source Code Form is subject to the terms of the Mozilla Public
2  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
3  * You can obtain one at http://mozilla.org/MPL/2.0/. */
5 'use strict';
7 this.EXPORTED_SYMBOLS = ['RequestSyncTask'];
9 function debug(s) {
10   //dump('DEBUG RequestSyncTask: ' + s + '\n');
13 const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
15 Cu.import('resource://gre/modules/XPCOMUtils.jsm');
17 this.RequestSyncTask = function(aManager, aWindow, aApp, aData) {
18   debug('created');
20   this._manager = aManager;
21   this._window = aWindow;
22   this._app = aApp;
24   let keys = [ 'task', 'lastSync', 'oneShot', 'minInterval', 'wakeUpPage',
25                'wifiOnly', 'data', 'state', 'overwrittenMinInterval' ];
26   for (let i = 0; i < keys.length; ++i) {
27     if (!(keys[i] in aData)) {
28       dump("ERROR - RequestSyncTask must receive a fully app object: " + keys[i] + " missing.");
29       throw "ERROR!";
30     }
32     this["_" + keys[i]] = aData[keys[i]];
33   }
36 this.RequestSyncTask.prototype = {
37   classDescription: 'RequestSyncTask XPCOM Component',
38   classID: Components.ID('{a1e1c9c6-ce42-49d4-b8b4-fbd686d8fdd9}'),
39   contractID: '@mozilla.org/dom/request-sync-manager;1',
40   QueryInterface: XPCOMUtils.generateQI([]),
42   get app() {
43     return this._app;
44   },
46   get state() {
47     return this._state;
48   },
50   get overwrittenMinInterval() {
51     return this._overwrittenMinInterval;
52   },
54   get task() {
55     return this._task;
56   },
58   get lastSync() {
59     return this._lastSync;
60   },
62   get wakeUpPage() {
63     return this._wakeUpPage;
64   },
66   get oneShot() {
67     return this._oneShot;
68   },
70   get minInterval() {
71     return this._minInterval;
72   },
74   get wifiOnly() {
75     return this._wifiOnly;
76   },
78   get data() {
79     return this._data;
80   },
82   setPolicy: function(aState, aOverwrittenMinInterval) {
83     debug("setPolicy");
84     let self = this;
86     return new this._window.Promise(function(aResolve, aReject) {
87       let p = self._manager.setPolicy(self._task, self._app.origin,
88                                       self._app.manifestURL,
89                                       self._app.isInBrowserElement,
90                                       aState,
91                                       aOverwrittenMinInterval);
93       // Set the new value only when the promise is resolved.
94       p.then(function() {
95         self._state = aState;
96         self._overwrittenMinInterval = aOverwrittenMinInterval;
97         aResolve();
98       }, aReject);
99     });
100   },
102   runNow: function() {
103     debug("runNow");
104     return this._manager.runTask(this._task, this._app.origin,
105                                  this._app.manifestURL,
106                                  this._app.isInBrowserElement);
107   }