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

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

Issue 3191015: GTTF: next batch of automation separation. (Closed)
Patch Set: tryservers Created 10 years, 4 months 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
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/utf_string_conversions.h"
8 #include "chrome/app/chrome_dll_resource.h" 9 #include "chrome/app/chrome_dll_resource.h"
9 #include "chrome/browser/automation/automation_browser_tracker.h" 10 #include "chrome/browser/automation/automation_browser_tracker.h"
10 #include "chrome/browser/automation/automation_provider_list.h" 11 #include "chrome/browser/automation/automation_provider_list.h"
11 #include "chrome/browser/automation/automation_provider_observers.h" 12 #include "chrome/browser/automation/automation_provider_observers.h"
12 #include "chrome/browser/automation/automation_tab_tracker.h" 13 #include "chrome/browser/automation/automation_tab_tracker.h"
14 #include "chrome/browser/automation/automation_window_tracker.h"
15 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/browser_window.h" 16 #include "chrome/browser/browser_window.h"
14 #include "chrome/browser/login_prompt.h" 17 #include "chrome/browser/login_prompt.h"
18 #include "chrome/browser/platform_util.h"
15 #include "chrome/common/chrome_switches.h" 19 #include "chrome/common/chrome_switches.h"
16 #include "chrome/common/net/url_request_context_getter.h" 20 #include "chrome/common/net/url_request_context_getter.h"
17 #include "chrome/common/notification_service.h" 21 #include "chrome/common/notification_service.h"
18 #include "chrome/test/automation/automation_messages.h" 22 #include "chrome/test/automation/automation_messages.h"
19 #include "net/url_request/url_request_context.h" 23 #include "net/url_request/url_request_context.h"
20 24
21 namespace { 25 namespace {
22 26
23 class GetCookiesTask : public Task { 27 class GetCookiesTask : public Task {
24 public: 28 public:
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_GoForward, GoForward) 167 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_GoForward, GoForward)
164 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_Reload, Reload) 168 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_Reload, Reload)
165 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_SetAuth, SetAuth) 169 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_SetAuth, SetAuth)
166 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_CancelAuth, CancelAuth) 170 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_CancelAuth, CancelAuth)
167 IPC_MESSAGE_HANDLER(AutomationMsg_NeedsAuth, NeedsAuth) 171 IPC_MESSAGE_HANDLER(AutomationMsg_NeedsAuth, NeedsAuth)
168 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_RedirectsFrom, 172 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_RedirectsFrom,
169 GetRedirectsFrom) 173 GetRedirectsFrom)
170 IPC_MESSAGE_HANDLER(AutomationMsg_BrowserWindowCount, GetBrowserWindowCount) 174 IPC_MESSAGE_HANDLER(AutomationMsg_BrowserWindowCount, GetBrowserWindowCount)
171 IPC_MESSAGE_HANDLER(AutomationMsg_NormalBrowserWindowCount, 175 IPC_MESSAGE_HANDLER(AutomationMsg_NormalBrowserWindowCount,
172 GetNormalBrowserWindowCount) 176 GetNormalBrowserWindowCount)
177 IPC_MESSAGE_HANDLER(AutomationMsg_BrowserWindow, GetBrowserWindow)
178 IPC_MESSAGE_HANDLER(AutomationMsg_GetBrowserLocale, GetBrowserLocale)
179 IPC_MESSAGE_HANDLER(AutomationMsg_LastActiveBrowserWindow,
180 GetLastActiveBrowserWindow)
181 IPC_MESSAGE_HANDLER(AutomationMsg_ActiveWindow, GetActiveWindow)
182 IPC_MESSAGE_HANDLER(AutomationMsg_FindNormalBrowserWindow,
183 FindNormalBrowserWindow)
184 IPC_MESSAGE_HANDLER(AutomationMsg_IsWindowActive, IsWindowActive)
185 IPC_MESSAGE_HANDLER(AutomationMsg_ActivateWindow, ActivateWindow)
186 IPC_MESSAGE_HANDLER(AutomationMsg_IsWindowMaximized, IsWindowMaximized)
187 IPC_MESSAGE_HANDLER(AutomationMsg_WindowExecuteCommandAsync,
188 ExecuteBrowserCommandAsync)
189 IPC_MESSAGE_HANDLER_DELAY_REPLY(AutomationMsg_WindowExecuteCommand,
190 ExecuteBrowserCommand)
173 191
174 IPC_MESSAGE_UNHANDLED(AutomationProvider::OnMessageReceived(message)); 192 IPC_MESSAGE_UNHANDLED(AutomationProvider::OnMessageReceived(message));
175 IPC_END_MESSAGE_MAP() 193 IPC_END_MESSAGE_MAP()
176 } 194 }
177 195
178 void TestingAutomationProvider::OnChannelError() { 196 void TestingAutomationProvider::OnChannelError() {
179 BrowserList::CloseAllBrowsersAndExit(); 197 BrowserList::CloseAllBrowsersAndExit();
180 AutomationProvider::OnChannelError(); 198 AutomationProvider::OnChannelError();
181 } 199 }
182 200
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 542
525 void TestingAutomationProvider::GetBrowserWindowCount(int* window_count) { 543 void TestingAutomationProvider::GetBrowserWindowCount(int* window_count) {
526 *window_count = static_cast<int>(BrowserList::size()); 544 *window_count = static_cast<int>(BrowserList::size());
527 } 545 }
528 546
529 void TestingAutomationProvider::GetNormalBrowserWindowCount(int* window_count) { 547 void TestingAutomationProvider::GetNormalBrowserWindowCount(int* window_count) {
530 *window_count = static_cast<int>( 548 *window_count = static_cast<int>(
531 BrowserList::GetBrowserCountForType(profile_, Browser::TYPE_NORMAL)); 549 BrowserList::GetBrowserCountForType(profile_, Browser::TYPE_NORMAL));
532 } 550 }
533 551
552 void TestingAutomationProvider::GetBrowserWindow(int index, int* handle) {
553 *handle = 0;
554 if (index >= 0) {
555 BrowserList::const_iterator iter = BrowserList::begin();
556 for (; (iter != BrowserList::end()) && (index > 0); ++iter, --index) {}
557 if (iter != BrowserList::end()) {
558 *handle = browser_tracker_->Add(*iter);
559 }
560 }
561 }
562
563 void TestingAutomationProvider::FindNormalBrowserWindow(int* handle) {
564 *handle = 0;
565 Browser* browser = BrowserList::FindBrowserWithType(profile_,
566 Browser::TYPE_NORMAL,
567 false);
568 if (browser)
569 *handle = browser_tracker_->Add(browser);
570 }
571
572 void TestingAutomationProvider::GetLastActiveBrowserWindow(int* handle) {
573 *handle = 0;
574 Browser* browser = BrowserList::GetLastActive();
575 if (browser)
576 *handle = browser_tracker_->Add(browser);
577 }
578
579 void TestingAutomationProvider::GetActiveWindow(int* handle) {
580 gfx::NativeWindow window =
581 BrowserList::GetLastActive()->window()->GetNativeHandle();
582 *handle = window_tracker_->Add(window);
583 }
584
585 void TestingAutomationProvider::ExecuteBrowserCommandAsync(int handle,
586 int command,
587 bool* success) {
588 *success = false;
589 if (browser_tracker_->ContainsHandle(handle)) {
590 Browser* browser = browser_tracker_->GetResource(handle);
591 if (browser->command_updater()->SupportsCommand(command) &&
592 browser->command_updater()->IsCommandEnabled(command)) {
593 browser->ExecuteCommand(command);
594 *success = true;
595 }
596 }
597 }
598
599 void TestingAutomationProvider::ExecuteBrowserCommand(
600 int handle, int command, IPC::Message* reply_message) {
601 // List of commands which just finish synchronously and don't require
602 // setting up an observer.
603 static const int kSynchronousCommands[] = {
604 IDC_HOME,
605 IDC_SELECT_NEXT_TAB,
606 IDC_SELECT_PREVIOUS_TAB,
607 IDC_SHOW_BOOKMARK_MANAGER,
608 };
609 if (browser_tracker_->ContainsHandle(handle)) {
610 Browser* browser = browser_tracker_->GetResource(handle);
611 if (browser->command_updater()->SupportsCommand(command) &&
612 browser->command_updater()->IsCommandEnabled(command)) {
613 // First check if we can handle the command without using an observer.
614 for (size_t i = 0; i < arraysize(kSynchronousCommands); i++) {
615 if (command == kSynchronousCommands[i]) {
616 browser->ExecuteCommand(command);
617 AutomationMsg_WindowExecuteCommand::WriteReplyParams(reply_message,
618 true);
619 Send(reply_message);
620 return;
621 }
622 }
623
624 // Use an observer if we have one, otherwise fail.
625 if (ExecuteBrowserCommandObserver::CreateAndRegisterObserver(
626 this, browser, command, reply_message)) {
627 browser->ExecuteCommand(command);
628 return;
629 }
630 }
631 }
632 AutomationMsg_WindowExecuteCommand::WriteReplyParams(reply_message, false);
633 Send(reply_message);
634 }
635
636 void TestingAutomationProvider::GetBrowserLocale(string16* locale) {
637 DCHECK(g_browser_process);
638 *locale = ASCIIToUTF16(g_browser_process->GetApplicationLocale());
639 }
640
641 void TestingAutomationProvider::IsWindowActive(int handle,
642 bool* success,
643 bool* is_active) {
644 if (window_tracker_->ContainsHandle(handle)) {
645 *is_active =
646 platform_util::IsWindowActive(window_tracker_->GetResource(handle));
647 *success = true;
648 } else {
649 *success = false;
650 *is_active = false;
651 }
652 }
653
534 // TODO(brettw) change this to accept GURLs when history supports it 654 // TODO(brettw) change this to accept GURLs when history supports it
535 void TestingAutomationProvider::OnRedirectQueryComplete( 655 void TestingAutomationProvider::OnRedirectQueryComplete(
536 HistoryService::Handle request_handle, 656 HistoryService::Handle request_handle,
537 GURL from_url, 657 GURL from_url,
538 bool success, 658 bool success,
539 history::RedirectList* redirects) { 659 history::RedirectList* redirects) {
540 DCHECK(request_handle == redirect_query_); 660 DCHECK(request_handle == redirect_query_);
541 DCHECK(reply_message_ != NULL); 661 DCHECK(reply_message_ != NULL);
542 662
543 std::vector<GURL> redirects_gurl; 663 std::vector<GURL> redirects_gurl;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 DCHECK(type == NotificationType::SESSION_END); 696 DCHECK(type == NotificationType::SESSION_END);
577 // OnBrowserRemoving does a ReleaseLater. When session end is received we exit 697 // OnBrowserRemoving does a ReleaseLater. When session end is received we exit
578 // before the task runs resulting in this object not being deleted. This 698 // before the task runs resulting in this object not being deleted. This
579 // Release balance out the Release scheduled by OnBrowserRemoving. 699 // Release balance out the Release scheduled by OnBrowserRemoving.
580 Release(); 700 Release();
581 } 701 }
582 702
583 void TestingAutomationProvider::OnRemoveProvider() { 703 void TestingAutomationProvider::OnRemoveProvider() {
584 AutomationProviderList::GetInstance()->RemoveProvider(this); 704 AutomationProviderList::GetInstance()->RemoveProvider(this);
585 } 705 }
OLDNEW
« no previous file with comments | « chrome/browser/automation/testing_automation_provider.h ('k') | chrome/browser/automation/testing_automation_provider_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698