Skip to content

Commit 762a185

Browse files
committed
Move towards the standard promise API
Promise is no longer an abstract class and its constructor takes a resolver function. Deferred is no longer an instanceof Promise, but it still (temporarily) implements Thenable for API backwards compatibility.
1 parent 446f654 commit 762a185

File tree

5 files changed

+371
-440
lines changed

5 files changed

+371
-440
lines changed

javascript/safari-driver/extension/commands.js

+16-17
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,11 @@ safaridriver.extension.commands.getWindowHandles = function(session) {
108108
* screenshot of the focused tab as a base64 encoded PNG.
109109
*/
110110
safaridriver.extension.commands.takeScreenshot = function(session) {
111-
var response = new webdriver.promise.Deferred();
112-
session.getCommandTab().visibleContentsAsDataURL(function(dataUrl) {
113-
response.fulfill(dataUrl.substring('data:image/png;base64,'.length));
111+
return new webdriver.promise.Promise(function(fulfill) {
112+
session.getCommandTab().visibleContentsAsDataURL(function(dataUrl) {
113+
fulfill(dataUrl.substring('data:image/png;base64,'.length));
114+
});
114115
});
115-
return response.promise;
116116
};
117117

118118

@@ -138,15 +138,14 @@ safaridriver.extension.commands.loadUrl = function(session, command) {
138138
'http://code.google.com/p/selenium/issues/detail?id=3773');
139139
}
140140

141-
var response = new webdriver.promise.Deferred();
142-
var tab = session.getCommandTab();
143-
tab.whenReady(function() {
144-
var expectLoad = tab.loadsNewPage(uri);
145-
safaridriver.extension.commands.sendNavigationCommand_(session, command,
146-
expectLoad).then(response.fulfill, response.reject);
141+
return new webdriver.promise.Promise(function(fulfill, reject) {
142+
var tab = session.getCommandTab();
143+
tab.whenReady(function() {
144+
var expectLoad = tab.loadsNewPage(uri);
145+
safaridriver.extension.commands.sendNavigationCommand_(
146+
session, command, expectLoad).then(fulfill, reject);
147+
});
147148
});
148-
149-
return response.promise;
150149
};
151150

152151

@@ -158,12 +157,12 @@ safaridriver.extension.commands.loadUrl = function(session, command) {
158157
* the operation has completed.
159158
*/
160159
safaridriver.extension.commands.refresh = function(session, command) {
161-
var response = new webdriver.promise.Deferred();
162-
session.getCommandTab().whenReady(function() {
163-
safaridriver.extension.commands.sendNavigationCommand_(session, command,
164-
true).then(response.fulfill, response.reject);
160+
return new webdriver.promise.Promise(function(fulfill, reject) {
161+
session.getCommandTab().whenReady(function() {
162+
safaridriver.extension.commands.sendNavigationCommand_(
163+
session, command, true).then(fulfill, reject);
164+
});
165165
});
166-
return response.promise;
167166
};
168167

169168

javascript/safari-driver/inject/util.js

+18-20
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ goog.provide('safaridriver.inject.util');
2121

2222
goog.require('bot.response');
2323
goog.require('safaridriver.message.LoadModule');
24-
goog.require('webdriver.promise.Deferred');
24+
goog.require('webdriver.promise.Promise');
2525

2626

2727
/**
@@ -33,25 +33,23 @@ goog.require('webdriver.promise.Deferred');
3333
* the module's source code.
3434
*/
3535
safaridriver.inject.util.loadModule = function(moduleId, target) {
36-
var numAttempts = 0;
37-
var d = new webdriver.promise.Deferred();
38-
attemptLoad();
39-
return d.promise;
40-
41-
function attemptLoad() {
42-
var message = new safaridriver.message.LoadModule(moduleId);
43-
var response = /** @type {bot.response.ResponseObject} */ (
44-
message.sendSync(target));
45-
try {
46-
var src = bot.response.checkResponse(response)['value'];
47-
d.fulfill(src);
48-
} catch (ex) {
49-
numAttempts += 1;
50-
if (numAttempts == 3) {
51-
d.reject(ex);
52-
} else {
53-
setTimeout(attemptLoad, 150);
36+
return new webdriver.promise.Promise(function(fulfill, reject) {
37+
var numAttempts = 0;
38+
attemptLoad();
39+
function attemptLoad() {
40+
var message = new safaridriver.message.LoadModule(moduleId);
41+
var response = /** @type {bot.response.ResponseObject} */ (
42+
message.sendSync(target));
43+
try {
44+
fulfill(bot.response.checkResponse(response)['value']);
45+
} catch (ex) {
46+
numAttempts += 1;
47+
if (numAttempts == 3) {
48+
reject(ex);
49+
} else {
50+
setTimeout(attemptLoad, 150);
51+
}
5452
}
5553
}
56-
}
54+
});
5755
};

0 commit comments

Comments
 (0)