Index: chrome/test/webdriver/commands/create_session.cc |
diff --git a/chrome/test/webdriver/commands/create_session.cc b/chrome/test/webdriver/commands/create_session.cc |
index 9e73e3060db61ee88502d03b8b2f0cb53f7b9e56..60b7809e0541436085df9d7abe49f5890bbc5035 100644 |
--- a/chrome/test/webdriver/commands/create_session.cc |
+++ b/chrome/test/webdriver/commands/create_session.cc |
@@ -25,6 +25,8 @@ |
#include "chrome/test/webdriver/session_manager.h" |
#include "chrome/test/webdriver/webdriver_error.h" |
+namespace webdriver { |
+ |
namespace { |
bool WriteBase64DataToFile(const FilePath& filename, |
@@ -42,9 +44,18 @@ bool WriteBase64DataToFile(const FilePath& filename, |
return true; |
} |
-} // namespace |
+Error* GetBooleanCapability( |
+ const base::DictionaryValue* dict, const std::string& key, bool* option) { |
+ Value* value = NULL; |
+ if (dict->GetWithoutPathExpansion(key, &value)) { |
+ if (!value->GetAsBoolean(option)) { |
+ return new Error(kUnknownError, key + " must be a boolean"); |
+ } |
+ } |
+ return NULL; |
+} |
-namespace webdriver { |
+} // namespace |
CreateSession::CreateSession(const std::vector<std::string>& path_segments, |
const DictionaryValue* const parameters) |
@@ -175,11 +186,24 @@ void CreateSession::ExecutePost(Response* const response) { |
return; |
} |
+ Session::Options options; |
+ Error* error = NULL; |
+ error = GetBooleanCapability(capabilities, "chrome.nativeEvents", |
+ &options.use_native_events); |
+ if (!error) { |
+ error = GetBooleanCapability(capabilities, "chrome.loadAsync", |
+ &options.load_async); |
+ } |
+ if (error) { |
+ response->SetError(error); |
+ return; |
+ } |
+ |
// Session manages its own liftime, so do not call delete. |
- Session* session = new Session(); |
- Error* error = session->Init(browser_exe, |
- temp_user_data_dir, |
- command_line_options); |
+ Session* session = new Session(options); |
+ error = session->Init(browser_exe, |
+ temp_user_data_dir, |
+ command_line_options); |
if (error) { |
response->SetError(error); |
return; |
@@ -194,20 +218,6 @@ void CreateSession::ExecutePost(Response* const response) { |
} |
} |
- bool native_events_required = false; |
- Value* native_events_value = NULL; |
- if (capabilities->GetWithoutPathExpansion( |
- "chrome.nativeEvents", &native_events_value)) { |
- if (native_events_value->GetAsBoolean(&native_events_required)) { |
- session->set_use_native_events(native_events_required); |
- } |
- } |
- bool screenshot_on_error = false; |
- if (capabilities->GetBoolean( |
- "takeScreenshotOnError", &screenshot_on_error)) { |
- session->set_screenshot_on_error(screenshot_on_error); |
- } |
- |
LOG(INFO) << "Created session " << session->id(); |
// Redirect to a relative URI. Although prohibited by the HTTP standard, |
// this is what the IEDriver does. Finding the actual IP address is |