Skip to content

Commit e5d67a7

Browse files
committed
[js] Remove thenable properties from promise.Deferred
1 parent dc252ef commit e5d67a7

File tree

6 files changed

+38
-66
lines changed

6 files changed

+38
-66
lines changed

javascript/node/selenium-webdriver/CHANGES.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
* Internal cleanup replacing uses of managed promises with native promises
1010
* Removed the mandatory use of Firefox Dev Edition, when using Marionette driver
1111
* Fixed timeouts' URL
12+
* `promise.Deferred` is no longer a thenable object.
1213
* Removed deprecated modules:
1314
- `selenium-webdriver/error` (use `selenium-webdriver/lib/error`,\
1415
or the `error` property exported by `selenium-webdriver`)
@@ -19,6 +20,11 @@
1920
- `until.WebElementCondition` (use `webdriver.WebElementCondition`)
2021
- `webdriver.UnhandledAlertError` (use `error.UnexpectedAlertOpenError`)
2122
* Removed deprecated functions:
23+
- `Deferred#cancel()`
24+
- `Deferred#catch()`
25+
- `Deferred#finally()`
26+
- `Deferred#isPending()`
27+
- `Deferred#then()`
2228
- `Promise#thenCatch()`
2329
- `Promise#thenFinally()`
2430
- `WebDriver#isElementPresent()`

javascript/node/selenium-webdriver/http/util.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ exports.waitForServer = function(url, timeout) {
8787
Error('Timed out waiting for the WebDriver server at ' + url));
8888
} else {
8989
setTimeout(function() {
90-
if (ready.isPending()) {
90+
if (ready.promise.isPending()) {
9191
checkServerStatus();
9292
}
9393
}, 50);
@@ -122,15 +122,15 @@ exports.waitForUrl = function(url, timeout) {
122122
'Timed out waiting for the URL to return 2xx: ' + url));
123123
} else {
124124
setTimeout(function() {
125-
if (ready.isPending()) {
125+
if (ready.promise.isPending()) {
126126
testUrl();
127127
}
128128
}, 50);
129129
}
130130
}
131131

132132
function onResponse(response) {
133-
if (!ready.isPending()) return;
133+
if (!ready.promise.isPending()) return;
134134
if (response.status > 199 && response.status < 300) {
135135
return ready.fulfill();
136136
}

javascript/node/selenium-webdriver/lib/promise.js

Lines changed: 3 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1331,7 +1331,6 @@ Thenable.addImplementation(ManagedPromise);
13311331
* the next turn of the event loop, the rejection will be passed to the
13321332
* {@link ControlFlow} as an unhandled failure.
13331333
*
1334-
* @implements {Thenable<T>}
13351334
* @template T
13361335
*/
13371336
class Deferred {
@@ -1375,42 +1374,7 @@ class Deferred {
13751374
reject(opt_reason);
13761375
};
13771376
}
1378-
1379-
/** @override */
1380-
isPending() {
1381-
return this.promise.isPending();
1382-
}
1383-
1384-
/** @override */
1385-
cancel(opt_reason) {
1386-
this.promise.cancel(opt_reason);
1387-
}
1388-
1389-
/**
1390-
* @override
1391-
* @deprecated Use {@code then} from the promise property directly.
1392-
*/
1393-
then(opt_cb, opt_eb) {
1394-
return this.promise.then(opt_cb, opt_eb);
1395-
}
1396-
1397-
/**
1398-
* @override
1399-
* @deprecated Use {@lcode catch} from the promise property directly.
1400-
*/
1401-
catch(opt_eb) {
1402-
return this.promise.catch(opt_eb);
1403-
}
1404-
1405-
/**
1406-
* @override
1407-
* @deprecated Use {@code finally} from the promise property directly.
1408-
*/
1409-
finally(opt_cb) {
1410-
return this.promise.finally(opt_cb);
1411-
}
14121377
}
1413-
Thenable.addImplementation(Deferred);
14141378

14151379

14161380
/**
@@ -2702,7 +2666,8 @@ class TaskQueue extends events.EventEmitter {
27022666

27032667
if (this.pending_) {
27042668
vlog(2, () => this + '.abort(); cancelling pending task', this);
2705-
this.pending_.task.cancel(/** @type {!CancellationError} */(error));
2669+
this.pending_.task.promise.cancel(
2670+
/** @type {!CancellationError} */(error));
27062671

27072672
} else {
27082673
vlog(2, () => this + '.abort(); emitting error event', this);
@@ -3018,7 +2983,7 @@ function consume(generatorFn, opt_self, var_args) {
30182983
}
30192984

30202985
function pump(fn, opt_arg) {
3021-
if (!deferred.isPending()) {
2986+
if (!deferred.promise.isPending()) {
30222987
return; // Defererd was cancelled; silently abort.
30232988
}
30242989

javascript/node/selenium-webdriver/test/lib/promise_flow_test.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ describe('promise control flow', function() {
224224

225225
return timeout(5).then(function() {
226226
assert(!callback.called);
227-
d1.fulfill(d2);
227+
d1.fulfill(d2.promise);
228228
return timeout(5);
229229
}).then(function() {
230230
assert(!callback.called);
@@ -1454,7 +1454,7 @@ describe('promise control flow', function() {
14541454
});
14551455

14561456
var d = new promise.Deferred();
1457-
d.then(deferredPair.callback, deferredPair.errback);
1457+
d.promise.then(deferredPair.callback, deferredPair.errback);
14581458

14591459
promise.fulfilled().
14601460
then(function() {
@@ -1479,7 +1479,7 @@ describe('promise control flow', function() {
14791479
});
14801480

14811481
var d = new promise.Deferred();
1482-
d.then(deferredPair.callback, deferredPair.errback);
1482+
d.promise.then(deferredPair.callback, deferredPair.errback);
14831483

14841484
schedule('a').
14851485
then(function() {
@@ -1558,7 +1558,7 @@ describe('promise control flow', function() {
15581558
assert.equal(e, err);
15591559
assertFlowIs(defaultFlow);
15601560
});
1561-
promise.defer().then(function() {
1561+
promise.defer().promise.then(function() {
15621562
assertFlowIs(defaultFlow);
15631563
});
15641564

@@ -1578,9 +1578,11 @@ describe('promise control flow', function() {
15781578
assertFlowIs(newFlow);
15791579
});
15801580

1581-
promise.defer().then(function() {
1581+
let d = promise.defer();
1582+
d.promise.then(function() {
15821583
assertFlowIs(newFlow);
15831584
});
1585+
d.fulfill();
15841586
}).then(function() {
15851587
assertFlowIs(newFlow);
15861588
});

javascript/node/selenium-webdriver/test/lib/promise_test.js

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,10 @@ describe('promise', function() {
6565
assertIsPromise(new promise.Promise(function(fulfill) {
6666
fulfill();
6767
}));
68-
assertIsPromise(new promise.Deferred());
6968
assertIsPromise(new promise.Deferred().promise);
7069
assertIsPromise({then:function() {}});
7170

71+
assertNotPromise(new promise.Deferred());
7272
assertNotPromise(undefined);
7373
assertNotPromise(null);
7474
assertNotPromise('');
@@ -139,17 +139,17 @@ describe('promise', function() {
139139
describe('cancel', function() {
140140
it('passesTheCancellationReasonToReject', function() {
141141
var d = new promise.Deferred();
142-
var res = d.then(assert.fail, function(e) {
142+
var res = d.promise.then(assert.fail, function(e) {
143143
assert.ok(e instanceof promise.CancellationError);
144144
assert.equal('because i said so', e.message);
145145
});
146-
d.cancel('because i said so');
146+
d.promise.cancel('because i said so');
147147
return res;
148148
});
149149

150150
it('canCancelADeferredFromAChainedPromise', function() {
151151
var d = new promise.Deferred();
152-
var p = d.then(assert.fail, function(e) {
152+
var p = d.promise.then(assert.fail, function(e) {
153153
assert.ok(e instanceof promise.CancellationError);
154154
assert.equal('because i said so', e.message);
155155
});
@@ -207,7 +207,7 @@ describe('promise', function() {
207207

208208
it('WaitsForValueToBeResolvedBeforeInvokingCallback', function() {
209209
var d = new promise.Deferred(), callback;
210-
let result = promise.when(d, callback = callbackHelper(function(value) {
210+
let result = promise.when(d.promise, callback = callbackHelper(function(value) {
211211
assert.equal('hi', value);
212212
}));
213213
callback.assertNotCalled();
@@ -506,10 +506,11 @@ describe('promise', function() {
506506

507507
describe('all', function() {
508508
it('(base case)', function() {
509+
let defer = [promise.defer(), promise.defer()];
509510
var a = [
510511
0, 1,
511-
promise.defer(),
512-
promise.defer(),
512+
defer[0].promise,
513+
defer[1].promise,
513514
4, 5, 6
514515
];
515516
delete a[5];
@@ -521,10 +522,10 @@ describe('promise', function() {
521522
var result = promise.all(a).then(pair.callback, pair.errback);
522523
pair.assertNeither();
523524

524-
a[2].fulfill(2);
525+
defer[0].fulfill(2);
525526
pair.assertNeither();
526527

527-
a[3].fulfill(3);
528+
defer[1].fulfill(3);
528529
return result.then(() => pair.assertCallback());
529530
});
530531

@@ -533,14 +534,12 @@ describe('promise', function() {
533534
});
534535

535536
it('usesFirstRejection', function() {
536-
var a = [
537-
promise.defer(),
538-
promise.defer()
539-
];
537+
let defer = [promise.defer(), promise.defer()];
538+
let a = [defer[0].promise, defer[1].promise];
540539

541540
var result = promise.all(a).then(assert.fail, assertIsStubError);
542-
a[1].reject(new StubError);
543-
setTimeout(() => a[0].reject(Error('ignored')), 0);
541+
defer[1].reject(new StubError);
542+
setTimeout(() => defer[0].reject(Error('ignored')), 0);
544543
return result;
545544
});
546545
});
@@ -587,7 +586,7 @@ describe('promise', function() {
587586

588587
it('inputIsPromise', function() {
589588
var input = promise.defer();
590-
var result = promise.map(input, function(value) {
589+
var result = promise.map(input.promise, function(value) {
591590
return value + 1;
592591
});
593592

@@ -739,7 +738,7 @@ describe('promise', function() {
739738

740739
it('inputIsPromise', function() {
741740
var input = promise.defer();
742-
var result = promise.filter(input, function(value) {
741+
var result = promise.filter(input.promise, function(value) {
743742
return value > 1 && value < 3;
744743
});
745744

javascript/node/selenium-webdriver/test/lib/webdriver_test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1563,12 +1563,12 @@ describe('WebDriver', function() {
15631563

15641564
describe('alert handling', function() {
15651565
it('alertResolvesWhenPromisedTextResolves', function() {
1566-
var textPromise = new promise.Deferred();
1566+
var deferredText = new promise.Deferred();
15671567

1568-
var alert = new AlertPromise({}, textPromise);
1568+
var alert = new AlertPromise({}, deferredText.promise);
15691569
assert.ok(alert.isPending());
15701570

1571-
textPromise.fulfill(new Alert({}, 'foo'));
1571+
deferredText.fulfill(new Alert({}, 'foo'));
15721572
return alert.getText().then(function(text) {
15731573
assert.equal('foo', text);
15741574
});

0 commit comments

Comments
 (0)