Skip to content
This repository was archived by the owner on Jul 29, 2024. It is now read-only.

Commit 24c8ed7

Browse files
authored
chore(promises): match promises to webdriver.promise.Promise (#3282)
- resolve clang issues - rename ptor_ to browser
1 parent e4dccbe commit 24c8ed7

File tree

3 files changed

+31
-28
lines changed

3 files changed

+31
-28
lines changed

lib/browser.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ export class Browser {
172172
*
173173
* @type {q.Promise} Done when the new browser is ready for use
174174
*/
175-
ready: webdriver.Promise;
175+
ready: webdriver.promise.Promise;
176176

177177
/*
178178
* Set by the runner.
@@ -283,7 +283,7 @@ export class Browser {
283283
*
284284
* @return {q.Promise} A promise which resolves to the capabilities object.
285285
*/
286-
getProcessedConfig: () => webdriver.Promise;
286+
getProcessedConfig: () => webdriver.promise.Promise;
287287

288288
/**
289289
* Fork another instance of protractor for use in interactive tests.
@@ -329,7 +329,7 @@ export class Browser {
329329
*/
330330
private executeScript_(
331331
script: string|Function, description: string,
332-
...scriptArgs: any[]): webdriver.Promise {
332+
...scriptArgs: any[]): webdriver.promise.Promise {
333333
if (typeof script === 'function') {
334334
script = 'return (' + script + ').apply(null, arguments);';
335335
}
@@ -355,7 +355,7 @@ export class Browser {
355355
*/
356356
private executeAsyncScript_(
357357
script: string|Function, description: string,
358-
...scriptArgs: any[]): webdriver.Promise {
358+
...scriptArgs: any[]): webdriver.promise.Promise {
359359
if (typeof script === 'function') {
360360
script = 'return (' + script + ').apply(null, arguments);';
361361
}
@@ -377,15 +377,15 @@ export class Browser {
377377
* @return {!webdriver.promise.Promise} A promise that will resolve to the
378378
* scripts return value.
379379
*/
380-
waitForAngular(opt_description?: string): webdriver.Promise {
380+
waitForAngular(opt_description?: string): webdriver.promise.Promise {
381381
let description = opt_description ? ' - ' + opt_description : '';
382382
if (this.ignoreSynchronization) {
383383
return this.driver.controlFlow().execute(() => {
384384
return true;
385385
}, 'Ignore Synchronization Protractor.waitForAngular()');
386386
}
387387

388-
let runWaitForAngularScript: () => webdriver.Promise = () => {
388+
let runWaitForAngularScript: () => webdriver.promise.Promise = () => {
389389
if (this.plugins_.skipAngularStability()) {
390390
return webdriver.promise.fulfilled();
391391
} else if (this.rootEl) {
@@ -445,7 +445,7 @@ export class Browser {
445445
errMsg +=
446446
'\nWhile waiting for element with locator' + description;
447447
}
448-
let pendingTimeoutsPromise: webdriver.Promise;
448+
let pendingTimeoutsPromise: webdriver.promise.Promise;
449449
if (this.trackOutstandingTimeouts_) {
450450
pendingTimeoutsPromise = this.executeScript_(
451451
'return window.NG_PENDING_TIMEOUTS',
@@ -510,7 +510,7 @@ export class Browser {
510510
* @return {!webdriver.promise.Promise} A promise that will be resolved to an
511511
* array of the located {@link webdriver.WebElement}s.
512512
*/
513-
findElements(locator: Locator): webdriver.Promise {
513+
findElements(locator: Locator): webdriver.promise.Promise {
514514
return this.element.all(locator).getWebElements();
515515
}
516516

@@ -521,7 +521,7 @@ export class Browser {
521521
* the element is present on the page.
522522
*/
523523
isElementPresent(locatorOrElement: webdriver.Locator|
524-
webdriver.WebElement): webdriver.Promise {
524+
webdriver.WebElement): webdriver.promise.Promise {
525525
let element = (locatorOrElement.isPresent) ? locatorOrElement :
526526
this.element(locatorOrElement);
527527
return element.isPresent();
@@ -839,7 +839,7 @@ export class Browser {
839839
* @return {!webdriver.promise.Promise} A promise that will resolve once
840840
* page has been changed.
841841
*/
842-
setLocation(url: string): webdriver.Promise {
842+
setLocation(url: string): webdriver.promise.Promise {
843843
this.waitForAngular();
844844
return this
845845
.executeScript_(
@@ -861,7 +861,7 @@ export class Browser {
861861
* expect(browser.getLocationAbsUrl())
862862
* .toBe('http://angular.github.io/protractor/#/api');
863863
*/
864-
getLocationAbsUrl(): webdriver.Promise {
864+
getLocationAbsUrl(): webdriver.promise.Promise {
865865
this.waitForAngular();
866866
return this.executeScript_(
867867
clientSideScripts.getLocationAbsUrl, 'Protractor.getLocationAbsUrl()',
@@ -905,7 +905,7 @@ export class Browser {
905905
* is done. The promise will resolve to a boolean which represents whether
906906
* this is the first time that the debugger is called.
907907
*/
908-
private validatePortAvailability_(port: number): webdriver.Promise {
908+
private validatePortAvailability_(port: number): webdriver.promise.Promise {
909909
if (this.debuggerValidated_) {
910910
return webdriver.promise.fulfilled(false);
911911
}

lib/element.ts

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ export class ElementArrayFinder {
7272

7373
constructor(
7474
private browser_: Browser, getWebElements?: Function,
75-
private locator_?: any, public actionResults_: webdriver.Promise = null) {
75+
private locator_?: any,
76+
public actionResults_: webdriver.promise.Promise = null) {
7677
this.getWebElements = getWebElements || null;
7778

7879
// TODO(juliemr): might it be easier to combine this with our docs and just
@@ -351,7 +352,7 @@ export class ElementArrayFinder {
351352
* @return {!webdriver.promise.Promise} A promise which resolves to the
352353
* number of elements matching the locator.
353354
*/
354-
count(): webdriver.Promise {
355+
count(): webdriver.promise.Promise {
355356
return this.getWebElements().then(
356357
(arr: any) => { return arr.length; },
357358
(err: any) => {
@@ -411,7 +412,7 @@ export class ElementArrayFinder {
411412
* @return {Array.<ElementFinder>} Return a promise, which resolves to a list
412413
* of ElementFinders specified by the locator.
413414
*/
414-
asElementFinders_(): webdriver.Promise {
415+
asElementFinders_(): webdriver.promise.Promise {
415416
return this.getWebElements().then((arr: webdriver.WebElement[]) => {
416417
return arr.map((webElem: webdriver.WebElement) => {
417418
return ElementFinder.fromWebElement_(
@@ -444,7 +445,7 @@ export class ElementArrayFinder {
444445
* @return {!webdriver.promise.Promise} A promise which will resolve to
445446
* an array of ElementFinders represented by the ElementArrayFinder.
446447
*/
447-
then(fn: Function, errorFn: Function): webdriver.Promise {
448+
then(fn: Function, errorFn: Function): webdriver.promise.Promise {
448449
if (this.actionResults_) {
449450
return this.actionResults_.then(fn, errorFn);
450451
} else {
@@ -478,7 +479,7 @@ export class ElementArrayFinder {
478479
* function has been called on all the ElementFinders. The promise will
479480
* resolve to null.
480481
*/
481-
each(fn: Function): webdriver.Promise {
482+
each(fn: Function): webdriver.promise.Promise {
482483
return this.map(fn).then((): any => { return null; });
483484
}
484485

@@ -514,7 +515,7 @@ export class ElementArrayFinder {
514515
* @return {!webdriver.promise.Promise} A promise that resolves to an array
515516
* of values returned by the map function.
516517
*/
517-
map(mapFn: Function): webdriver.Promise {
518+
map(mapFn: Function): webdriver.promise.Promise {
518519
return this.asElementFinders_().then((arr: ElementFinder[]) => {
519520
let list = arr.map((elementFinder: ElementFinder, index: number) => {
520521
let mapResult = mapFn(elementFinder, index);
@@ -556,7 +557,7 @@ export class ElementArrayFinder {
556557
* @return {!webdriver.promise.Promise} A promise that resolves to the final
557558
* value of the accumulator.
558559
*/
559-
reduce(reduceFn: Function, initialValue: any): webdriver.Promise {
560+
reduce(reduceFn: Function, initialValue: any): webdriver.promise.Promise {
560561
let valuePromise = webdriver.promise.fulfilled(initialValue);
561562
return this.asElementFinders_().then((arr: ElementFinder[]) => {
562563
return arr.reduce(
@@ -655,7 +656,7 @@ export class ElementArrayFinder {
655656
*
656657
* @constructor
657658
* @extends {webdriver.WebElement}
658-
* @param {Protractor} ptor
659+
* @param {Browser} browser_
659660
* @param {ElementArrayFinder} elementArrayFinder The ElementArrayFinder
660661
* that this is branched from.
661662
* @return {ElementFinder}
@@ -665,7 +666,7 @@ export class ElementFinder {
665666
elementArrayFinder_: ElementArrayFinder;
666667
then: Function = null;
667668

668-
constructor(private ptor_: any, elementArrayFinder: ElementArrayFinder) {
669+
constructor(private browser_: Browser, elementArrayFinder: ElementArrayFinder) {
669670
if (!elementArrayFinder) {
670671
throw new Error('BUG: elementArrayFinder cannot be empty');
671672
}
@@ -718,7 +719,7 @@ export class ElementFinder {
718719
// Store a copy of the underlying elementArrayFinder, but with the more
719720
// restrictive getWebElements (which checks that there is only 1 element).
720721
this.elementArrayFinder_ = new ElementArrayFinder(
721-
this.ptor_, getWebElements, elementArrayFinder.locator(),
722+
this.browser_, getWebElements, elementArrayFinder.locator(),
722723
elementArrayFinder.actionResults_);
723724

724725
WEB_ELEMENT_FUNCTIONS.forEach((fnName: string) => {
@@ -745,7 +746,7 @@ export class ElementFinder {
745746
clone(): ElementFinder {
746747
// A shallow copy is all we need since the underlying fields can never be
747748
// modified
748-
return new ElementFinder(this.ptor_, this.parentElementArrayFinder);
749+
return new ElementFinder(this.browser_, this.parentElementArrayFinder);
749750
}
750751

751752
/**
@@ -778,7 +779,7 @@ export class ElementFinder {
778779
(parentWebElements: webdriver.WebElement[]) => {
779780
return parentWebElements[0];
780781
});
781-
return new webdriver.WebElementPromise(this.ptor_.driver, id);
782+
return new webdriver.WebElementPromise(this.browser_.driver, id);
782783
}
783784

784785
/**
@@ -993,7 +994,7 @@ export class ElementFinder {
993994
* @return {!webdriver.promise.Promise.<boolean>} A promise that will be
994995
* resolved to whether the two WebElements are equal.
995996
*/
996-
equals(element: any): webdriver.Promise {
997+
equals(element: any): webdriver.promise.Promise {
997998
return webdriver.WebElement.equals(
998999
this.getWebElement(),
9991000
element.getWebElement ? element.getWebElement() : element);

lib/globals.d.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,11 @@ declare namespace webdriver {
6060
getCapabilities: Function;
6161
}
6262

63-
class Promise {
64-
controlFlow: Function;
65-
then: Function;
63+
namespace promise {
64+
interface Promise {
65+
controlFlow: Function,
66+
then: Function
67+
}
6668
}
6769

6870
class Capabilities {

0 commit comments

Comments
 (0)