Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5455)

Unified Diff: chrome/test/webdriver/webdriver_session.cc

Issue 8890026: Allow chromedriver to set local state preferences. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ... Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/test/webdriver/webdriver_session.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/webdriver/webdriver_session.cc
diff --git a/chrome/test/webdriver/webdriver_session.cc b/chrome/test/webdriver/webdriver_session.cc
index 54427511402702156b568b5972db7762098f70c6..e1a25c6cb1db0a0c87db023534370dc9da976657 100644
--- a/chrome/test/webdriver/webdriver_session.cc
+++ b/chrome/test/webdriver/webdriver_session.cc
@@ -52,7 +52,8 @@ FrameId::FrameId(const WebViewId& view_id, const FramePath& frame_path)
Session::Options::Options()
: use_native_events(false),
- load_async(false) {
+ load_async(false),
+ no_website_testing_defaults(false) {
}
Session::Options::~Options() {
@@ -80,11 +81,15 @@ Error* Session::Init(const Automation::BrowserOptions& options) {
}
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- this,
+ RunSessionTask(base::Bind(
&Session::InitOnSessionThread,
+ base::Unretained(this),
options,
&error));
+
+ if (!error)
+ error = PostBrowserStartInit();
+
if (error)
Terminate();
return error;
@@ -118,9 +123,9 @@ Error* Session::AfterExecuteCommand() {
}
void Session::Terminate() {
- RunSessionTask(NewRunnableMethod(
- this,
- &Session::TerminateOnSessionThread));
+ RunSessionTask(base::Bind(
+ &Session::TerminateOnSessionThread,
+ base::Unretained(this)));
delete this;
}
@@ -258,9 +263,9 @@ Error* Session::SendKeys(const ElementId& element, const string16& keys) {
if (error)
return error;
- RunSessionTask(NewRunnableMethod(
- this,
+ RunSessionTask(base::Bind(
&Session::SendKeysOnSessionThread,
+ base::Unretained(this),
keys,
&error));
return error;
@@ -270,9 +275,9 @@ Error* Session::DragAndDropFilePaths(
const Point& location,
const std::vector<FilePath::StringType>& paths) {
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::DragAndDropFilePaths,
+ base::Unretained(automation_.get()),
current_target_.view_id,
location,
paths,
@@ -287,16 +292,16 @@ Error* Session::NavigateToURL(const std::string& url) {
}
Error* error = NULL;
if (options_.load_async) {
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::NavigateToURLAsync,
+ base::Unretained(automation_.get()),
current_target_.view_id,
url,
&error));
} else {
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::NavigateToURL,
+ base::Unretained(automation_.get()),
current_target_.view_id,
url,
&error));
@@ -310,9 +315,9 @@ Error* Session::GoForward() {
"The current target does not support navigation");
}
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::GoForward,
+ base::Unretained(automation_.get()),
current_target_.view_id,
&error));
return error;
@@ -324,9 +329,9 @@ Error* Session::GoBack() {
"The current target does not support navigation");
}
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::GoBack,
+ base::Unretained(automation_.get()),
current_target_.view_id,
&error));
return error;
@@ -338,9 +343,9 @@ Error* Session::Reload() {
"The current target does not support navigation");
}
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::Reload,
+ base::Unretained(automation_.get()),
current_target_.view_id,
&error));
return error;
@@ -372,9 +377,9 @@ Error* Session::GetTitle(std::string* tab_title) {
Error* Session::MouseMoveAndClick(const Point& location,
automation::MouseButton button) {
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::MouseClick,
+ base::Unretained(automation_.get()),
current_target_.view_id,
location,
button,
@@ -386,9 +391,9 @@ Error* Session::MouseMoveAndClick(const Point& location,
Error* Session::MouseMove(const Point& location) {
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::MouseMove,
+ base::Unretained(automation_.get()),
current_target_.view_id,
location,
&error));
@@ -400,9 +405,9 @@ Error* Session::MouseMove(const Point& location) {
Error* Session::MouseDrag(const Point& start,
const Point& end) {
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::MouseDrag,
+ base::Unretained(automation_.get()),
current_target_.view_id,
start,
end,
@@ -418,9 +423,9 @@ Error* Session::MouseClick(automation::MouseButton button) {
Error* Session::MouseButtonDown() {
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::MouseButtonDown,
+ base::Unretained(automation_.get()),
current_target_.view_id,
mouse_position_,
&error));
@@ -429,9 +434,9 @@ Error* Session::MouseButtonDown() {
Error* Session::MouseButtonUp() {
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::MouseButtonUp,
+ base::Unretained(automation_.get()),
current_target_.view_id,
mouse_position_,
&error));
@@ -440,9 +445,9 @@ Error* Session::MouseButtonUp() {
Error* Session::MouseDoubleClick() {
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::MouseDoubleClick,
+ base::Unretained(automation_.get()),
current_target_.view_id,
mouse_position_,
&error));
@@ -451,9 +456,9 @@ Error* Session::MouseDoubleClick() {
Error* Session::GetCookies(const std::string& url, ListValue** cookies) {
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::GetCookies,
+ base::Unretained(automation_.get()),
url,
cookies,
&error));
@@ -463,9 +468,9 @@ Error* Session::GetCookies(const std::string& url, ListValue** cookies) {
Error* Session::DeleteCookie(const std::string& url,
const std::string& cookie_name) {
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::DeleteCookie,
+ base::Unretained(automation_.get()),
url,
cookie_name,
&error));
@@ -475,9 +480,9 @@ Error* Session::DeleteCookie(const std::string& url,
Error* Session::SetCookie(const std::string& url,
DictionaryValue* cookie_dict) {
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::SetCookie,
+ base::Unretained(automation_.get()),
url,
cookie_dict,
&error));
@@ -486,9 +491,9 @@ Error* Session::SetCookie(const std::string& url,
Error* Session::GetViews(std::vector<WebViewInfo>* views) {
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::GetViews,
+ base::Unretained(automation_.get()),
views,
&error));
return error;
@@ -501,9 +506,9 @@ Error* Session::SwitchToView(const std::string& id_or_name) {
WebViewId new_view;
StringToWebViewId(id_or_name, &new_view);
if (new_view.IsValid()) {
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::DoesViewExist,
+ base::Unretained(automation_.get()),
new_view,
&does_exist,
&error));
@@ -644,9 +649,9 @@ Error* Session::SwitchToTopFrameIfCurrentFrameInvalid() {
Error* Session::CloseWindow() {
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::CloseView,
+ base::Unretained(automation_.get()),
current_target_.view_id,
&error));
@@ -668,9 +673,9 @@ Error* Session::CloseWindow() {
Error* Session::GetAlertMessage(std::string* text) {
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::GetAppModalDialogMessage,
+ base::Unretained(automation_.get()),
text,
&error));
return error;
@@ -690,15 +695,15 @@ Error* Session::SetAlertPromptText(const std::string& alert_prompt_text) {
Error* Session::AcceptOrDismissAlert(bool accept) {
Error* error = NULL;
if (accept && has_alert_prompt_text_) {
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::AcceptPromptAppModalDialog,
+ base::Unretained(automation_.get()),
alert_prompt_text_,
&error));
} else {
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::AcceptOrDismissAppModalDialog,
+ base::Unretained(automation_.get()),
accept,
&error));
}
@@ -708,9 +713,9 @@ Error* Session::AcceptOrDismissAlert(bool accept) {
std::string Session::GetBrowserVersion() {
std::string version;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::GetBrowserVersion,
+ base::Unretained(automation_.get()),
&version));
return version;
}
@@ -1006,18 +1011,18 @@ Error* Session::WaitForAllViewsToStopLoading() {
if (!automation_.get())
return NULL;
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::WaitForAllViewsToStopLoading,
+ base::Unretained(automation_.get()),
&error));
return error;
}
Error* Session::InstallExtensionDeprecated(const FilePath& path) {
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::InstallExtensionDeprecated,
+ base::Unretained(automation_.get()),
path,
&error));
return error;
@@ -1099,6 +1104,29 @@ Error* Session::UninstallExtension(const std::string& extension_id) {
return error;
}
+Error* Session::SetPreference(
+ const std::string& pref,
+ bool is_user_pref,
+ base::Value* value) {
+ Error* error = NULL;
+ if (is_user_pref) {
+ RunSessionTask(base::Bind(
+ &Automation::SetPreference,
+ base::Unretained(automation_.get()),
+ pref,
+ value,
+ &error));
+ } else {
+ RunSessionTask(base::Bind(
+ &Automation::SetLocalStatePreference,
+ base::Unretained(automation_.get()),
+ pref,
+ value,
+ &error));
+ }
+ return error;
+}
+
const std::string& Session::id() const {
return id_;
}
@@ -1133,9 +1161,9 @@ const Session::Options& Session::options() const {
void Session::RunSessionTask(Task* task) {
base::WaitableEvent done_event(false, false);
- thread_.message_loop_proxy()->PostTask(FROM_HERE, NewRunnableMethod(
- this,
+ thread_.message_loop_proxy()->PostTask(FROM_HERE, base::Bind(
&Session::RunSessionTaskOnSessionThread,
+ base::Unretained(this),
task,
&done_event));
done_event.Wait();
@@ -1193,9 +1221,9 @@ Error* Session::ExecuteScriptAndParseValue(const FrameId& frame_id,
Value** script_result) {
std::string response_json;
Error* error = NULL;
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::ExecuteScript,
+ base::Unretained(automation_.get()),
frame_id.view_id,
frame_id.frame_path,
script,
@@ -1517,9 +1545,9 @@ Error* Session::GetScreenShot(std::string* png) {
}
FilePath path = screenshots_dir.path().AppendASCII("screen");
- RunSessionTask(NewRunnableMethod(
- automation_.get(),
+ RunSessionTask(base::Bind(
&Automation::CaptureEntirePageAsPNG,
+ base::Unretained(automation_.get()),
current_target_.view_id,
path,
&error));
@@ -1548,4 +1576,40 @@ Error* Session::GetAppCacheStatus(int* status) {
CreateDirectValueParser(status));
}
+Error* Session::PostBrowserStartInit() {
+ Error* error = NULL;
+ if (!options_.no_website_testing_defaults)
+ error = InitForWebsiteTesting();
+ if (error)
+ return error;
+
+ // Install extensions.
+ for (size_t i = 0; i < options_.extensions.size(); ++i) {
+ error = InstallExtensionDeprecated(options_.extensions[i]);
+ if (error)
+ return error;
+ }
+ return NULL;
+}
+
+Error* Session::InitForWebsiteTesting() {
+ // Disable checking for SSL certificate revocation.
+ Error* error = SetPreference(
+ "ssl.rev_checking.enabled",
+ false /* is_user_pref */,
+ Value::CreateBooleanValue(false));
+ if (error)
+ return error;
+
+ // Allow certain content by default.
+ const int kAllowContent = 1;
+ DictionaryValue* default_content_settings = new DictionaryValue();
+ default_content_settings->SetInteger("geolocation", kAllowContent);
+ default_content_settings->SetInteger("notifications", kAllowContent);
+ return SetPreference(
+ "profile.default_content_settings",
+ true /* is_user_pref */,
+ default_content_settings);
+}
+
} // namespace webdriver
« no previous file with comments | « chrome/test/webdriver/webdriver_session.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698