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

Side by Side Diff: chrome/browser/automation/testing_automation_provider.cc

Issue 8790003: Allow the automation provider to accept an ID for performing render-view (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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/automation/testing_automation_provider.h ('k') | chrome/chrome_common.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 #include "chrome/browser/ui/bookmarks/bookmark_bar.h" 94 #include "chrome/browser/ui/bookmarks/bookmark_bar.h"
95 #include "chrome/browser/ui/browser_init.h" 95 #include "chrome/browser/ui/browser_init.h"
96 #include "chrome/browser/ui/browser_window.h" 96 #include "chrome/browser/ui/browser_window.h"
97 #include "chrome/browser/ui/constrained_window_tab_helper.h" 97 #include "chrome/browser/ui/constrained_window_tab_helper.h"
98 #include "chrome/browser/ui/find_bar/find_bar.h" 98 #include "chrome/browser/ui/find_bar/find_bar.h"
99 #include "chrome/browser/ui/login/login_prompt.h" 99 #include "chrome/browser/ui/login/login_prompt.h"
100 #include "chrome/browser/ui/omnibox/location_bar.h" 100 #include "chrome/browser/ui/omnibox/location_bar.h"
101 #include "chrome/browser/ui/omnibox/omnibox_view.h" 101 #include "chrome/browser/ui/omnibox/omnibox_view.h"
102 #include "chrome/browser/ui/search_engines/keyword_editor_controller.h" 102 #include "chrome/browser/ui/search_engines/keyword_editor_controller.h"
103 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 103 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
104 #include "chrome/common/automation_id.h"
104 #include "chrome/common/automation_messages.h" 105 #include "chrome/common/automation_messages.h"
105 #include "chrome/common/chrome_constants.h" 106 #include "chrome/common/chrome_constants.h"
106 #include "chrome/common/chrome_notification_types.h" 107 #include "chrome/common/chrome_notification_types.h"
107 #include "chrome/common/chrome_paths.h" 108 #include "chrome/common/chrome_paths.h"
108 #include "chrome/common/chrome_switches.h" 109 #include "chrome/common/chrome_switches.h"
109 #include "chrome/common/chrome_view_type.h" 110 #include "chrome/common/chrome_view_type.h"
110 #include "chrome/common/extensions/extension.h" 111 #include "chrome/common/extensions/extension.h"
111 #include "chrome/common/extensions/extension_action.h" 112 #include "chrome/common/extensions/extension_action.h"
112 #include "chrome/common/extensions/url_pattern.h" 113 #include "chrome/common/extensions/url_pattern.h"
113 #include "chrome/common/extensions/url_pattern_set.h" 114 #include "chrome/common/extensions/url_pattern_set.h"
(...skipping 811 matching lines...) Expand 10 before | Expand all | Expand 10 after
925 ui::EF_ALT_DOWN), 926 ui::EF_ALT_DOWN),
926 ((flags & ui::EF_COMMAND_DOWN) == 927 ((flags & ui::EF_COMMAND_DOWN) ==
927 ui::EF_COMMAND_DOWN)); 928 ui::EF_COMMAND_DOWN));
928 } 929 }
929 930
930 void TestingAutomationProvider::WebkitMouseClick(DictionaryValue* args, 931 void TestingAutomationProvider::WebkitMouseClick(DictionaryValue* args,
931 IPC::Message* reply_message) { 932 IPC::Message* reply_message) {
932 if (SendErrorIfModalDialogActive(this, reply_message)) 933 if (SendErrorIfModalDialogActive(this, reply_message))
933 return; 934 return;
934 935
935 TabContents* tab_contents; 936 RenderViewHost* view;
936 std::string error; 937 std::string error;
937 if (!GetTabFromJSONArgs(args, &tab_contents, &error)) { 938 if (!GetRenderViewFromJSONArgs(args, profile(), &view, &error)) {
938 AutomationJSONReply(this, reply_message).SendError(error); 939 AutomationJSONReply(this, reply_message).SendError(error);
939 return; 940 return;
940 } 941 }
941 942
942 WebKit::WebMouseEvent mouse_event; 943 WebKit::WebMouseEvent mouse_event;
943 if (!args->GetInteger("x", &mouse_event.x) || 944 if (!args->GetInteger("x", &mouse_event.x) ||
944 !args->GetInteger("y", &mouse_event.y)) { 945 !args->GetInteger("y", &mouse_event.y)) {
945 AutomationJSONReply(this, reply_message) 946 AutomationJSONReply(this, reply_message)
946 .SendError("(X,Y) coordinates missing or invalid"); 947 .SendError("(X,Y) coordinates missing or invalid");
947 return; 948 return;
(...skipping 13 matching lines...) Expand all
961 mouse_event.button = WebKit::WebMouseEvent::ButtonMiddle; 962 mouse_event.button = WebKit::WebMouseEvent::ButtonMiddle;
962 } else { 963 } else {
963 AutomationJSONReply(this, reply_message) 964 AutomationJSONReply(this, reply_message)
964 .SendError("Invalid button press requested"); 965 .SendError("Invalid button press requested");
965 return; 966 return;
966 } 967 }
967 968
968 mouse_event.type = WebKit::WebInputEvent::MouseDown; 969 mouse_event.type = WebKit::WebInputEvent::MouseDown;
969 mouse_event.clickCount = 1; 970 mouse_event.clickCount = 1;
970 971
971 tab_contents->render_view_host()->ForwardMouseEvent(mouse_event); 972 view->ForwardMouseEvent(mouse_event);
972 973
973 mouse_event.type = WebKit::WebInputEvent::MouseUp; 974 mouse_event.type = WebKit::WebInputEvent::MouseUp;
974 new InputEventAckNotificationObserver(this, reply_message, mouse_event.type, 975 new InputEventAckNotificationObserver(this, reply_message, mouse_event.type,
975 1); 976 1);
976 tab_contents->render_view_host()->ForwardMouseEvent(mouse_event); 977 view->ForwardMouseEvent(mouse_event);
977 } 978 }
978 979
979 void TestingAutomationProvider::WebkitMouseMove( 980 void TestingAutomationProvider::WebkitMouseMove(
980 DictionaryValue* args, IPC::Message* reply_message) { 981 DictionaryValue* args, IPC::Message* reply_message) {
981 if (SendErrorIfModalDialogActive(this, reply_message)) 982 if (SendErrorIfModalDialogActive(this, reply_message))
982 return; 983 return;
983 984
984 TabContents* tab_contents; 985 RenderViewHost* view;
985 std::string error; 986 std::string error;
986 if (!GetTabFromJSONArgs(args, &tab_contents, &error)) { 987 if (!GetRenderViewFromJSONArgs(args, profile(), &view, &error)) {
987 AutomationJSONReply(this, reply_message).SendError(error); 988 AutomationJSONReply(this, reply_message).SendError(error);
988 return; 989 return;
989 } 990 }
990 991
991 WebKit::WebMouseEvent mouse_event; 992 WebKit::WebMouseEvent mouse_event;
992 if (!args->GetInteger("x", &mouse_event.x) || 993 if (!args->GetInteger("x", &mouse_event.x) ||
993 !args->GetInteger("y", &mouse_event.y)) { 994 !args->GetInteger("y", &mouse_event.y)) {
994 AutomationJSONReply(this, reply_message) 995 AutomationJSONReply(this, reply_message)
995 .SendError("(X,Y) coordinates missing or invalid"); 996 .SendError("(X,Y) coordinates missing or invalid");
996 return; 997 return;
997 } 998 }
998 999
999 mouse_event.type = WebKit::WebInputEvent::MouseMove; 1000 mouse_event.type = WebKit::WebInputEvent::MouseMove;
1000 new InputEventAckNotificationObserver(this, reply_message, mouse_event.type, 1001 new InputEventAckNotificationObserver(this, reply_message, mouse_event.type,
1001 1); 1002 1);
1002 tab_contents->render_view_host()->ForwardMouseEvent(mouse_event); 1003 view->ForwardMouseEvent(mouse_event);
1003 } 1004 }
1004 1005
1005 void TestingAutomationProvider::WebkitMouseDrag(DictionaryValue* args, 1006 void TestingAutomationProvider::WebkitMouseDrag(DictionaryValue* args,
1006 IPC::Message* reply_message) { 1007 IPC::Message* reply_message) {
1007 if (SendErrorIfModalDialogActive(this, reply_message)) 1008 if (SendErrorIfModalDialogActive(this, reply_message))
1008 return; 1009 return;
1009 1010
1010 TabContents* tab_contents; 1011 RenderViewHost* view;
1011 std::string error; 1012 std::string error;
1012 if (!GetTabFromJSONArgs(args, &tab_contents, &error)) { 1013 if (!GetRenderViewFromJSONArgs(args, profile(), &view, &error)) {
1013 AutomationJSONReply(this, reply_message).SendError(error); 1014 AutomationJSONReply(this, reply_message).SendError(error);
1014 return; 1015 return;
1015 } 1016 }
1016 1017
1017 WebKit::WebMouseEvent mouse_event; 1018 WebKit::WebMouseEvent mouse_event;
1018 int start_x, start_y, end_x, end_y; 1019 int start_x, start_y, end_x, end_y;
1019 if (!args->GetInteger("start_x", &start_x) || 1020 if (!args->GetInteger("start_x", &start_x) ||
1020 !args->GetInteger("start_y", &start_y) || 1021 !args->GetInteger("start_y", &start_y) ||
1021 !args->GetInteger("end_x", &end_x) || 1022 !args->GetInteger("end_x", &end_x) ||
1022 !args->GetInteger("end_y", &end_y)) { 1023 !args->GetInteger("end_y", &end_y)) {
1023 AutomationJSONReply(this, reply_message) 1024 AutomationJSONReply(this, reply_message)
1024 .SendError("Invalid start/end positions"); 1025 .SendError("Invalid start/end positions");
1025 return; 1026 return;
1026 } 1027 }
1027 1028
1028 mouse_event.type = WebKit::WebInputEvent::MouseMove; 1029 mouse_event.type = WebKit::WebInputEvent::MouseMove;
1029 // Step 1- Move the mouse to the start position. 1030 // Step 1- Move the mouse to the start position.
1030 mouse_event.x = start_x; 1031 mouse_event.x = start_x;
1031 mouse_event.y = start_y; 1032 mouse_event.y = start_y;
1032 tab_contents->render_view_host()->ForwardMouseEvent(mouse_event); 1033 view->ForwardMouseEvent(mouse_event);
1033 1034
1034 // Step 2- Left click mouse down, the mouse button is fixed. 1035 // Step 2- Left click mouse down, the mouse button is fixed.
1035 mouse_event.type = WebKit::WebInputEvent::MouseDown; 1036 mouse_event.type = WebKit::WebInputEvent::MouseDown;
1036 mouse_event.button = WebKit::WebMouseEvent::ButtonLeft; 1037 mouse_event.button = WebKit::WebMouseEvent::ButtonLeft;
1037 mouse_event.clickCount = 1; 1038 mouse_event.clickCount = 1;
1038 tab_contents->render_view_host()->ForwardMouseEvent(mouse_event); 1039 view->ForwardMouseEvent(mouse_event);
1039 1040
1040 // Step 3 - Move the mouse to the end position. 1041 // Step 3 - Move the mouse to the end position.
1041 // TODO(JMikhail): See if we should simulate the by not making such
1042 // a drastic jump by placing incrmental stops along the way.
1043 mouse_event.type = WebKit::WebInputEvent::MouseMove; 1042 mouse_event.type = WebKit::WebInputEvent::MouseMove;
1044 mouse_event.x = end_x; 1043 mouse_event.x = end_x;
1045 mouse_event.y = end_y; 1044 mouse_event.y = end_y;
1046 mouse_event.clickCount = 0; 1045 mouse_event.clickCount = 0;
1047 tab_contents->render_view_host()->ForwardMouseEvent(mouse_event); 1046 view->ForwardMouseEvent(mouse_event);
1048 1047
1049 // Step 4 - Release the left mouse button. 1048 // Step 4 - Release the left mouse button.
1050 mouse_event.type = WebKit::WebInputEvent::MouseUp; 1049 mouse_event.type = WebKit::WebInputEvent::MouseUp;
1051 mouse_event.clickCount = 1; 1050 mouse_event.clickCount = 1;
1052 new InputEventAckNotificationObserver(this, reply_message, mouse_event.type, 1051 new InputEventAckNotificationObserver(this, reply_message, mouse_event.type,
1053 1); 1052 1);
1054 tab_contents->render_view_host()->ForwardMouseEvent(mouse_event); 1053 view->ForwardMouseEvent(mouse_event);
1055 } 1054 }
1056 1055
1057 void TestingAutomationProvider::WebkitMouseButtonDown( 1056 void TestingAutomationProvider::WebkitMouseButtonDown(
1058 DictionaryValue* args, IPC::Message* reply_message) { 1057 DictionaryValue* args, IPC::Message* reply_message) {
1059 if (SendErrorIfModalDialogActive(this, reply_message)) 1058 if (SendErrorIfModalDialogActive(this, reply_message))
1060 return; 1059 return;
1061 1060
1062 TabContents* tab_contents; 1061 RenderViewHost* view;
1063 std::string error; 1062 std::string error;
1064 if (!GetTabFromJSONArgs(args, &tab_contents, &error)) { 1063 if (!GetRenderViewFromJSONArgs(args, profile(), &view, &error)) {
1065 AutomationJSONReply(this, reply_message).SendError(error); 1064 AutomationJSONReply(this, reply_message).SendError(error);
1066 return; 1065 return;
1067 } 1066 }
1068 1067
1069 WebKit::WebMouseEvent mouse_event; 1068 WebKit::WebMouseEvent mouse_event;
1070 if (!args->GetInteger("x", &mouse_event.x) || 1069 if (!args->GetInteger("x", &mouse_event.x) ||
1071 !args->GetInteger("y", &mouse_event.y)) { 1070 !args->GetInteger("y", &mouse_event.y)) {
1072 AutomationJSONReply(this, reply_message) 1071 AutomationJSONReply(this, reply_message)
1073 .SendError("(X,Y) coordinates missing or invalid"); 1072 .SendError("(X,Y) coordinates missing or invalid");
1074 return; 1073 return;
1075 } 1074 }
1076 1075
1077 mouse_event.type = WebKit::WebInputEvent::MouseDown; 1076 mouse_event.type = WebKit::WebInputEvent::MouseDown;
1078 mouse_event.button = WebKit::WebMouseEvent::ButtonLeft; 1077 mouse_event.button = WebKit::WebMouseEvent::ButtonLeft;
1079 mouse_event.clickCount = 1; 1078 mouse_event.clickCount = 1;
1080 new InputEventAckNotificationObserver(this, reply_message, mouse_event.type, 1079 new InputEventAckNotificationObserver(this, reply_message, mouse_event.type,
1081 1); 1080 1);
1082 tab_contents->render_view_host()->ForwardMouseEvent(mouse_event); 1081 view->ForwardMouseEvent(mouse_event);
1083 } 1082 }
1084 1083
1085 void TestingAutomationProvider::WebkitMouseButtonUp( 1084 void TestingAutomationProvider::WebkitMouseButtonUp(
1086 DictionaryValue* args, IPC::Message* reply_message) { 1085 DictionaryValue* args, IPC::Message* reply_message) {
1087 if (SendErrorIfModalDialogActive(this, reply_message)) 1086 if (SendErrorIfModalDialogActive(this, reply_message))
1088 return; 1087 return;
1089 1088
1090 TabContents* tab_contents; 1089 RenderViewHost* view;
1091 std::string error; 1090 std::string error;
1092 if (!GetTabFromJSONArgs(args, &tab_contents, &error)) { 1091 if (!GetRenderViewFromJSONArgs(args, profile(), &view, &error)) {
1093 AutomationJSONReply(this, reply_message).SendError(error); 1092 AutomationJSONReply(this, reply_message).SendError(error);
1094 return; 1093 return;
1095 } 1094 }
1096 1095
1097 WebKit::WebMouseEvent mouse_event; 1096 WebKit::WebMouseEvent mouse_event;
1098 if (!args->GetInteger("x", &mouse_event.x) || 1097 if (!args->GetInteger("x", &mouse_event.x) ||
1099 !args->GetInteger("y", &mouse_event.y)) { 1098 !args->GetInteger("y", &mouse_event.y)) {
1100 AutomationJSONReply(this, reply_message) 1099 AutomationJSONReply(this, reply_message)
1101 .SendError("(X,Y) coordinates missing or invalid"); 1100 .SendError("(X,Y) coordinates missing or invalid");
1102 return; 1101 return;
1103 } 1102 }
1104 1103
1105 mouse_event.type = WebKit::WebInputEvent::MouseUp; 1104 mouse_event.type = WebKit::WebInputEvent::MouseUp;
1106 mouse_event.button = WebKit::WebMouseEvent::ButtonLeft; 1105 mouse_event.button = WebKit::WebMouseEvent::ButtonLeft;
1107 mouse_event.clickCount = 1; 1106 mouse_event.clickCount = 1;
1108 new InputEventAckNotificationObserver(this, reply_message, mouse_event.type, 1107 new InputEventAckNotificationObserver(this, reply_message, mouse_event.type,
1109 1); 1108 1);
1110 tab_contents->render_view_host()->ForwardMouseEvent(mouse_event); 1109 view->ForwardMouseEvent(mouse_event);
1111 } 1110 }
1112 1111
1113 void TestingAutomationProvider::WebkitMouseDoubleClick( 1112 void TestingAutomationProvider::WebkitMouseDoubleClick(
1114 DictionaryValue* args, IPC::Message* reply_message) { 1113 DictionaryValue* args, IPC::Message* reply_message) {
1115 if (SendErrorIfModalDialogActive(this, reply_message)) 1114 if (SendErrorIfModalDialogActive(this, reply_message))
1116 return; 1115 return;
1117 1116
1118 TabContents* tab_contents; 1117 RenderViewHost* view;
1119 std::string error; 1118 std::string error;
1120 if (!GetTabFromJSONArgs(args, &tab_contents, &error)) { 1119 if (!GetRenderViewFromJSONArgs(args, profile(), &view, &error)) {
1121 AutomationJSONReply(this, reply_message).SendError(error); 1120 AutomationJSONReply(this, reply_message).SendError(error);
1122 return; 1121 return;
1123 } 1122 }
1124 1123
1125 WebKit::WebMouseEvent mouse_event; 1124 WebKit::WebMouseEvent mouse_event;
1126 if (!args->GetInteger("x", &mouse_event.x) || 1125 if (!args->GetInteger("x", &mouse_event.x) ||
1127 !args->GetInteger("y", &mouse_event.y)) { 1126 !args->GetInteger("y", &mouse_event.y)) {
1128 AutomationJSONReply(this, reply_message) 1127 AutomationJSONReply(this, reply_message)
1129 .SendError("(X,Y) coordinates missing or invalid"); 1128 .SendError("(X,Y) coordinates missing or invalid");
1130 return; 1129 return;
1131 } 1130 }
1132 1131
1133 mouse_event.type = WebKit::WebInputEvent::MouseDown; 1132 mouse_event.type = WebKit::WebInputEvent::MouseDown;
1134 mouse_event.button = WebKit::WebMouseEvent::ButtonLeft; 1133 mouse_event.button = WebKit::WebMouseEvent::ButtonLeft;
1135 mouse_event.clickCount = 1; 1134 mouse_event.clickCount = 1;
1136 tab_contents->render_view_host()->ForwardMouseEvent(mouse_event); 1135 view->ForwardMouseEvent(mouse_event);
1137 1136
1138 mouse_event.type = WebKit::WebInputEvent::MouseUp; 1137 mouse_event.type = WebKit::WebInputEvent::MouseUp;
1139 new InputEventAckNotificationObserver(this, reply_message, mouse_event.type, 1138 new InputEventAckNotificationObserver(this, reply_message, mouse_event.type,
1140 2); 1139 2);
1141 tab_contents->render_view_host()->ForwardMouseEvent(mouse_event); 1140 view->ForwardMouseEvent(mouse_event);
1142 1141
1143 mouse_event.type = WebKit::WebInputEvent::MouseDown; 1142 mouse_event.type = WebKit::WebInputEvent::MouseDown;
1144 mouse_event.clickCount = 2; 1143 mouse_event.clickCount = 2;
1145 tab_contents->render_view_host()->ForwardMouseEvent(mouse_event); 1144 view->ForwardMouseEvent(mouse_event);
1146 1145
1147 mouse_event.type = WebKit::WebInputEvent::MouseUp; 1146 mouse_event.type = WebKit::WebInputEvent::MouseUp;
1148 tab_contents->render_view_host()->ForwardMouseEvent(mouse_event); 1147 view->ForwardMouseEvent(mouse_event);
1149 } 1148 }
1150 1149
1151 void TestingAutomationProvider::DragAndDropFilePaths( 1150 void TestingAutomationProvider::DragAndDropFilePaths(
1152 DictionaryValue* args, IPC::Message* reply_message) { 1151 DictionaryValue* args, IPC::Message* reply_message) {
1153 if (SendErrorIfModalDialogActive(this, reply_message)) 1152 if (SendErrorIfModalDialogActive(this, reply_message))
1154 return; 1153 return;
1155 1154
1156 TabContents* tab_contents; 1155 RenderViewHost* view;
1157 std::string error; 1156 std::string error;
1158 if (!GetTabFromJSONArgs(args, &tab_contents, &error)) { 1157 if (!GetRenderViewFromJSONArgs(args, profile(), &view, &error)) {
1159 AutomationJSONReply(this, reply_message).SendError(error); 1158 AutomationJSONReply(this, reply_message).SendError(error);
1160 return; 1159 return;
1161 } 1160 }
1162 1161
1163 int x, y; 1162 int x, y;
1164 if (!args->GetInteger("x", &x) || !args->GetInteger("y", &y)) { 1163 if (!args->GetInteger("x", &x) || !args->GetInteger("y", &y)) {
1165 AutomationJSONReply(this, reply_message) 1164 AutomationJSONReply(this, reply_message)
1166 .SendError("(X,Y) coordinates missing or invalid"); 1165 .SendError("(X,Y) coordinates missing or invalid");
1167 return; 1166 return;
1168 } 1167 }
(...skipping 21 matching lines...) Expand all
1190 const gfx::Point client(x, y); 1189 const gfx::Point client(x, y);
1191 // We don't set any values in screen variable because DragTarget*** ignore the 1190 // We don't set any values in screen variable because DragTarget*** ignore the
1192 // screen argument. 1191 // screen argument.
1193 const gfx::Point screen; 1192 const gfx::Point screen;
1194 1193
1195 int operations = 0; 1194 int operations = 0;
1196 operations |= WebKit::WebDragOperationCopy; 1195 operations |= WebKit::WebDragOperationCopy;
1197 operations |= WebKit::WebDragOperationLink; 1196 operations |= WebKit::WebDragOperationLink;
1198 operations |= WebKit::WebDragOperationMove; 1197 operations |= WebKit::WebDragOperationMove;
1199 1198
1200 RenderViewHost* host = tab_contents->render_view_host(); 1199 view->DragTargetDragEnter(
1201 host->DragTargetDragEnter(
1202 drop_data, client, screen, 1200 drop_data, client, screen,
1203 static_cast<WebKit::WebDragOperationsMask>(operations)); 1201 static_cast<WebKit::WebDragOperationsMask>(operations));
1204 new DragTargetDropAckNotificationObserver(this, reply_message); 1202 new DragTargetDropAckNotificationObserver(this, reply_message);
1205 host->DragTargetDrop(client, screen); 1203 view->DragTargetDrop(client, screen);
1206 } 1204 }
1207 1205
1208 void TestingAutomationProvider::GetTabCount(int handle, int* tab_count) { 1206 void TestingAutomationProvider::GetTabCount(int handle, int* tab_count) {
1209 *tab_count = -1; // -1 is the error code 1207 *tab_count = -1; // -1 is the error code
1210 1208
1211 if (browser_tracker_->ContainsHandle(handle)) { 1209 if (browser_tracker_->ContainsHandle(handle)) {
1212 Browser* browser = browser_tracker_->GetResource(handle); 1210 Browser* browser = browser_tracker_->GetResource(handle);
1213 *tab_count = browser->tab_count(); 1211 *tab_count = browser->tab_count();
1214 } 1212 }
1215 } 1213 }
(...skipping 1040 matching lines...) Expand 10 before | Expand all | Expand 10 after
2256 handler_map["ExecuteJavascript"] = 2254 handler_map["ExecuteJavascript"] =
2257 &TestingAutomationProvider::ExecuteJavascriptJSON; 2255 &TestingAutomationProvider::ExecuteJavascriptJSON;
2258 handler_map["ExecuteJavascriptInRenderView"] = 2256 handler_map["ExecuteJavascriptInRenderView"] =
2259 &TestingAutomationProvider::ExecuteJavascriptInRenderView; 2257 &TestingAutomationProvider::ExecuteJavascriptInRenderView;
2260 handler_map["GoForward"] = 2258 handler_map["GoForward"] =
2261 &TestingAutomationProvider::GoForward; 2259 &TestingAutomationProvider::GoForward;
2262 handler_map["GoBack"] = 2260 handler_map["GoBack"] =
2263 &TestingAutomationProvider::GoBack; 2261 &TestingAutomationProvider::GoBack;
2264 handler_map["Reload"] = 2262 handler_map["Reload"] =
2265 &TestingAutomationProvider::ReloadJSON; 2263 &TestingAutomationProvider::ReloadJSON;
2266 handler_map["GetTabURL"] =
2267 &TestingAutomationProvider::GetTabURLJSON;
2268 handler_map["GetTabTitle"] =
2269 &TestingAutomationProvider::GetTabTitleJSON;
2270 handler_map["CaptureEntirePage"] = 2264 handler_map["CaptureEntirePage"] =
2271 &TestingAutomationProvider::CaptureEntirePageJSON; 2265 &TestingAutomationProvider::CaptureEntirePageJSON;
2272 handler_map["GetCookies"] = 2266 handler_map["GetCookies"] =
2273 &TestingAutomationProvider::GetCookiesJSON; 2267 &TestingAutomationProvider::GetCookiesJSON;
2274 handler_map["DeleteCookie"] = 2268 handler_map["DeleteCookie"] =
2275 &TestingAutomationProvider::DeleteCookieJSON; 2269 &TestingAutomationProvider::DeleteCookieJSON;
2276 handler_map["SetCookie"] = 2270 handler_map["SetCookie"] =
2277 &TestingAutomationProvider::SetCookieJSON; 2271 &TestingAutomationProvider::SetCookieJSON;
2278 handler_map["GetTabIds"] = 2272 handler_map["GetTabIds"] =
2279 &TestingAutomationProvider::GetTabIds; 2273 &TestingAutomationProvider::GetTabIds;
2274 handler_map["GetViews"] =
2275 &TestingAutomationProvider::GetViews;
2280 handler_map["IsTabIdValid"] = 2276 handler_map["IsTabIdValid"] =
2281 &TestingAutomationProvider::IsTabIdValid; 2277 &TestingAutomationProvider::IsTabIdValid;
2278 handler_map["DoesAutomationObjectExist"] =
2279 &TestingAutomationProvider::DoesAutomationObjectExist;
2282 handler_map["CloseTab"] = 2280 handler_map["CloseTab"] =
2283 &TestingAutomationProvider::CloseTabJSON; 2281 &TestingAutomationProvider::CloseTabJSON;
2284 handler_map["WebkitMouseMove"] = 2282 handler_map["WebkitMouseMove"] =
2285 &TestingAutomationProvider::WebkitMouseMove; 2283 &TestingAutomationProvider::WebkitMouseMove;
2286 handler_map["WebkitMouseClick"] = 2284 handler_map["WebkitMouseClick"] =
2287 &TestingAutomationProvider::WebkitMouseClick; 2285 &TestingAutomationProvider::WebkitMouseClick;
2288 handler_map["WebkitMouseDrag"] = 2286 handler_map["WebkitMouseDrag"] =
2289 &TestingAutomationProvider::WebkitMouseDrag; 2287 &TestingAutomationProvider::WebkitMouseDrag;
2290 handler_map["WebkitMouseButtonUp"] = 2288 handler_map["WebkitMouseButtonUp"] =
2291 &TestingAutomationProvider::WebkitMouseButtonUp; 2289 &TestingAutomationProvider::WebkitMouseButtonUp;
(...skipping 28 matching lines...) Expand all
2320 handler_map["GetProcessInfo"] = 2318 handler_map["GetProcessInfo"] =
2321 &TestingAutomationProvider::GetProcessInfo; 2319 &TestingAutomationProvider::GetProcessInfo;
2322 handler_map["SetPolicies"] = 2320 handler_map["SetPolicies"] =
2323 &TestingAutomationProvider::SetPolicies; 2321 &TestingAutomationProvider::SetPolicies;
2324 handler_map["GetPolicyDefinitionList"] = 2322 handler_map["GetPolicyDefinitionList"] =
2325 &TestingAutomationProvider::GetPolicyDefinitionList; 2323 &TestingAutomationProvider::GetPolicyDefinitionList;
2326 handler_map["InstallExtension"] = 2324 handler_map["InstallExtension"] =
2327 &TestingAutomationProvider::InstallExtension; 2325 &TestingAutomationProvider::InstallExtension;
2328 handler_map["GetExtensionsInfo"] = 2326 handler_map["GetExtensionsInfo"] =
2329 &TestingAutomationProvider::GetExtensionsInfo; 2327 &TestingAutomationProvider::GetExtensionsInfo;
2328 handler_map["UninstallExtensionById"] =
2329 &TestingAutomationProvider::UninstallExtensionById;
2330 handler_map["SetExtensionStateById"] =
2331 &TestingAutomationProvider::SetExtensionStateById;
2330 handler_map["RefreshPolicies"] = 2332 handler_map["RefreshPolicies"] =
2331 &TestingAutomationProvider::RefreshPolicies; 2333 &TestingAutomationProvider::RefreshPolicies;
2332 handler_map["TriggerPageActionById"] = 2334 handler_map["TriggerPageActionById"] =
2333 &TestingAutomationProvider::TriggerPageActionById; 2335 &TestingAutomationProvider::TriggerPageActionById;
2334 handler_map["TriggerBrowserActionById"] = 2336 handler_map["TriggerBrowserActionById"] =
2335 &TestingAutomationProvider::TriggerBrowserActionById; 2337 &TestingAutomationProvider::TriggerBrowserActionById;
2336 #if defined(OS_CHROMEOS) 2338 #if defined(OS_CHROMEOS)
2337 handler_map["GetLoginInfo"] = &TestingAutomationProvider::GetLoginInfo; 2339 handler_map["GetLoginInfo"] = &TestingAutomationProvider::GetLoginInfo;
2338 handler_map["ShowCreateAccountUI"] = 2340 handler_map["ShowCreateAccountUI"] =
2339 &TestingAutomationProvider::ShowCreateAccountUI; 2341 &TestingAutomationProvider::ShowCreateAccountUI;
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
2468 2470
2469 browser_handler_map["GetBlockedPopupsInfo"] = 2471 browser_handler_map["GetBlockedPopupsInfo"] =
2470 &TestingAutomationProvider::GetBlockedPopupsInfo; 2472 &TestingAutomationProvider::GetBlockedPopupsInfo;
2471 browser_handler_map["UnblockAndLaunchBlockedPopup"] = 2473 browser_handler_map["UnblockAndLaunchBlockedPopup"] =
2472 &TestingAutomationProvider::UnblockAndLaunchBlockedPopup; 2474 &TestingAutomationProvider::UnblockAndLaunchBlockedPopup;
2473 2475
2474 // SetTheme() implemented using InstallExtension(). 2476 // SetTheme() implemented using InstallExtension().
2475 browser_handler_map["GetThemeInfo"] = 2477 browser_handler_map["GetThemeInfo"] =
2476 &TestingAutomationProvider::GetThemeInfo; 2478 &TestingAutomationProvider::GetThemeInfo;
2477 2479
2478 browser_handler_map["UninstallExtensionById"] =
2479 &TestingAutomationProvider::UninstallExtensionById;
2480 browser_handler_map["SetExtensionStateById"] =
2481 &TestingAutomationProvider::SetExtensionStateById;
2482
2483 browser_handler_map["FindInPage"] = &TestingAutomationProvider::FindInPage; 2480 browser_handler_map["FindInPage"] = &TestingAutomationProvider::FindInPage;
2484 2481
2485 browser_handler_map["SelectTranslateOption"] = 2482 browser_handler_map["SelectTranslateOption"] =
2486 &TestingAutomationProvider::SelectTranslateOption; 2483 &TestingAutomationProvider::SelectTranslateOption;
2487 browser_handler_map["GetTranslateInfo"] = 2484 browser_handler_map["GetTranslateInfo"] =
2488 &TestingAutomationProvider::GetTranslateInfo; 2485 &TestingAutomationProvider::GetTranslateInfo;
2489 2486
2490 browser_handler_map["GetAutofillProfile"] = 2487 browser_handler_map["GetAutofillProfile"] =
2491 &TestingAutomationProvider::GetAutofillProfile; 2488 &TestingAutomationProvider::GetAutofillProfile;
2492 browser_handler_map["FillAutofillProfile"] = 2489 browser_handler_map["FillAutofillProfile"] =
(...skipping 1910 matching lines...) Expand 10 before | Expand all | Expand 10 after
4403 extension_value->SetString("description", extension->description()); 4400 extension_value->SetString("description", extension->description());
4404 extension_value->SetString("background_url", 4401 extension_value->SetString("background_url",
4405 extension->background_url().spec()); 4402 extension->background_url().spec());
4406 extension_value->SetString("options_url", 4403 extension_value->SetString("options_url",
4407 extension->options_url().spec()); 4404 extension->options_url().spec());
4408 extension_value->Set("host_permissions", 4405 extension_value->Set("host_permissions",
4409 GetHostPermissions(extension, false)); 4406 GetHostPermissions(extension, false));
4410 extension_value->Set("effective_host_permissions", 4407 extension_value->Set("effective_host_permissions",
4411 GetHostPermissions(extension, true)); 4408 GetHostPermissions(extension, true));
4412 extension_value->Set("api_permissions", GetAPIPermissions(extension)); 4409 extension_value->Set("api_permissions", GetAPIPermissions(extension));
4410 Extension::Location location = extension->location();
4413 extension_value->SetBoolean("is_component", 4411 extension_value->SetBoolean("is_component",
4414 extension->location() == Extension::COMPONENT); 4412 location == Extension::COMPONENT);
4415 extension_value->SetBoolean("is_internal", 4413 extension_value->SetBoolean("is_internal", location == Extension::INTERNAL);
4416 extension->location() == Extension::INTERNAL); 4414 extension_value->SetBoolean("is_user_installed",
4415 location == Extension::INTERNAL || location == Extension::LOAD);
4417 extension_value->SetBoolean("is_enabled", service->IsExtensionEnabled(id)); 4416 extension_value->SetBoolean("is_enabled", service->IsExtensionEnabled(id));
4418 extension_value->SetBoolean("allowed_in_incognito", 4417 extension_value->SetBoolean("allowed_in_incognito",
4419 service->IsIncognitoEnabled(id)); 4418 service->IsIncognitoEnabled(id));
4420 extensions_values->Append(extension_value); 4419 extensions_values->Append(extension_value);
4421 } 4420 }
4422 return_value->Set("extensions", extensions_values); 4421 return_value->Set("extensions", extensions_values);
4423 reply.SendSuccess(return_value.get()); 4422 reply.SendSuccess(return_value.get());
4424 } 4423 }
4425 4424
4426 // See UninstallExtensionById() in chrome/test/pyautolib/pyauto.py for sample 4425 // See UninstallExtensionById() in chrome/test/pyautolib/pyauto.py for sample
4427 // json input. 4426 // json input.
4428 // Sample json output: {} 4427 // Sample json output: {}
4429 void TestingAutomationProvider::UninstallExtensionById( 4428 void TestingAutomationProvider::UninstallExtensionById(
4430 Browser* browser,
4431 DictionaryValue* args, 4429 DictionaryValue* args,
4432 IPC::Message* reply_message) { 4430 IPC::Message* reply_message) {
4433 std::string id; 4431 std::string id;
4434 if (!args->GetString("id", &id)) { 4432 if (!args->GetString("id", &id)) {
4435 AutomationJSONReply(this, reply_message).SendError( 4433 AutomationJSONReply(this, reply_message).SendError(
4436 "Must include string id."); 4434 "Must include string id.");
4437 return; 4435 return;
4438 } 4436 }
4439 ExtensionService* service = profile()->GetExtensionService(); 4437 ExtensionService* service = profile()->GetExtensionService();
4440 if (!service) { 4438 if (!service) {
(...skipping 13 matching lines...) Expand all
4454 4452
4455 // Wait for a notification indicating that the extension with the given ID 4453 // Wait for a notification indicating that the extension with the given ID
4456 // has been uninstalled. This observer will delete itself. 4454 // has been uninstalled. This observer will delete itself.
4457 new ExtensionUninstallObserver(this, reply_message, id); 4455 new ExtensionUninstallObserver(this, reply_message, id);
4458 service->UninstallExtension(id, false, NULL); 4456 service->UninstallExtension(id, false, NULL);
4459 } 4457 }
4460 4458
4461 // See SetExtensionStateById() in chrome/test/pyautolib/pyauto.py 4459 // See SetExtensionStateById() in chrome/test/pyautolib/pyauto.py
4462 // for sample json input. 4460 // for sample json input.
4463 void TestingAutomationProvider::SetExtensionStateById( 4461 void TestingAutomationProvider::SetExtensionStateById(
4464 Browser* browser,
4465 DictionaryValue* args, 4462 DictionaryValue* args,
4466 IPC::Message* reply_message) { 4463 IPC::Message* reply_message) {
4467 AutomationJSONReply reply(this, reply_message);
4468 std::string id; 4464 std::string id;
4469 if (!args->GetString("id", &id)) { 4465 if (!args->GetString("id", &id)) {
4470 reply.SendError("Missing or invalid key: id"); 4466 AutomationJSONReply(this, reply_message)
4467 .SendError("Missing or invalid key: id");
4471 return; 4468 return;
4472 } 4469 }
4473 4470
4474 bool enable; 4471 bool enable;
4475 if (!args->GetBoolean("enable", &enable)) { 4472 if (!args->GetBoolean("enable", &enable)) {
4476 reply.SendError("Missing or invalid key: enable"); 4473 AutomationJSONReply(this, reply_message)
4474 .SendError("Missing or invalid key: enable");
4477 return; 4475 return;
4478 } 4476 }
4479 4477
4480 bool allow_in_incognito; 4478 bool allow_in_incognito;
4481 if (!args->GetBoolean("allow_in_incognito", &allow_in_incognito)) { 4479 if (!args->GetBoolean("allow_in_incognito", &allow_in_incognito)) {
4482 reply.SendError("Missing or invalid key: allow_in_incognito"); 4480 AutomationJSONReply(this, reply_message)
4481 .SendError("Missing or invalid key: allow_in_incognito");
4483 return; 4482 return;
4484 } 4483 }
4485 4484
4486 if (allow_in_incognito && !enable) { 4485 if (allow_in_incognito && !enable) {
4487 reply.SendError("Invalid state: Disabled extension " 4486 AutomationJSONReply(this, reply_message)
4487 .SendError("Invalid state: Disabled extension "
4488 "cannot be allowed in incognito mode."); 4488 "cannot be allowed in incognito mode.");
4489 return; 4489 return;
4490 } 4490 }
4491 4491
4492 ExtensionService* service = profile()->GetExtensionService(); 4492 ExtensionService* service = profile()->GetExtensionService();
4493 ExtensionProcessManager* manager = profile()->GetExtensionProcessManager();
4493 if (!service) { 4494 if (!service) {
4494 reply.SendError("No extensions service."); 4495 AutomationJSONReply(this, reply_message)
4496 .SendError("No extensions service or process manager.");
4495 return; 4497 return;
4496 } 4498 }
4497 4499
4498 if (!service->GetExtensionById(id, true) && 4500 if (!service->GetExtensionById(id, true) &&
4499 !service->GetTerminatedExtension(id)) { 4501 !service->GetTerminatedExtension(id)) {
4500 // The extension ID does not correspond to any extension, whether crashed 4502 // The extension ID does not correspond to any extension, whether crashed
4501 // or not. 4503 // or not.
4502 reply.SendError(base::StringPrintf("Extension does not exist: %s.", 4504 AutomationJSONReply(this, reply_message).SendError(
4503 id.c_str())); 4505 base::StringPrintf("Extension does not exist: %s.", id.c_str()));
4504 return; 4506 return;
4505 } 4507 }
4506 4508
4507 if (enable) 4509 service->SetIsIncognitoEnabled(id, allow_in_incognito);
4508 service->EnableExtension(id); 4510
4509 else 4511 if (enable) {
4512 if (!service->IsExtensionEnabled(id)) {
4513 new ExtensionReadyNotificationObserver(
4514 manager,
4515 service,
4516 this,
4517 reply_message);
4518 service->EnableExtension(id);
4519 } else {
4520 AutomationJSONReply(this, reply_message).SendSuccess(NULL);
4521 }
4522 } else {
4510 service->DisableExtension(id); 4523 service->DisableExtension(id);
4511 4524 AutomationJSONReply(this, reply_message).SendSuccess(NULL);
4512 service->SetIsIncognitoEnabled(id, allow_in_incognito); 4525 }
4513 reply.SendSuccess(NULL);
4514 } 4526 }
4515 4527
4516 // See TriggerPageActionById() in chrome/test/pyautolib/pyauto.py 4528 // See TriggerPageActionById() in chrome/test/pyautolib/pyauto.py
4517 // for sample json input. 4529 // for sample json input.
4518 void TestingAutomationProvider::TriggerPageActionById( 4530 void TestingAutomationProvider::TriggerPageActionById(
4519 DictionaryValue* args, 4531 DictionaryValue* args,
4520 IPC::Message* reply_message) { 4532 IPC::Message* reply_message) {
4521 AutomationJSONReply reply(this, reply_message); 4533 AutomationJSONReply reply(this, reply_message);
4522 4534
4523 std::string error; 4535 std::string error;
(...skipping 1101 matching lines...) Expand 10 before | Expand all | Expand 10 after
5625 NativeWebKeyboardEvent event; 5637 NativeWebKeyboardEvent event;
5626 // In the event of an error, BuildWebKeyEventFromArgs handles telling what 5638 // In the event of an error, BuildWebKeyEventFromArgs handles telling what
5627 // went wrong and sending the reply message; if it fails, we just have to 5639 // went wrong and sending the reply message; if it fails, we just have to
5628 // stop here. 5640 // stop here.
5629 std::string error; 5641 std::string error;
5630 if (!BuildWebKeyEventFromArgs(args, &error, &event)) { 5642 if (!BuildWebKeyEventFromArgs(args, &error, &event)) {
5631 AutomationJSONReply(this, reply_message).SendError(error); 5643 AutomationJSONReply(this, reply_message).SendError(error);
5632 return; 5644 return;
5633 } 5645 }
5634 5646
5635 TabContents* tab_contents; 5647 RenderViewHost* view;
5636 if (!GetTabFromJSONArgs(args, &tab_contents, &error)) { 5648 if (!GetRenderViewFromJSONArgs(args, profile(), &view, &error)) {
5637 AutomationJSONReply(this, reply_message).SendError(error); 5649 AutomationJSONReply(this, reply_message).SendError(error);
5638 return; 5650 return;
5639 } 5651 }
5640 new InputEventAckNotificationObserver(this, reply_message, event.type, 1); 5652 new InputEventAckNotificationObserver(this, reply_message, event.type, 1);
5641 tab_contents->render_view_host()->ForwardKeyboardEvent(event); 5653 view->ForwardKeyboardEvent(event);
5642 } 5654 }
5643 5655
5644 void TestingAutomationProvider::SendOSLevelKeyEventToTab( 5656 void TestingAutomationProvider::SendOSLevelKeyEventToTab(
5645 DictionaryValue* args, 5657 DictionaryValue* args,
5646 IPC::Message* reply_message) { 5658 IPC::Message* reply_message) {
5647 if (SendErrorIfModalDialogActive(this, reply_message)) 5659 if (SendErrorIfModalDialogActive(this, reply_message))
5648 return; 5660 return;
5649 5661
5650 int modifiers, keycode; 5662 int modifiers, keycode;
5651 if (!args->GetInteger("keyCode", &keycode)) { 5663 if (!args->GetInteger("keyCode", &keycode)) {
(...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after
6057 } 6069 }
6058 6070
6059 void TestingAutomationProvider::ExecuteJavascriptJSON( 6071 void TestingAutomationProvider::ExecuteJavascriptJSON(
6060 DictionaryValue* args, 6072 DictionaryValue* args,
6061 IPC::Message* reply_message) { 6073 IPC::Message* reply_message) {
6062 if (SendErrorIfModalDialogActive(this, reply_message)) 6074 if (SendErrorIfModalDialogActive(this, reply_message))
6063 return; 6075 return;
6064 6076
6065 string16 frame_xpath, javascript; 6077 string16 frame_xpath, javascript;
6066 std::string error; 6078 std::string error;
6067 TabContents* tab_contents; 6079 RenderViewHost* render_view;
6068 if (!GetTabFromJSONArgs(args, &tab_contents, &error)) { 6080 if (!GetRenderViewFromJSONArgs(args, profile(), &render_view, &error)) {
6069 AutomationJSONReply(this, reply_message).SendError(error); 6081 AutomationJSONReply(this, reply_message).SendError(error);
6070 return; 6082 return;
6071 } 6083 }
6072 if (!args->GetString("frame_xpath", &frame_xpath)) { 6084 if (!args->GetString("frame_xpath", &frame_xpath)) {
6073 AutomationJSONReply(this, reply_message) 6085 AutomationJSONReply(this, reply_message)
6074 .SendError("'frame_xpath' missing or invalid"); 6086 .SendError("'frame_xpath' missing or invalid");
6075 return; 6087 return;
6076 } 6088 }
6077 if (!args->GetString("javascript", &javascript)) { 6089 if (!args->GetString("javascript", &javascript)) {
6078 AutomationJSONReply(this, reply_message) 6090 AutomationJSONReply(this, reply_message)
6079 .SendError("'javascript' missing or invalid"); 6091 .SendError("'javascript' missing or invalid");
6080 return; 6092 return;
6081 } 6093 }
6082 6094
6083 new DomOperationMessageSender(this, reply_message, true); 6095 new DomOperationMessageSender(this, reply_message, true);
6084 ExecuteJavascriptInRenderViewFrame(frame_xpath, javascript, reply_message, 6096 ExecuteJavascriptInRenderViewFrame(frame_xpath, javascript, reply_message,
6085 tab_contents->render_view_host()); 6097 render_view);
6086 } 6098 }
6087 6099
6088 void TestingAutomationProvider::ExecuteJavascriptInRenderView( 6100 void TestingAutomationProvider::ExecuteJavascriptInRenderView(
6089 DictionaryValue* args, 6101 DictionaryValue* args,
6090 IPC::Message* reply_message) { 6102 IPC::Message* reply_message) {
6091 string16 frame_xpath, javascript, extension_id, url_text; 6103 string16 frame_xpath, javascript, extension_id, url_text;
6092 std::string error; 6104 std::string error;
6093 int render_process_id, render_view_id; 6105 int render_process_id, render_view_id;
6094 if (!args->GetString("frame_xpath", &frame_xpath)) { 6106 if (!args->GetString("frame_xpath", &frame_xpath)) {
6095 AutomationJSONReply(this, reply_message) 6107 AutomationJSONReply(this, reply_message)
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
6184 if (!GetTabFromJSONArgs(args, &tab_contents, &error)) { 6196 if (!GetTabFromJSONArgs(args, &tab_contents, &error)) {
6185 AutomationJSONReply(this, reply_message).SendError(error); 6197 AutomationJSONReply(this, reply_message).SendError(error);
6186 return; 6198 return;
6187 } 6199 }
6188 NavigationController& controller = tab_contents->controller(); 6200 NavigationController& controller = tab_contents->controller();
6189 new NavigationNotificationObserver(&controller, this, reply_message, 6201 new NavigationNotificationObserver(&controller, this, reply_message,
6190 1, false, true); 6202 1, false, true);
6191 controller.Reload(false); 6203 controller.Reload(false);
6192 } 6204 }
6193 6205
6194 void TestingAutomationProvider::GetTabURLJSON(
6195 DictionaryValue* args,
6196 IPC::Message* reply_message) {
6197 AutomationJSONReply reply(this, reply_message);
6198 TabContents* tab_contents;
6199 std::string error;
6200 if (!GetTabFromJSONArgs(args, &tab_contents, &error)) {
6201 reply.SendError(error);
6202 return;
6203 }
6204 DictionaryValue dict;
6205 dict.SetString("url", tab_contents->GetURL().possibly_invalid_spec());
6206 reply.SendSuccess(&dict);
6207 }
6208
6209 void TestingAutomationProvider::GetTabTitleJSON(
6210 DictionaryValue* args,
6211 IPC::Message* reply_message) {
6212 AutomationJSONReply reply(this, reply_message);
6213 TabContents* tab_contents;
6214 std::string error;
6215 if (!GetTabFromJSONArgs(args, &tab_contents, &error)) {
6216 reply.SendError(error);
6217 return;
6218 }
6219 DictionaryValue dict;
6220 dict.SetString("title", tab_contents->GetTitle());
6221 reply.SendSuccess(&dict);
6222 }
6223
6224 void TestingAutomationProvider::CaptureEntirePageJSON( 6206 void TestingAutomationProvider::CaptureEntirePageJSON(
6225 DictionaryValue* args, 6207 DictionaryValue* args,
6226 IPC::Message* reply_message) { 6208 IPC::Message* reply_message) {
6227 if (SendErrorIfModalDialogActive(this, reply_message)) 6209 if (SendErrorIfModalDialogActive(this, reply_message))
6228 return; 6210 return;
6229 6211
6230 TabContents* tab_contents; 6212 TabContents* tab_contents;
6231 std::string error; 6213 std::string error;
6232 6214
6233 if (!GetTabFromJSONArgs(args, &tab_contents, &error)) { 6215 if (!GetTabFromJSONArgs(args, &tab_contents, &error)) {
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
6281 int id = browser->GetTabContentsWrapperAt(i)->restore_tab_helper()-> 6263 int id = browser->GetTabContentsWrapperAt(i)->restore_tab_helper()->
6282 session_id().id(); 6264 session_id().id();
6283 id_list->Append(Value::CreateIntegerValue(id)); 6265 id_list->Append(Value::CreateIntegerValue(id));
6284 } 6266 }
6285 } 6267 }
6286 DictionaryValue dict; 6268 DictionaryValue dict;
6287 dict.Set("ids", id_list); 6269 dict.Set("ids", id_list);
6288 AutomationJSONReply(this, reply_message).SendSuccess(&dict); 6270 AutomationJSONReply(this, reply_message).SendSuccess(&dict);
6289 } 6271 }
6290 6272
6273 void TestingAutomationProvider::GetViews(
6274 DictionaryValue* args, IPC::Message* reply_message) {
6275 ListValue* view_list = new ListValue();
6276 BrowserList::const_iterator browser_iter = BrowserList::begin();
6277 for (; browser_iter != BrowserList::end(); ++browser_iter) {
6278 Browser* browser = *browser_iter;
6279 for (int i = 0; i < browser->tab_count(); ++i) {
6280 DictionaryValue* dict = new DictionaryValue();
6281 AutomationId id = automation_util::GetIdForTab(
6282 browser->GetTabContentsWrapperAt(i));
6283 dict->Set("auto_id", id.ToValue());
6284 view_list->Append(dict);
6285 }
6286 }
6287
6288 ExtensionProcessManager* extension_mgr =
6289 profile()->GetExtensionProcessManager();
6290 ExtensionProcessManager::const_iterator iter;
6291 for (iter = extension_mgr->begin(); iter != extension_mgr->end();
6292 ++iter) {
6293 ExtensionHost* host = *iter;
6294 DictionaryValue* dict = new DictionaryValue();
6295 AutomationId id = automation_util::GetIdForExtensionView(host);
6296 if (!id.is_valid())
6297 continue;
6298 dict->Set("auto_id", id.ToValue());
6299 dict->Set("extension_id", automation_util::GetIdForExtension(
6300 host->extension()).ToValue());
6301 view_list->Append(dict);
6302 }
6303 DictionaryValue dict;
6304 dict.Set("views", view_list);
6305 AutomationJSONReply(this, reply_message).SendSuccess(&dict);
6306 }
6307
6291 void TestingAutomationProvider::IsTabIdValid( 6308 void TestingAutomationProvider::IsTabIdValid(
6292 DictionaryValue* args, IPC::Message* reply_message) { 6309 DictionaryValue* args, IPC::Message* reply_message) {
6293 AutomationJSONReply reply(this, reply_message); 6310 AutomationJSONReply reply(this, reply_message);
6294 int id; 6311 int id;
6295 if (!args->GetInteger("id", &id)) { 6312 if (!args->GetInteger("id", &id)) {
6296 reply.SendError("'id' missing or invalid"); 6313 reply.SendError("'id' missing or invalid");
6297 return; 6314 return;
6298 } 6315 }
6299 bool is_valid = false; 6316 bool is_valid = false;
6300 BrowserList::const_iterator iter = BrowserList::begin(); 6317 BrowserList::const_iterator iter = BrowserList::begin();
6301 for (; iter != BrowserList::end(); ++iter) { 6318 for (; iter != BrowserList::end(); ++iter) {
6302 Browser* browser = *iter; 6319 Browser* browser = *iter;
6303 for (int i = 0; i < browser->tab_count(); ++i) { 6320 for (int i = 0; i < browser->tab_count(); ++i) {
6304 TabContentsWrapper* tab = browser->GetTabContentsWrapperAt(i); 6321 TabContentsWrapper* tab = browser->GetTabContentsWrapperAt(i);
6305 if (tab->restore_tab_helper()->session_id().id() == id) { 6322 if (tab->restore_tab_helper()->session_id().id() == id) {
6306 is_valid = true; 6323 is_valid = true;
6307 break; 6324 break;
6308 } 6325 }
6309 } 6326 }
6310 } 6327 }
6311 DictionaryValue dict; 6328 DictionaryValue dict;
6312 dict.SetBoolean("is_valid", is_valid); 6329 dict.SetBoolean("is_valid", is_valid);
6313 reply.SendSuccess(&dict); 6330 reply.SendSuccess(&dict);
6314 } 6331 }
6315 6332
6333 void TestingAutomationProvider::DoesAutomationObjectExist(
6334 DictionaryValue* args, IPC::Message* reply_message) {
6335 AutomationJSONReply reply(this, reply_message);
6336 AutomationId id;
6337 std::string error_msg;
6338 if (!GetAutomationIdFromJSONArgs(args, "auto_id", &id, &error_msg)) {
6339 reply.SendError(error_msg);
6340 return;
6341 }
6342 DictionaryValue dict;
6343 dict.SetBoolean(
6344 "does_exist",
6345 automation_util::DoesObjectWithIdExist(id, profile()));
6346 reply.SendSuccess(&dict);
6347 }
6348
6316 void TestingAutomationProvider::CloseTabJSON( 6349 void TestingAutomationProvider::CloseTabJSON(
6317 DictionaryValue* args, IPC::Message* reply_message) { 6350 DictionaryValue* args, IPC::Message* reply_message) {
6318 AutomationJSONReply reply(this, reply_message); 6351 AutomationJSONReply reply(this, reply_message);
6319 Browser* browser; 6352 RenderViewHost* view;
6320 TabContents* tab_contents;
6321 std::string error; 6353 std::string error;
6322 if (!GetBrowserAndTabFromJSONArgs(args, &browser, &tab_contents, &error)) { 6354 if (!GetRenderViewFromJSONArgs(args, profile(), &view, &error)) {
6323 reply.SendError(error); 6355 reply.SendError(error);
6324 return; 6356 return;
6325 } 6357 }
6326 browser->CloseTabContents(tab_contents); 6358 view->ClosePage();
6327 reply.SendSuccess(NULL); 6359 reply.SendSuccess(NULL);
6328 } 6360 }
6329 6361
6330 void TestingAutomationProvider::ActivateTabJSON( 6362 void TestingAutomationProvider::ActivateTabJSON(
6331 DictionaryValue* args, 6363 DictionaryValue* args,
6332 IPC::Message* reply_message) { 6364 IPC::Message* reply_message) {
6333 if (SendErrorIfModalDialogActive(this, reply_message)) 6365 if (SendErrorIfModalDialogActive(this, reply_message))
6334 return; 6366 return;
6335 6367
6336 AutomationJSONReply reply(this, reply_message); 6368 AutomationJSONReply reply(this, reply_message);
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
6561 6593
6562 Send(reply_message_); 6594 Send(reply_message_);
6563 redirect_query_ = 0; 6595 redirect_query_ = 0;
6564 reply_message_ = NULL; 6596 reply_message_ = NULL;
6565 } 6597 }
6566 6598
6567 void TestingAutomationProvider::OnRemoveProvider() { 6599 void TestingAutomationProvider::OnRemoveProvider() {
6568 if (g_browser_process) 6600 if (g_browser_process)
6569 g_browser_process->GetAutomationProviderList()->RemoveProvider(this); 6601 g_browser_process->GetAutomationProviderList()->RemoveProvider(this);
6570 } 6602 }
OLDNEW
« no previous file with comments | « chrome/browser/automation/testing_automation_provider.h ('k') | chrome/chrome_common.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698