| Index: chrome/browser/automation/testing_automation_provider.cc
|
| diff --git a/chrome/browser/automation/testing_automation_provider.cc b/chrome/browser/automation/testing_automation_provider.cc
|
| index afc251a4d660590022094a732d548c3ad5f630a6..2ca2a24de885e03406a8ec40180385ec3c0a56eb 100644
|
| --- a/chrome/browser/automation/testing_automation_provider.cc
|
| +++ b/chrome/browser/automation/testing_automation_provider.cc
|
| @@ -2316,6 +2316,16 @@ void TestingAutomationProvider::SendJSONRequest(int handle,
|
| handler_map["SetPrefs"] = &TestingAutomationProvider::SetPrefs;
|
| handler_map["ExecuteJavascript"] =
|
| &TestingAutomationProvider::ExecuteJavascriptJSON;
|
| + handler_map["ObserveRaisedEvents"] =
|
| + &TestingAutomationProvider::ObserveRaisedEvents;
|
| + handler_map["GetEvent"] =
|
| + &TestingAutomationProvider::GetEvent;
|
| + handler_map["RemoveEventObserver"] =
|
| + &TestingAutomationProvider::RemoveEventObserver;
|
| + handler_map["ClearEvents"] =
|
| + &TestingAutomationProvider::ClearEvents;
|
| + handler_map["ClearEventObservers"] =
|
| + &TestingAutomationProvider::ClearEventObservers;
|
| handler_map["ExecuteJavascriptInRenderView"] =
|
| &TestingAutomationProvider::ExecuteJavascriptInRenderView;
|
| handler_map["GoForward"] =
|
| @@ -6443,6 +6453,91 @@ void TestingAutomationProvider::ExecuteJavascriptInRenderView(
|
| rvh);
|
| }
|
|
|
| +void TestingAutomationProvider::ObserveRaisedEvents(
|
| + DictionaryValue* args,
|
| + IPC::Message* reply_message) {
|
| + if (SendErrorIfModalDialogActive(this, reply_message))
|
| + return;
|
| +
|
| + std::string event_name;
|
| + if (!args->GetString("event_name", &event_name)) {
|
| + AutomationJSONReply(this, reply_message)
|
| + .SendError("'event_name' missing or invalid");
|
| + return;
|
| + }
|
| + std::string error;
|
| + RenderViewHost* render_view;
|
| + if (!GetRenderViewFromJSONArgs(args, profile(), &render_view, &error)) {
|
| + AutomationJSONReply(this, reply_message).SendError(
|
| + Error(automation::kInvalidId, error));
|
| + return;
|
| + }
|
| + string16 frame_xpath;
|
| + if (!args->GetString("frame_xpath", &frame_xpath)) {
|
| + AutomationJSONReply(this, reply_message)
|
| + .SendError("'frame_xpath' missing or invalid");
|
| + return;
|
| + }
|
| + std::string set_automation_id;
|
| + base::SStringPrintf(&set_automation_id,
|
| + "window.domAutomationController.setAutomationId(%d);",
|
| + reply_message->routing_id());
|
| + render_view->ExecuteJavascriptInWebFrame(
|
| + frame_xpath, UTF8ToUTF16(set_automation_id));
|
| +
|
| + RaisedEventObserver* jsobserver =
|
| + new RaisedEventObserver(automation_event_queue_, event_name);
|
| + scoped_ptr<DictionaryValue> return_value(new DictionaryValue);
|
| + return_value->SetInteger("observer_id", jsobserver->GetId());
|
| + AutomationJSONReply(this, reply_message).SendSuccess(return_value.get());
|
| +}
|
| +
|
| +void TestingAutomationProvider::RemoveEventObserver(
|
| + DictionaryValue* args,
|
| + IPC::Message* reply_message) {
|
| + int observer_id;
|
| + if (!args->GetInteger("observer_id", &observer_id)) {
|
| + AutomationJSONReply(this, reply_message)
|
| + .SendError("'observer_id' missing or invalid");
|
| + return;
|
| + }
|
| + automation_event_queue_.RemoveObserver(observer_id);
|
| + AutomationJSONReply(this, reply_message).SendSuccess(NULL);
|
| +}
|
| +
|
| +void TestingAutomationProvider::ClearEvents(
|
| + DictionaryValue* args,
|
| + IPC::Message* reply_message) {
|
| + automation_event_queue_.Clear();
|
| + AutomationJSONReply(this, reply_message).SendSuccess(NULL);
|
| +}
|
| +
|
| +void TestingAutomationProvider::ClearEventObservers(
|
| + DictionaryValue* args,
|
| + IPC::Message* reply_message) {
|
| + automation_event_queue_.ClearObservers();
|
| + AutomationJSONReply(this, reply_message).SendSuccess(NULL);
|
| +}
|
| +
|
| +void TestingAutomationProvider::GetEvent(
|
| + DictionaryValue* args,
|
| + IPC::Message* reply_message) {
|
| + int observer_id;
|
| + bool blocking;
|
| + if (!args->GetInteger("observer_id", &observer_id)) {
|
| + AutomationJSONReply(this, reply_message)
|
| + .SendError("'observer_id' missing or invalid");
|
| + return;
|
| + }
|
| + if (!args->GetBoolean("blocking", &blocking)) {
|
| + AutomationJSONReply(this, reply_message)
|
| + .SendError("'blocking' missing or invalid");
|
| + return;
|
| + }
|
| +
|
| + automation_event_queue_.GetEvent(this, reply_message, observer_id, blocking);
|
| +}
|
| +
|
| void TestingAutomationProvider::GoForward(
|
| DictionaryValue* args,
|
| IPC::Message* reply_message) {
|
|
|