Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/automation/testing_automation_provider.h" | 5 #include "chrome/browser/automation/testing_automation_provider.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 102 #include "chrome/browser/ui/browser_window.h" | 102 #include "chrome/browser/ui/browser_window.h" |
| 103 #include "chrome/browser/ui/find_bar/find_bar.h" | 103 #include "chrome/browser/ui/find_bar/find_bar.h" |
| 104 #include "chrome/browser/ui/fullscreen_controller.h" | 104 #include "chrome/browser/ui/fullscreen_controller.h" |
| 105 #include "chrome/browser/ui/fullscreen_exit_bubble_type.h" | 105 #include "chrome/browser/ui/fullscreen_exit_bubble_type.h" |
| 106 #include "chrome/browser/ui/login/login_prompt.h" | 106 #include "chrome/browser/ui/login/login_prompt.h" |
| 107 #include "chrome/browser/ui/media_stream_infobar_delegate.h" | 107 #include "chrome/browser/ui/media_stream_infobar_delegate.h" |
| 108 #include "chrome/browser/ui/omnibox/location_bar.h" | 108 #include "chrome/browser/ui/omnibox/location_bar.h" |
| 109 #include "chrome/browser/ui/omnibox/omnibox_view.h" | 109 #include "chrome/browser/ui/omnibox/omnibox_view.h" |
| 110 #include "chrome/browser/ui/search_engines/keyword_editor_controller.h" | 110 #include "chrome/browser/ui/search_engines/keyword_editor_controller.h" |
| 111 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 111 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| 112 #include "chrome/common/automation_constants.h" | |
| 113 #include "chrome/common/automation_events.h" | |
| 112 #include "chrome/common/automation_id.h" | 114 #include "chrome/common/automation_id.h" |
| 113 #include "chrome/common/automation_messages.h" | 115 #include "chrome/common/automation_messages.h" |
| 114 #include "chrome/common/chrome_constants.h" | 116 #include "chrome/common/chrome_constants.h" |
| 115 #include "chrome/common/chrome_notification_types.h" | 117 #include "chrome/common/chrome_notification_types.h" |
| 116 #include "chrome/common/chrome_paths.h" | 118 #include "chrome/common/chrome_paths.h" |
| 117 #include "chrome/common/chrome_switches.h" | 119 #include "chrome/common/chrome_switches.h" |
| 118 #include "chrome/common/chrome_view_type.h" | 120 #include "chrome/common/chrome_view_type.h" |
| 119 #include "chrome/common/extensions/extension.h" | 121 #include "chrome/common/extensions/extension.h" |
| 120 #include "chrome/common/extensions/extension_action.h" | 122 #include "chrome/common/extensions/extension_action.h" |
| 121 #include "chrome/common/extensions/url_pattern.h" | 123 #include "chrome/common/extensions/url_pattern.h" |
| (...skipping 5781 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5903 bool meta = !!(modifiers & automation::kMetaKeyMask); | 5905 bool meta = !!(modifiers & automation::kMetaKeyMask); |
| 5904 if (!ui_controls::SendKeyPressNotifyWhenDone( | 5906 if (!ui_controls::SendKeyPressNotifyWhenDone( |
| 5905 window, static_cast<ui::KeyboardCode>(keycode), | 5907 window, static_cast<ui::KeyboardCode>(keycode), |
| 5906 control, shift, alt, meta, | 5908 control, shift, alt, meta, |
| 5907 base::Bind(SendSuccessReply, AsWeakPtr(), reply_message))) { | 5909 base::Bind(SendSuccessReply, AsWeakPtr(), reply_message))) { |
| 5908 AutomationJSONReply(this, reply_message) | 5910 AutomationJSONReply(this, reply_message) |
| 5909 .SendError("Could not send the native key event"); | 5911 .SendError("Could not send the native key event"); |
| 5910 } | 5912 } |
| 5911 } | 5913 } |
| 5912 | 5914 |
| 5915 namespace { | |
| 5916 | |
| 5917 bool ReadScriptEvaluationRequestList( | |
| 5918 base::Value* value, | |
| 5919 std::vector<ScriptEvaluationRequest>* list, | |
| 5920 std::string* error_msg) { | |
| 5921 ListValue* request_list; | |
| 5922 if (!value->GetAsList(&request_list)) { | |
| 5923 return false; | |
| 5924 } | |
|
dennis_jeffrey
2012/05/08 19:18:49
no need for curly braces
kkania
2012/05/09 18:19:59
Done.
| |
| 5925 for (size_t i = 0; i < request_list->GetSize(); ++i) { | |
| 5926 DictionaryValue* request_dict; | |
| 5927 if (!request_list->GetDictionary(i, &request_dict)) { | |
| 5928 *error_msg = "Script evaluation request was not a dictionary"; | |
| 5929 return false; | |
| 5930 } | |
| 5931 ScriptEvaluationRequest request; | |
| 5932 if (!request_dict->GetString("script", &request.script) || | |
| 5933 !request_dict->GetString("frame_xpath", &request.frame_xpath)) { | |
| 5934 *error_msg = "Script evaluation request was invalid"; | |
| 5935 return false; | |
| 5936 } | |
| 5937 list->push_back(request); | |
| 5938 } | |
| 5939 return true; | |
| 5940 } | |
| 5941 | |
| 5942 } // namespace | |
| 5943 | |
| 5913 void TestingAutomationProvider::ProcessWebMouseEvent( | 5944 void TestingAutomationProvider::ProcessWebMouseEvent( |
| 5914 DictionaryValue* args, | 5945 DictionaryValue* args, |
| 5915 IPC::Message* reply_message) { | 5946 IPC::Message* reply_message) { |
| 5916 if (SendErrorIfModalDialogActive(this, reply_message)) | 5947 if (SendErrorIfModalDialogActive(this, reply_message)) |
| 5917 return; | 5948 return; |
| 5918 | 5949 |
| 5919 RenderViewHost* view; | 5950 content::WebContents* web_contents; |
| 5920 std::string error; | 5951 std::string error; |
| 5921 if (!GetRenderViewFromJSONArgs(args, profile(), &view, &error)) { | 5952 if (!GetTabFromJSONArgs(args, &web_contents, &error)) { |
| 5922 AutomationJSONReply(this, reply_message).SendError(error); | 5953 AutomationJSONReply(this, reply_message).SendError(error); |
| 5923 return; | 5954 return; |
| 5924 } | 5955 } |
| 5925 | 5956 |
| 5926 int type; | 5957 int type; |
| 5927 int button; | 5958 int button; |
| 5928 int modifiers; | 5959 int modifiers; |
| 5929 WebKit::WebMouseEvent event; | 5960 WebKit::WebMouseEvent event; |
| 5930 if (!args->GetInteger("type", &type) || | 5961 if (!args->GetInteger("type", &type) || |
| 5931 !args->GetInteger("button", &button) || | 5962 !args->GetInteger("button", &button) || |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 5970 event.modifiers = 0; | 6001 event.modifiers = 0; |
| 5971 if (modifiers & automation::kShiftKeyMask) | 6002 if (modifiers & automation::kShiftKeyMask) |
| 5972 event.modifiers |= WebKit::WebInputEvent::ShiftKey; | 6003 event.modifiers |= WebKit::WebInputEvent::ShiftKey; |
| 5973 if (modifiers & automation::kControlKeyMask) | 6004 if (modifiers & automation::kControlKeyMask) |
| 5974 event.modifiers |= WebKit::WebInputEvent::ControlKey; | 6005 event.modifiers |= WebKit::WebInputEvent::ControlKey; |
| 5975 if (modifiers & automation::kAltKeyMask) | 6006 if (modifiers & automation::kAltKeyMask) |
| 5976 event.modifiers |= WebKit::WebInputEvent::AltKey; | 6007 event.modifiers |= WebKit::WebInputEvent::AltKey; |
| 5977 if (modifiers & automation::kMetaKeyMask) | 6008 if (modifiers & automation::kMetaKeyMask) |
| 5978 event.modifiers |= WebKit::WebInputEvent::MetaKey; | 6009 event.modifiers |= WebKit::WebInputEvent::MetaKey; |
| 5979 | 6010 |
| 5980 view->ForwardMouseEvent(event); | 6011 TabContentsWrapper* tab_contents = |
| 5981 new InputEventAckNotificationObserver(this, reply_message, event.type, | 6012 TabContentsWrapper::GetCurrentWrapperForContents(web_contents); |
| 5982 1); | 6013 if (!tab_contents) { |
|
dennis_jeffrey
2012/05/08 19:18:49
Could you add a comment to explain the difference
kkania
2012/05/09 18:19:59
Got rid of this hack. I didn't actually need it an
| |
| 6014 web_contents->GetRenderViewHost()->ForwardMouseEvent(event); | |
| 6015 new InputEventAckNotificationObserver(this, reply_message, event.type, 1); | |
| 6016 return; | |
| 6017 } | |
| 6018 | |
| 6019 AutomationMouseEvent automation_event; | |
| 6020 automation_event.mouse_event = event; | |
| 6021 Value* location_script_chain_value; | |
| 6022 if (args->Get("location_script_chain", &location_script_chain_value)) { | |
| 6023 if (!ReadScriptEvaluationRequestList( | |
| 6024 location_script_chain_value, | |
| 6025 &automation_event.location_script_chain, | |
| 6026 &error)) { | |
| 6027 AutomationJSONReply(this, reply_message).SendError(error); | |
| 6028 return; | |
| 6029 } | |
| 6030 } | |
| 6031 tab_contents->automation_tab_helper()->ProcessMouseEvent(automation_event); | |
| 6032 new MouseEventProcessedObserver(this, reply_message, tab_contents); | |
| 5983 } | 6033 } |
| 5984 | 6034 |
| 5985 namespace { | 6035 namespace { |
| 5986 | 6036 |
| 5987 // Gets the active JavaScript modal dialog, or NULL if none. | 6037 // Gets the active JavaScript modal dialog, or NULL if none. |
| 5988 JavaScriptAppModalDialog* GetActiveJavaScriptModalDialog( | 6038 JavaScriptAppModalDialog* GetActiveJavaScriptModalDialog( |
| 5989 ErrorCode* error_code) { | 6039 ErrorCode* error_code) { |
| 5990 AppModalDialogQueue* dialog_queue = AppModalDialogQueue::GetInstance(); | 6040 AppModalDialogQueue* dialog_queue = AppModalDialogQueue::GetInstance(); |
| 5991 if (!dialog_queue->HasActiveDialog() || | 6041 if (!dialog_queue->HasActiveDialog() || |
| 5992 !dialog_queue->active_dialog()->IsJavaScriptModalDialog()) { | 6042 !dialog_queue->active_dialog()->IsJavaScriptModalDialog()) { |
| (...skipping 1134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 7127 *browser_handle = browser_tracker_->Add(browser); | 7177 *browser_handle = browser_tracker_->Add(browser); |
| 7128 *success = true; | 7178 *success = true; |
| 7129 } | 7179 } |
| 7130 } | 7180 } |
| 7131 } | 7181 } |
| 7132 | 7182 |
| 7133 void TestingAutomationProvider::OnRemoveProvider() { | 7183 void TestingAutomationProvider::OnRemoveProvider() { |
| 7134 if (g_browser_process) | 7184 if (g_browser_process) |
| 7135 g_browser_process->GetAutomationProviderList()->RemoveProvider(this); | 7185 g_browser_process->GetAutomationProviderList()->RemoveProvider(this); |
| 7136 } | 7186 } |
| OLD | NEW |