Skip to content

Commit 5249570

Browse files
committed
Code cleanup/simplification
1 parent e5d87c2 commit 5249570

File tree

5 files changed

+95
-364
lines changed

5 files changed

+95
-364
lines changed

javascript/webdriver/abstractbuilder.js

Lines changed: 0 additions & 135 deletions
This file was deleted.

javascript/webdriver/builder.js

Lines changed: 95 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -14,57 +14,107 @@
1414

1515
goog.provide('webdriver.Builder');
1616

17+
goog.require('goog.Uri');
1718
goog.require('goog.userAgent');
18-
goog.require('webdriver.AbstractBuilder');
19+
goog.require('webdriver.Capabilities');
1920
goog.require('webdriver.FirefoxDomExecutor');
2021
goog.require('webdriver.WebDriver');
2122
goog.require('webdriver.http.CorsClient');
2223
goog.require('webdriver.http.Executor');
2324
goog.require('webdriver.http.XhrClient');
24-
goog.require('webdriver.process');
2525

2626

2727

2828
/**
29+
* Creates new {@code webdriver.WebDriver} clients for use in a browser
30+
* environment. Upon instantiation, each Builder will configure itself based
31+
* on the following query parameters:
32+
* <dl>
33+
* <dt>wdurl
34+
* <dd>Defines the WebDriver server to send commands to. If this is a
35+
* relative URL, the builder will use the standard WebDriver wire
36+
* protocol and a {@link webdriver.http.XhrClient}. Otherwise, it will
37+
* use a {@link webdriver.http.CorsClient}; this only works when
38+
* connecting to an instance of the Java Selenium server. The server URL
39+
* may be changed using {@code #usingServer}.
40+
*
41+
* <dt>wdsid
42+
* <dd>Defines the session to connect to. If omitted, will request a new
43+
* session from the server.
44+
* </dl>
45+
*
46+
* @param {Window=} opt_window The window to extract query parameters from.
2947
* @constructor
30-
* @extends {webdriver.AbstractBuilder}
48+
* @final
49+
* @struct
3150
*/
32-
webdriver.Builder = function() {
33-
goog.base(this);
34-
35-
/**
36-
* ID of an existing WebDriver session that new clients should use.
37-
* Initialized from the value of the
38-
* {@link webdriver.AbstractBuilder.SESSION_ID_ENV} environment variable, but
39-
* may be overridden using
40-
* {@link webdriver.AbstractBuilder#usingSession}.
41-
* @private {string}
42-
*/
51+
webdriver.Builder = function(opt_window) {
52+
var win = opt_window || window;
53+
var data = new goog.Uri(win.location).getQueryData();
54+
55+
/** @private {string} */
56+
this.serverUrl_ =
57+
/** @type {string} */ (data.get(webdriver.Builder.SERVER_URL_PARAM,
58+
webdriver.Builder.DEFAULT_SERVER_URL));
59+
60+
/** @private {string} */
4361
this.sessionId_ =
44-
webdriver.process.getEnv(webdriver.Builder.SESSION_ID_ENV);
62+
/** @type {string} */ (data.get(webdriver.Builder.SESSION_ID_PARAM));
63+
64+
/** @private {!webdriver.Capabilities} */
65+
this.capabilities_ = new webdriver.Capabilities();
4566
};
46-
goog.inherits(webdriver.Builder, webdriver.AbstractBuilder);
4767

4868

4969
/**
50-
* Environment variable that defines the session ID of an existing WebDriver
51-
* session to use when creating clients. If set, all new Builder instances will
52-
* default to creating clients that use this session. To create a new session,
53-
* use {@code #useExistingSession(boolean)}. The use of this environment
54-
* variable requires that {@link webdriver.AbstractBuilder.SERVER_URL_ENV} also
55-
* be set.
70+
* Query parameter that defines which session to connect to.
71+
* @type {string}
72+
* @const
73+
*/
74+
webdriver.Builder.SESSION_ID_PARAM = 'wdsid';
75+
76+
77+
/**
78+
* Query parameter that defines the URL of the remote server to connect to.
79+
* @type {string}
80+
* @const
81+
*/
82+
webdriver.Builder.SERVER_URL_PARAM = 'wdurl';
83+
84+
85+
/**
86+
* The default server URL to use.
5687
* @type {string}
5788
* @const
58-
* @see webdriver.process.getEnv
5989
*/
60-
webdriver.Builder.SESSION_ID_ENV = 'wdsid';
90+
webdriver.Builder.DEFAULT_SERVER_URL = 'http://localhost:4444/wd/hub';
91+
92+
93+
/**
94+
* Configures which WebDriver server should be used for new sessions.
95+
* @param {string} url URL of the server to use.
96+
* @return {!webdriver.Builder} This Builder instance for chain calling.
97+
*/
98+
webdriver.Builder.prototype.usingServer = function(url) {
99+
this.serverUrl_ = url;
100+
return this;
101+
};
102+
103+
104+
/**
105+
* @return {string} The URL of the WebDriver server this instance is configured
106+
* to use.
107+
*/
108+
webdriver.Builder.prototype.getServerUrl = function() {
109+
return this.serverUrl_;
110+
};
61111

62112

63113
/**
64114
* Configures the builder to create a client that will use an existing WebDriver
65115
* session.
66116
* @param {string} id The existing session ID to use.
67-
* @return {!webdriver.AbstractBuilder} This Builder instance for chain calling.
117+
* @return {!webdriver.Builder} This Builder instance for chain calling.
68118
*/
69119
webdriver.Builder.prototype.usingSession = function(id) {
70120
this.sessionId_ = id;
@@ -82,7 +132,22 @@ webdriver.Builder.prototype.getSession = function() {
82132

83133

84134
/**
85-
* @override
135+
* Sets the desired capabilities when requesting a new session. This will
136+
* overwrite any previously set desired capabilities.
137+
* @param {!(Object|webdriver.Capabilities)} capabilities The desired
138+
* capabilities for a new session.
139+
* @return {!webdriver.Builder} This Builder instance for chain calling.
140+
*/
141+
webdriver.Builder.prototype.withCapabilities = function(capabilities) {
142+
this.capabilities_ = new webdriver.Capabilities(capabilities);
143+
return this;
144+
};
145+
146+
147+
/**
148+
* Builds a new {@link webdriver.WebDriver} instance using this builder's
149+
* current configuration.
150+
* @return {!webdriver.WebDriver} A new WebDriver client.
86151
*/
87152
webdriver.Builder.prototype.build = function() {
88153
if (goog.userAgent.GECKO && document.readyState != 'complete') {
@@ -93,10 +158,9 @@ webdriver.Builder.prototype.build = function() {
93158

94159
if (webdriver.FirefoxDomExecutor.isAvailable()) {
95160
executor = new webdriver.FirefoxDomExecutor();
96-
return webdriver.WebDriver.createSession(executor, this.getCapabilities());
161+
return webdriver.WebDriver.createSession(executor, this.capabilities_);
97162
} else {
98-
var url = this.getServerUrl() ||
99-
webdriver.AbstractBuilder.DEFAULT_SERVER_URL;
163+
var url = this.serverUrl_;
100164
var client;
101165
if (url[0] == '/') {
102166
var origin = window.location.origin ||
@@ -107,8 +171,8 @@ webdriver.Builder.prototype.build = function() {
107171
}
108172
executor = new webdriver.http.Executor(client);
109173

110-
if (this.getSession()) {
111-
return webdriver.WebDriver.attachToSession(executor, this.getSession());
174+
if (this.sessionId_) {
175+
return webdriver.WebDriver.attachToSession(executor, this.sessionId_);
112176
} else {
113177
throw new Error('Unable to create a new client for this browser. The ' +
114178
'WebDriver session ID has not been defined.');

javascript/webdriver/exports/exports.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ goog.require('webdriver.http.Executor');
3838
goog.require('webdriver.http.Request');
3939
goog.require('webdriver.http.Response');
4040
goog.require('webdriver.http.XhrClient');
41-
goog.require('webdriver.process');
4241
goog.require('webdriver.promise');
4342
goog.require('webdriver.stacktrace');
4443
goog.require('webdriver.testing.assert');
@@ -71,11 +70,6 @@ exports.http.XhrClient = webdriver.http.XhrClient;
7170

7271
exports.response = bot.response;
7372

74-
exports.process = {
75-
getEnv: webdriver.process.getEnv,
76-
setEnv: webdriver.process.setEnv
77-
};
78-
7973
exports.promise = webdriver.promise;
8074
exports.stacktrace = webdriver.stacktrace;
8175

0 commit comments

Comments
 (0)