OLD | NEW |
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 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 #include "chrome/browser/ui/download/download_tab_helper.h" | 80 #include "chrome/browser/ui/download/download_tab_helper.h" |
81 #include "chrome/browser/ui/find_bar/find_bar.h" | 81 #include "chrome/browser/ui/find_bar/find_bar.h" |
82 #include "chrome/browser/ui/login/login_prompt.h" | 82 #include "chrome/browser/ui/login/login_prompt.h" |
83 #include "chrome/browser/ui/omnibox/location_bar.h" | 83 #include "chrome/browser/ui/omnibox/location_bar.h" |
84 #include "chrome/browser/ui/omnibox/omnibox_view.h" | 84 #include "chrome/browser/ui/omnibox/omnibox_view.h" |
85 #include "chrome/browser/ui/search_engines/keyword_editor_controller.h" | 85 #include "chrome/browser/ui/search_engines/keyword_editor_controller.h" |
86 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 86 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
87 #include "chrome/browser/ui/webui/ntp/shown_sections_handler.h" | 87 #include "chrome/browser/ui/webui/ntp/shown_sections_handler.h" |
88 #include "chrome/common/automation_messages.h" | 88 #include "chrome/common/automation_messages.h" |
89 #include "chrome/common/chrome_constants.h" | 89 #include "chrome/common/chrome_constants.h" |
| 90 #include "chrome/common/chrome_notification_types.h" |
90 #include "chrome/common/chrome_paths.h" | 91 #include "chrome/common/chrome_paths.h" |
91 #include "chrome/common/chrome_switches.h" | 92 #include "chrome/common/chrome_switches.h" |
92 #include "chrome/common/extensions/extension.h" | 93 #include "chrome/common/extensions/extension.h" |
93 #include "chrome/common/extensions/url_pattern.h" | 94 #include "chrome/common/extensions/url_pattern.h" |
94 #include "chrome/common/extensions/url_pattern_set.h" | 95 #include "chrome/common/extensions/url_pattern_set.h" |
95 #include "chrome/common/pref_names.h" | 96 #include "chrome/common/pref_names.h" |
96 #include "chrome/common/render_messages.h" | 97 #include "chrome/common/render_messages.h" |
97 #include "chrome/common/url_constants.h" | 98 #include "chrome/common/url_constants.h" |
98 #include "content/browser/debugger/devtools_window.h" | 99 #include "content/browser/debugger/devtools_window.h" |
99 #include "content/browser/renderer_host/render_process_host.h" | 100 #include "content/browser/renderer_host/render_process_host.h" |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
154 | 155 |
155 } // namespace | 156 } // namespace |
156 | 157 |
157 TestingAutomationProvider::TestingAutomationProvider(Profile* profile) | 158 TestingAutomationProvider::TestingAutomationProvider(Profile* profile) |
158 : AutomationProvider(profile), | 159 : AutomationProvider(profile), |
159 #if defined(TOOLKIT_VIEWS) | 160 #if defined(TOOLKIT_VIEWS) |
160 popup_menu_waiter_(NULL), | 161 popup_menu_waiter_(NULL), |
161 #endif | 162 #endif |
162 redirect_query_(0) { | 163 redirect_query_(0) { |
163 BrowserList::AddObserver(this); | 164 BrowserList::AddObserver(this); |
164 registrar_.Add(this, NotificationType::SESSION_END, | 165 registrar_.Add(this, chrome::NOTIFICATION_SESSION_END, |
165 NotificationService::AllSources()); | 166 NotificationService::AllSources()); |
166 } | 167 } |
167 | 168 |
168 TestingAutomationProvider::~TestingAutomationProvider() { | 169 TestingAutomationProvider::~TestingAutomationProvider() { |
169 BrowserList::RemoveObserver(this); | 170 BrowserList::RemoveObserver(this); |
170 } | 171 } |
171 | 172 |
172 IPC::Channel::Mode TestingAutomationProvider::GetChannelMode( | 173 IPC::Channel::Mode TestingAutomationProvider::GetChannelMode( |
173 bool use_named_interface) { | 174 bool use_named_interface) { |
174 if (use_named_interface) | 175 if (use_named_interface) |
175 #if defined(OS_POSIX) | 176 #if defined(OS_POSIX) |
176 return IPC::Channel::MODE_OPEN_NAMED_SERVER; | 177 return IPC::Channel::MODE_OPEN_NAMED_SERVER; |
177 #else | 178 #else |
178 return IPC::Channel::MODE_NAMED_SERVER; | 179 return IPC::Channel::MODE_NAMED_SERVER; |
179 #endif | 180 #endif |
180 else | 181 else |
181 return IPC::Channel::MODE_CLIENT; | 182 return IPC::Channel::MODE_CLIENT; |
182 } | 183 } |
183 | 184 |
184 void TestingAutomationProvider::OnBrowserAdded(const Browser* browser) { | 185 void TestingAutomationProvider::OnBrowserAdded(const Browser* browser) { |
185 } | 186 } |
186 | 187 |
187 void TestingAutomationProvider::OnBrowserRemoved(const Browser* browser) { | 188 void TestingAutomationProvider::OnBrowserRemoved(const Browser* browser) { |
188 // For backwards compatibility with the testing automation interface, we | 189 // For backwards compatibility with the testing automation interface, we |
189 // want the automation provider (and hence the process) to go away when the | 190 // want the automation provider (and hence the process) to go away when the |
190 // last browser goes away. | 191 // last browser goes away. |
191 if (BrowserList::empty() && !CommandLine::ForCurrentProcess()->HasSwitch( | 192 if (BrowserList::empty() && !CommandLine::ForCurrentProcess()->HasSwitch( |
192 switches::kKeepAliveForTest)) { | 193 switches::kKeepAliveForTest)) { |
193 // If you change this, update Observer for NotificationType::SESSION_END | 194 // If you change this, update Observer for chrome::SESSION_END |
194 // below. | 195 // below. |
195 MessageLoop::current()->PostTask(FROM_HERE, | 196 MessageLoop::current()->PostTask(FROM_HERE, |
196 NewRunnableMethod(this, &TestingAutomationProvider::OnRemoveProvider)); | 197 NewRunnableMethod(this, &TestingAutomationProvider::OnRemoveProvider)); |
197 } | 198 } |
198 } | 199 } |
199 | 200 |
200 void TestingAutomationProvider::OnSourceProfilesLoaded() { | 201 void TestingAutomationProvider::OnSourceProfilesLoaded() { |
201 DCHECK_NE(static_cast<ImporterList*>(NULL), importer_list_.get()); | 202 DCHECK_NE(static_cast<ImporterList*>(NULL), importer_list_.get()); |
202 | 203 |
203 // Get the correct profile based on the browser that the user provided. | 204 // Get the correct profile based on the browser that the user provided. |
(...skipping 20 matching lines...) Expand all Loading... |
224 this, import_settings_data_.reply_message)); | 225 this, import_settings_data_.reply_message)); |
225 | 226 |
226 Profile* target_profile = import_settings_data_.browser->profile(); | 227 Profile* target_profile = import_settings_data_.browser->profile(); |
227 importer_host->StartImportSettings(source_profile, | 228 importer_host->StartImportSettings(source_profile, |
228 target_profile, | 229 target_profile, |
229 import_settings_data_.import_items, | 230 import_settings_data_.import_items, |
230 new ProfileWriter(target_profile), | 231 new ProfileWriter(target_profile), |
231 import_settings_data_.first_run); | 232 import_settings_data_.first_run); |
232 } | 233 } |
233 | 234 |
234 void TestingAutomationProvider::Observe(NotificationType type, | 235 void TestingAutomationProvider::Observe(int type, |
235 const NotificationSource& source, | 236 const NotificationSource& source, |
236 const NotificationDetails& details) { | 237 const NotificationDetails& details) { |
237 DCHECK(type == NotificationType::SESSION_END); | 238 DCHECK(type == chrome::NOTIFICATION_SESSION_END); |
238 // OnBrowserRemoved does a ReleaseLater. When session end is received we exit | 239 // OnBrowserRemoved does a ReleaseLater. When session end is received we exit |
239 // before the task runs resulting in this object not being deleted. This | 240 // before the task runs resulting in this object not being deleted. This |
240 // Release balance out the Release scheduled by OnBrowserRemoved. | 241 // Release balance out the Release scheduled by OnBrowserRemoved. |
241 Release(); | 242 Release(); |
242 } | 243 } |
243 | 244 |
244 bool TestingAutomationProvider::OnMessageReceived( | 245 bool TestingAutomationProvider::OnMessageReceived( |
245 const IPC::Message& message) { | 246 const IPC::Message& message) { |
246 bool handled = true; | 247 bool handled = true; |
247 bool deserialize_success = true; | 248 bool deserialize_success = true; |
(...skipping 3614 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3862 GetTranslateInfoBarDelegate(tab_contents); | 3863 GetTranslateInfoBarDelegate(tab_contents); |
3863 | 3864 |
3864 TabLanguageDeterminedObserver* observer = new TabLanguageDeterminedObserver( | 3865 TabLanguageDeterminedObserver* observer = new TabLanguageDeterminedObserver( |
3865 this, reply_message, tab_contents, translate_bar); | 3866 this, reply_message, tab_contents, translate_bar); |
3866 // If the language for the page hasn't been loaded yet, then just make | 3867 // If the language for the page hasn't been loaded yet, then just make |
3867 // the observer, otherwise call observe directly. | 3868 // the observer, otherwise call observe directly. |
3868 TranslateTabHelper* helper = TabContentsWrapper::GetCurrentWrapperForContents( | 3869 TranslateTabHelper* helper = TabContentsWrapper::GetCurrentWrapperForContents( |
3869 tab_contents)->translate_tab_helper(); | 3870 tab_contents)->translate_tab_helper(); |
3870 std::string language = helper->language_state().original_language(); | 3871 std::string language = helper->language_state().original_language(); |
3871 if (!language.empty()) { | 3872 if (!language.empty()) { |
3872 observer->Observe(NotificationType::TAB_LANGUAGE_DETERMINED, | 3873 observer->Observe(chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED, |
3873 Source<TabContents>(tab_contents), | 3874 Source<TabContents>(tab_contents), |
3874 Details<std::string>(&language)); | 3875 Details<std::string>(&language)); |
3875 } | 3876 } |
3876 } | 3877 } |
3877 | 3878 |
3878 // See SelectTranslateOption() in chrome/test/pyautolib/pyauto.py for sample | 3879 // See SelectTranslateOption() in chrome/test/pyautolib/pyauto.py for sample |
3879 // json input. | 3880 // json input. |
3880 // Sample json output: {} | 3881 // Sample json output: {} |
3881 void TestingAutomationProvider::SelectTranslateOption( | 3882 void TestingAutomationProvider::SelectTranslateOption( |
3882 Browser* browser, | 3883 Browser* browser, |
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4374 } | 4375 } |
4375 | 4376 |
4376 TabContents* tab_contents = browser->GetTabContentsAt(tab_index); | 4377 TabContents* tab_contents = browser->GetTabContentsAt(tab_index); |
4377 if (!tab_contents) { | 4378 if (!tab_contents) { |
4378 AutomationJSONReply(this, reply_message).SendError( | 4379 AutomationJSONReply(this, reply_message).SendError( |
4379 StringPrintf("No such tab at index %d", tab_index)); | 4380 StringPrintf("No such tab at index %d", tab_index)); |
4380 return; | 4381 return; |
4381 } | 4382 } |
4382 | 4383 |
4383 new AutofillDisplayedObserver( | 4384 new AutofillDisplayedObserver( |
4384 NotificationType::AUTOFILL_DID_SHOW_SUGGESTIONS, | 4385 chrome::NOTIFICATION_AUTOFILL_DID_SHOW_SUGGESTIONS, |
4385 tab_contents->render_view_host(), this, reply_message); | 4386 tab_contents->render_view_host(), this, reply_message); |
4386 SendWebKeyPressEventAsync(ui::VKEY_DOWN, tab_contents); | 4387 SendWebKeyPressEventAsync(ui::VKEY_DOWN, tab_contents); |
4387 } | 4388 } |
4388 | 4389 |
4389 void TestingAutomationProvider::AutofillHighlightSuggestion( | 4390 void TestingAutomationProvider::AutofillHighlightSuggestion( |
4390 Browser* browser, | 4391 Browser* browser, |
4391 DictionaryValue* args, | 4392 DictionaryValue* args, |
4392 IPC::Message* reply_message) { | 4393 IPC::Message* reply_message) { |
4393 int tab_index; | 4394 int tab_index; |
4394 if (!args->GetInteger("tab_index", &tab_index)) { | 4395 if (!args->GetInteger("tab_index", &tab_index)) { |
(...skipping 12 matching lines...) Expand all Loading... |
4407 std::string direction; | 4408 std::string direction; |
4408 if (!args->GetString("direction", &direction) || (direction != "up" && | 4409 if (!args->GetString("direction", &direction) || (direction != "up" && |
4409 direction != "down")) { | 4410 direction != "down")) { |
4410 AutomationJSONReply(this, reply_message).SendError( | 4411 AutomationJSONReply(this, reply_message).SendError( |
4411 "Must specify a direction of either 'up' or 'down'."); | 4412 "Must specify a direction of either 'up' or 'down'."); |
4412 return; | 4413 return; |
4413 } | 4414 } |
4414 int key_code = (direction == "up") ? ui::VKEY_UP : ui::VKEY_DOWN; | 4415 int key_code = (direction == "up") ? ui::VKEY_UP : ui::VKEY_DOWN; |
4415 | 4416 |
4416 new AutofillDisplayedObserver( | 4417 new AutofillDisplayedObserver( |
4417 NotificationType::AUTOFILL_DID_FILL_FORM_DATA, | 4418 chrome::NOTIFICATION_AUTOFILL_DID_FILL_FORM_DATA, |
4418 tab_contents->render_view_host(), this, reply_message); | 4419 tab_contents->render_view_host(), this, reply_message); |
4419 SendWebKeyPressEventAsync(key_code, tab_contents); | 4420 SendWebKeyPressEventAsync(key_code, tab_contents); |
4420 } | 4421 } |
4421 | 4422 |
4422 void TestingAutomationProvider::AutofillAcceptSelection( | 4423 void TestingAutomationProvider::AutofillAcceptSelection( |
4423 Browser* browser, | 4424 Browser* browser, |
4424 DictionaryValue* args, | 4425 DictionaryValue* args, |
4425 IPC::Message* reply_message) { | 4426 IPC::Message* reply_message) { |
4426 int tab_index; | 4427 int tab_index; |
4427 if (!args->GetInteger("tab_index", &tab_index)) { | 4428 if (!args->GetInteger("tab_index", &tab_index)) { |
4428 AutomationJSONReply(this, reply_message).SendError( | 4429 AutomationJSONReply(this, reply_message).SendError( |
4429 "Invalid or missing args"); | 4430 "Invalid or missing args"); |
4430 return; | 4431 return; |
4431 } | 4432 } |
4432 | 4433 |
4433 TabContents* tab_contents = browser->GetTabContentsAt(tab_index); | 4434 TabContents* tab_contents = browser->GetTabContentsAt(tab_index); |
4434 if (!tab_contents) { | 4435 if (!tab_contents) { |
4435 AutomationJSONReply(this, reply_message).SendError( | 4436 AutomationJSONReply(this, reply_message).SendError( |
4436 StringPrintf("No such tab at index %d", tab_index)); | 4437 StringPrintf("No such tab at index %d", tab_index)); |
4437 return; | 4438 return; |
4438 } | 4439 } |
4439 | 4440 |
4440 new AutofillDisplayedObserver( | 4441 new AutofillDisplayedObserver( |
4441 NotificationType::AUTOFILL_DID_FILL_FORM_DATA, | 4442 chrome::NOTIFICATION_AUTOFILL_DID_FILL_FORM_DATA, |
4442 tab_contents->render_view_host(), this, reply_message); | 4443 tab_contents->render_view_host(), this, reply_message); |
4443 SendWebKeyPressEventAsync(ui::VKEY_RETURN, tab_contents); | 4444 SendWebKeyPressEventAsync(ui::VKEY_RETURN, tab_contents); |
4444 } | 4445 } |
4445 | 4446 |
4446 // Sample json output: { "success": true } | 4447 // Sample json output: { "success": true } |
4447 void TestingAutomationProvider::SignInToSync(Browser* browser, | 4448 void TestingAutomationProvider::SignInToSync(Browser* browser, |
4448 DictionaryValue* args, | 4449 DictionaryValue* args, |
4449 IPC::Message* reply_message) { | 4450 IPC::Message* reply_message) { |
4450 AutomationJSONReply reply(this, reply_message); | 4451 AutomationJSONReply reply(this, reply_message); |
4451 std::string username; | 4452 std::string username; |
(...skipping 1597 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6049 IPC::ParamTraits<std::vector<GURL> >::Write(reply_message_, redirects_gurl); | 6050 IPC::ParamTraits<std::vector<GURL> >::Write(reply_message_, redirects_gurl); |
6050 | 6051 |
6051 Send(reply_message_); | 6052 Send(reply_message_); |
6052 redirect_query_ = 0; | 6053 redirect_query_ = 0; |
6053 reply_message_ = NULL; | 6054 reply_message_ = NULL; |
6054 } | 6055 } |
6055 | 6056 |
6056 void TestingAutomationProvider::OnRemoveProvider() { | 6057 void TestingAutomationProvider::OnRemoveProvider() { |
6057 AutomationProviderList::GetInstance()->RemoveProvider(this); | 6058 AutomationProviderList::GetInstance()->RemoveProvider(this); |
6058 } | 6059 } |
OLD | NEW |