@@ -64,6 +64,10 @@ webdriver.Builder = function(opt_window) {
64
64
this . sessionId_ =
65
65
/** @type {string } */ ( data . get ( webdriver . Builder . SESSION_ID_PARAM ) ) ;
66
66
67
+ /** @private {boolean} */
68
+ this . useBrowserCors_ =
69
+ /** @type {boolean } */ ( data . containsKey ( webdriver . Builder . USE_BROWSER_CORS ) ) ;
70
+
67
71
/** @private {!webdriver.Capabilities} */
68
72
this . capabilities_ = new webdriver . Capabilities ( ) ;
69
73
} ;
@@ -93,6 +97,24 @@ webdriver.Builder.SERVER_URL_PARAM = 'wdurl';
93
97
webdriver . Builder . DEFAULT_SERVER_URL = 'http://localhost:4444/wd/hub' ;
94
98
95
99
100
+ /**
101
+ * Query parameter that defines whether browser CORS support should be used,
102
+ * if available.
103
+ * @type {string }
104
+ * @const
105
+ */
106
+ webdriver . Builder . USE_BROWSER_CORS = 'wdcors' ;
107
+
108
+
109
+ /**
110
+ * Configures the WebDriver to use browser's CORS, if available.
111
+ * @return {!webdriver.Builder } This Builder instance for chain calling.
112
+ */
113
+ webdriver . Builder . prototype . useBrowserCors = function ( ) {
114
+ this . useBrowserCors_ = true ;
115
+ return this ;
116
+ } ;
117
+
96
118
/**
97
119
* Configures which WebDriver server should be used for new sessions.
98
120
* @param {string } url URL of the server to use.
@@ -165,7 +187,9 @@ webdriver.Builder.prototype.build = function() {
165
187
} else {
166
188
var url = this . serverUrl_ ;
167
189
var client ;
168
- if ( url [ 0 ] == '/' ) {
190
+ if ( this . useBrowserCors_ && webdriver . http . CorsClient . isAvailable ( ) ) {
191
+ client = new webdriver . http . XhrClient ( url ) ;
192
+ } else if ( url [ 0 ] == '/' ) {
169
193
var origin = window . location . origin ||
170
194
( window . location . protocol + '//' + window . location . host ) ;
171
195
client = new webdriver . http . XhrClient ( origin + url ) ;
0 commit comments