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

Side by Side Diff: chrome/test/ui/ui_test.cc

Issue 113722: Make automation proxy objects to ref_counted. That allows to process async no... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « chrome/test/ui/ui_test.h ('k') | chrome/test/ui/v8_benchmark_uitest.cc » ('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) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 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/test/ui/ui_test.h" 5 #include "chrome/test/ui/ui_test.h"
6 6
7 #include <set> 7 #include <set>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/base_switches.h" 10 #include "base/base_switches.h"
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 } 384 }
385 #else 385 #else
386 // TODO(port): above code is very Windows-specific; we need to 386 // TODO(port): above code is very Windows-specific; we need to
387 // figure out and abstract out how we'll handle finding any existing 387 // figure out and abstract out how we'll handle finding any existing
388 // running process, etc. on other platforms. 388 // running process, etc. on other platforms.
389 NOTIMPLEMENTED(); 389 NOTIMPLEMENTED();
390 #endif 390 #endif
391 } 391 }
392 392
393 void UITest::QuitBrowser() { 393 void UITest::QuitBrowser() {
394 typedef std::vector<BrowserProxy*> BrowserVector; 394 typedef std::vector<scoped_refptr<BrowserProxy> > BrowserVector;
395 395
396 // There's nothing to do here if the browser is not running. 396 // There's nothing to do here if the browser is not running.
397 if (IsBrowserRunning()) { 397 if (IsBrowserRunning()) {
398 automation()->SetFilteredInet(false); 398 automation()->SetFilteredInet(false);
399 BrowserVector browsers; 399 BrowserVector browsers;
400 400
401 // Build up a list of HWNDs; we do this as a separate step so that closing 401 // Build up a list of HWNDs; we do this as a separate step so that closing
402 // the windows doesn't mess up the iteration. 402 // the windows doesn't mess up the iteration.
403 int window_count = 0; 403 int window_count = 0;
404 EXPECT_TRUE(automation()->GetBrowserWindowCount(&window_count)); 404 EXPECT_TRUE(automation()->GetBrowserWindowCount(&window_count));
405 405
406 for (int i = 0; i < window_count; ++i) { 406 for (int i = 0; i < window_count; ++i) {
407 BrowserProxy* browser_proxy = automation()->GetBrowserWindow(i); 407 scoped_refptr<BrowserProxy> browser_proxy =
408 automation()->GetBrowserWindow(i);
408 browsers.push_back(browser_proxy); 409 browsers.push_back(browser_proxy);
409 } 410 }
410 411
411 // This is disabled for now on linux because it causes a crash. See 412 // This is disabled for now on linux because it causes a crash. See
412 // http://crbug.com/12334 413 // http://crbug.com/12334
413 #if !defined(OS_LINUX) 414 #if !defined(OS_LINUX)
414 for (BrowserVector::iterator iter = browsers.begin(); 415 for (BrowserVector::iterator iter = browsers.begin();
415 iter != browsers.end(); ++iter) { 416 iter != browsers.end(); ++iter) {
416 // Use ApplyAccelerator since it doesn't wait 417 // Use ApplyAccelerator since it doesn't wait
417 (*iter)->ApplyAccelerator(IDC_CLOSE_WINDOW); 418 (*iter)->ApplyAccelerator(IDC_CLOSE_WINDOW);
418 delete (*iter);
419 } 419 }
420 #endif 420 #endif
421 421
422 browsers.clear();
423
422 // Now, drop the automation IPC channel so that the automation provider in 424 // Now, drop the automation IPC channel so that the automation provider in
423 // the browser notices and drops its reference to the browser process. 425 // the browser notices and drops its reference to the browser process.
424 server_->Disconnect(); 426 server_->Disconnect();
425 427
426 // Wait for the browser process to quit. It should quit once all tabs have 428 // Wait for the browser process to quit. It should quit once all tabs have
427 // been closed. 429 // been closed.
428 int timeout = 5000; 430 int timeout = 5000;
429 #ifdef WAIT_FOR_DEBUGGER_ON_OPEN 431 #ifdef WAIT_FOR_DEBUGGER_ON_OPEN
430 timeout = 500000; 432 timeout = 500000;
431 #endif 433 #endif
(...skipping 16 matching lines...) Expand all
448 void UITest::CleanupAppProcesses() { 450 void UITest::CleanupAppProcesses() {
449 TerminateAllChromeProcesses(user_data_dir()); 451 TerminateAllChromeProcesses(user_data_dir());
450 452
451 // Suppress spammy failures that seem to be occurring when running 453 // Suppress spammy failures that seem to be occurring when running
452 // the UI tests in single-process mode. 454 // the UI tests in single-process mode.
453 // TODO(jhughes): figure out why this is necessary at all, and fix it 455 // TODO(jhughes): figure out why this is necessary at all, and fix it
454 if (!in_process_renderer_) 456 if (!in_process_renderer_)
455 AssertAppNotRunning(L"Unable to quit all browser processes."); 457 AssertAppNotRunning(L"Unable to quit all browser processes.");
456 } 458 }
457 459
458 TabProxy* UITest::GetActiveTab(int window_index) { 460 scoped_refptr<TabProxy> UITest::GetActiveTab(int window_index) {
459 EXPECT_GE(window_index, 0); 461 EXPECT_GE(window_index, 0);
460 int window_count; 462 int window_count;
461 // Use EXPECT rather than ASSERT here because ASSERT_* returns void. 463 // Use EXPECT rather than ASSERT here because ASSERT_* returns void.
462 EXPECT_TRUE(automation()->GetBrowserWindowCount(&window_count)); 464 EXPECT_TRUE(automation()->GetBrowserWindowCount(&window_count));
463 EXPECT_GT(window_count, window_index); 465 EXPECT_GT(window_count, window_index);
464 scoped_ptr<BrowserProxy> window_proxy(automation()-> 466 scoped_refptr<BrowserProxy> window_proxy(automation()->
465 GetBrowserWindow(window_index)); 467 GetBrowserWindow(window_index));
466 if (!window_proxy.get()) 468 if (!window_proxy.get())
467 return NULL; 469 return NULL;
468 470
469 int active_tab_index = -1; 471 int active_tab_index = -1;
470 EXPECT_TRUE(window_proxy->GetActiveTabIndex(&active_tab_index)); 472 EXPECT_TRUE(window_proxy->GetActiveTabIndex(&active_tab_index));
471 if (active_tab_index == -1) 473 if (active_tab_index == -1)
472 return NULL; 474 return NULL;
473 475
474 return window_proxy->GetTab(active_tab_index); 476 return window_proxy->GetTab(active_tab_index);
475 } 477 }
476 478
479 scoped_refptr<TabProxy> UITest::GetActiveTab() {
480 return GetActiveTab(0);
481 }
482
477 void UITest::NavigateToURLAsync(const GURL& url) { 483 void UITest::NavigateToURLAsync(const GURL& url) {
478 scoped_ptr<TabProxy> tab_proxy(GetActiveTab()); 484 scoped_refptr<TabProxy> tab_proxy(GetActiveTab());
479 ASSERT_TRUE(tab_proxy.get()); 485 ASSERT_TRUE(tab_proxy.get());
480 if (!tab_proxy.get()) 486 if (!tab_proxy.get())
481 return; 487 return;
482 488
483 tab_proxy->NavigateToURLAsync(url); 489 tab_proxy->NavigateToURLAsync(url);
484 } 490 }
485 491
486 void UITest::NavigateToURL(const GURL& url) { 492 void UITest::NavigateToURL(const GURL& url) {
487 scoped_ptr<TabProxy> tab_proxy(GetActiveTab()); 493 scoped_refptr<TabProxy> tab_proxy(GetActiveTab());
488 ASSERT_TRUE(tab_proxy.get()); 494 ASSERT_TRUE(tab_proxy.get());
489 if (!tab_proxy.get()) 495 if (!tab_proxy.get())
490 return; 496 return;
491 497
492 bool is_timeout = true; 498 bool is_timeout = true;
493 ASSERT_TRUE(tab_proxy->NavigateToURLWithTimeout( 499 ASSERT_TRUE(tab_proxy->NavigateToURLWithTimeout(
494 url, command_execution_timeout_ms(), &is_timeout)) << url.spec(); 500 url, command_execution_timeout_ms(), &is_timeout)) << url.spec();
495 ASSERT_FALSE(is_timeout) << url.spec(); 501 ASSERT_FALSE(is_timeout) << url.spec();
496 } 502 }
497 503
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 return true; // Bookmark bar visibility change complete. 548 return true; // Bookmark bar visibility change complete.
543 549
544 // Give it a chance to catch up. 550 // Give it a chance to catch up.
545 PlatformThread::Sleep(sleep_timeout_ms() / kCycles); 551 PlatformThread::Sleep(sleep_timeout_ms() / kCycles);
546 } 552 }
547 return false; 553 return false;
548 } 554 }
549 #endif // defined(OS_WIN) 555 #endif // defined(OS_WIN)
550 556
551 GURL UITest::GetActiveTabURL(int window_index) { 557 GURL UITest::GetActiveTabURL(int window_index) {
552 scoped_ptr<TabProxy> tab_proxy(GetActiveTab(window_index)); 558 scoped_refptr<TabProxy> tab_proxy(GetActiveTab(window_index));
553 if (!tab_proxy.get()) 559 if (!tab_proxy.get())
554 return GURL(); 560 return GURL();
555 561
556 GURL url; 562 GURL url;
557 if (!tab_proxy->GetCurrentURL(&url)) 563 if (!tab_proxy->GetCurrentURL(&url))
558 return GURL(); 564 return GURL();
559 return url; 565 return url;
560 } 566 }
561 567
562 std::wstring UITest::GetActiveTabTitle(int window_index) { 568 std::wstring UITest::GetActiveTabTitle(int window_index) {
563 std::wstring title; 569 std::wstring title;
564 scoped_ptr<TabProxy> tab_proxy(GetActiveTab(window_index)); 570 scoped_refptr<TabProxy> tab_proxy(GetActiveTab(window_index));
565 if (!tab_proxy.get()) 571 if (!tab_proxy.get())
566 return title; 572 return title;
567 573
568 EXPECT_TRUE(tab_proxy->GetTabTitle(&title)); 574 EXPECT_TRUE(tab_proxy->GetTabTitle(&title));
569 return title; 575 return title;
570 } 576 }
571 577
572 int UITest::GetActiveTabIndex(int window_index) { 578 int UITest::GetActiveTabIndex(int window_index) {
573 scoped_ptr<TabProxy> tab_proxy(GetActiveTab(window_index)); 579 scoped_refptr<TabProxy> tab_proxy(GetActiveTab(window_index));
574 if (!tab_proxy.get()) 580 if (!tab_proxy.get())
575 return -1; 581 return -1;
576 582
577 int index; 583 int index;
578 EXPECT_TRUE(tab_proxy->GetTabIndex(&index)); 584 EXPECT_TRUE(tab_proxy->GetTabIndex(&index));
579 return index; 585 return index;
580 } 586 }
581 587
582 bool UITest::IsBrowserRunning() { 588 bool UITest::IsBrowserRunning() {
583 return CrashAwareSleep(0); 589 return CrashAwareSleep(0);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
617 DictionaryValue* UITest::GetDefaultProfilePreferences() { 623 DictionaryValue* UITest::GetDefaultProfilePreferences() {
618 std::wstring path; 624 std::wstring path;
619 PathService::Get(chrome::DIR_USER_DATA, &path); 625 PathService::Get(chrome::DIR_USER_DATA, &path);
620 file_util::AppendToPath(&path, chrome::kNotSignedInProfile); 626 file_util::AppendToPath(&path, chrome::kNotSignedInProfile);
621 file_util::AppendToPath(&path, chrome::kPreferencesFilename); 627 file_util::AppendToPath(&path, chrome::kPreferencesFilename);
622 return LoadDictionaryValueFromPath(FilePath::FromWStringHack(path)); 628 return LoadDictionaryValueFromPath(FilePath::FromWStringHack(path));
623 } 629 }
624 #endif // OS_WIN 630 #endif // OS_WIN
625 631
626 int UITest::GetTabCount() { 632 int UITest::GetTabCount() {
627 scoped_ptr<BrowserProxy> first_window(automation()->GetBrowserWindow(0)); 633 scoped_refptr<BrowserProxy> first_window(automation()->GetBrowserWindow(0));
628 if (!first_window.get()) 634 if (!first_window.get())
629 return 0; 635 return 0;
630 636
631 int result = 0; 637 int result = 0;
632 EXPECT_TRUE(first_window->GetTabCount(&result)); 638 EXPECT_TRUE(first_window->GetTabCount(&result));
633 639
634 return result; 640 return result;
635 } 641 }
636 642
637 bool UITest::WaitUntilCookieValue(TabProxy* tab, 643 bool UITest::WaitUntilCookieValue(TabProxy* tab,
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 void UITest::WaitUntilTabCount(int tab_count) { 727 void UITest::WaitUntilTabCount(int tab_count) {
722 for (int i = 0; i < 10; ++i) { 728 for (int i = 0; i < 10; ++i) {
723 PlatformThread::Sleep(sleep_timeout_ms() / 10); 729 PlatformThread::Sleep(sleep_timeout_ms() / 10);
724 if (GetTabCount() == tab_count) 730 if (GetTabCount() == tab_count)
725 break; 731 break;
726 } 732 }
727 EXPECT_EQ(tab_count, GetTabCount()); 733 EXPECT_EQ(tab_count, GetTabCount());
728 } 734 }
729 735
730 std::wstring UITest::GetDownloadDirectory() { 736 std::wstring UITest::GetDownloadDirectory() {
731 scoped_ptr<TabProxy> tab_proxy(GetActiveTab()); 737 scoped_refptr<TabProxy> tab_proxy(GetActiveTab());
732 if (!tab_proxy.get()) 738 if (!tab_proxy.get())
733 return false; 739 return false;
734 740
735 std::wstring download_directory; 741 std::wstring download_directory;
736 EXPECT_TRUE(tab_proxy->GetDownloadDirectory(&download_directory)); 742 EXPECT_TRUE(tab_proxy->GetDownloadDirectory(&download_directory));
737 return download_directory; 743 return download_directory;
738 } 744 }
739 745
740 void UITest::CloseBrowserAsync(BrowserProxy* browser) const { 746 void UITest::CloseBrowserAsync(BrowserProxy* browser) const {
741 server_->Send( 747 server_->Send(
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
785 // which signals completion of the test. The cookie name is 791 // which signals completion of the test. The cookie name is
786 // a concatenation of the test name and the test id. This allows 792 // a concatenation of the test name and the test id. This allows
787 // us to run multiple tests within a single webpage and test 793 // us to run multiple tests within a single webpage and test
788 // that they all c 794 // that they all c
789 std::string cookie_name = name; 795 std::string cookie_name = name;
790 cookie_name.append("."); 796 cookie_name.append(".");
791 cookie_name.append(id); 797 cookie_name.append(id);
792 cookie_name.append("."); 798 cookie_name.append(".");
793 cookie_name.append(test_complete_cookie); 799 cookie_name.append(test_complete_cookie);
794 800
795 scoped_ptr<TabProxy> tab(GetActiveTab()); 801 scoped_refptr<TabProxy> tab(GetActiveTab());
796 802
797 bool test_result = WaitUntilCookieValue(tab.get(), url, 803 bool test_result = WaitUntilCookieValue(tab.get(), url,
798 cookie_name.c_str(), 804 cookie_name.c_str(),
799 kIntervalMilliSeconds, wait_time, 805 kIntervalMilliSeconds, wait_time,
800 expected_cookie_value.c_str()); 806 expected_cookie_value.c_str());
801 EXPECT_EQ(true, test_result); 807 EXPECT_EQ(true, test_result);
802 } 808 }
803 809
804 void UITest::PrintResult(const std::string& measurement, 810 void UITest::PrintResult(const std::string& measurement,
805 const std::string& modifier, 811 const std::string& modifier,
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
859 } 865 }
860 866
861 bool UITest::EvictFileFromSystemCacheWrapper(const FilePath& path) { 867 bool UITest::EvictFileFromSystemCacheWrapper(const FilePath& path) {
862 for (int i = 0; i < 10; i++) { 868 for (int i = 0; i < 10; i++) {
863 if (file_util::EvictFileFromSystemCache(path)) 869 if (file_util::EvictFileFromSystemCache(path))
864 return true; 870 return true;
865 PlatformThread::Sleep(sleep_timeout_ms() / 10); 871 PlatformThread::Sleep(sleep_timeout_ms() / 10);
866 } 872 }
867 return false; 873 return false;
868 } 874 }
OLDNEW
« no previous file with comments | « chrome/test/ui/ui_test.h ('k') | chrome/test/ui/v8_benchmark_uitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698