diff options
author | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-07 11:49:08 +0000 |
---|---|---|
committer | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-07 11:49:08 +0000 |
commit | 585b6bdeaf4104d26311f09dbb99f5085b5becb6 (patch) | |
tree | 737e492a12c1577ed730952080160fa07304fb12 | |
parent | 88e71dc17b86efc2f4d70dee9a1bb4a71f86adc9 (diff) | |
download | chromium_src-585b6bdeaf4104d26311f09dbb99f5085b5becb6.zip chromium_src-585b6bdeaf4104d26311f09dbb99f5085b5becb6.tar.gz chromium_src-585b6bdeaf4104d26311f09dbb99f5085b5becb6.tar.bz2 |
Add AutomationMsg_WaitForDownloadShelfVisibilityChange and use it in UITestBase for the download tests.
This should decrease flakiness of download tests.
TEST=DownloadTest.*, especially DownloadTest.[Dont]CloseNewTab*
BUG=43066
Review URL: http://codereview.chromium.org/1933005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46681 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/automation/automation_provider.cc | 35 | ||||
-rw-r--r-- | chrome/browser/automation/automation_provider.h | 18 | ||||
-rw-r--r-- | chrome/browser/automation/automation_provider_observers.cc | 37 | ||||
-rw-r--r-- | chrome/browser/automation/automation_provider_observers.h | 26 | ||||
-rw-r--r-- | chrome/browser/browser.cc | 5 | ||||
-rw-r--r-- | chrome/browser/browser_encoding_uitest.cc | 4 | ||||
-rw-r--r-- | chrome/browser/download/download_uitest.cc | 25 | ||||
-rw-r--r-- | chrome/browser/download/save_page_uitest.cc | 2 | ||||
-rw-r--r-- | chrome/common/notification_type.h | 6 | ||||
-rw-r--r-- | chrome/test/automation/automation_messages_internal.h | 7 | ||||
-rw-r--r-- | chrome/test/automation/browser_proxy.cc | 13 | ||||
-rw-r--r-- | chrome/test/automation/browser_proxy.h | 3 | ||||
-rw-r--r-- | chrome/test/ui/ui_test.cc | 24 | ||||
-rw-r--r-- | chrome/test/ui/ui_test.h | 17 |
14 files changed, 147 insertions, 75 deletions
diff --git a/chrome/browser/automation/automation_provider.cc b/chrome/browser/automation/automation_provider.cc index 76b9b9b..e907d45 100644 --- a/chrome/browser/automation/automation_provider.cc +++ b/chrome/browser/automation/automation_provider.cc @@ -213,11 +213,6 @@ NotificationObserver* AutomationProvider::AddNavigationStatusListener( return observer; } -void AutomationProvider::RemoveNavigationStatusListener( - NotificationObserver* obs) { - notification_observer_list_.RemoveObserver(obs); -} - NotificationObserver* AutomationProvider::AddTabStripObserver( Browser* parent, IPC::Message* reply_message) { @@ -228,7 +223,7 @@ NotificationObserver* AutomationProvider::AddTabStripObserver( return observer; } -void AutomationProvider::RemoveTabStripObserver(NotificationObserver* obs) { +void AutomationProvider::RemoveObserver(NotificationObserver* obs) { notification_observer_list_.RemoveObserver(obs); } @@ -496,6 +491,9 @@ void AutomationProvider::OnMessageReceived(const IPC::Message& message) { IPC_MESSAGE_HANDLER(AutomationMsg_SetEnableExtensionAutomation, SetEnableExtensionAutomation) #endif + IPC_MESSAGE_HANDLER_DELAY_REPLY( + AutomationMsg_WaitForDownloadShelfVisibilityChange, + WaitForDownloadShelfVisibilityChange) IPC_MESSAGE_HANDLER(AutomationMsg_SetShelfVisibility, SetShelfVisibility) IPC_MESSAGE_HANDLER(AutomationMsg_BlockedPopupCount, GetBlockedPopupCount) IPC_MESSAGE_HANDLER(AutomationMsg_SelectAll, SelectAll) @@ -599,7 +597,7 @@ void AutomationProvider::AppendTab(int handle, const GURL& url, if (append_tab_response < 0) { // The append tab failed. Remove the TabStripObserver if (observer) { - RemoveTabStripObserver(observer); + RemoveObserver(observer); delete observer; } @@ -1591,6 +1589,29 @@ void AutomationProvider::RemoveBookmark(int handle, *success = false; } +void AutomationProvider::WaitForDownloadShelfVisibilityChange( + int browser_handle, + bool visibility, + IPC::Message* reply_message) { + bool success = false; + if (browser_tracker_->ContainsHandle(browser_handle)) { + Browser* browser = browser_tracker_->GetResource(browser_handle); + if (browser->window()->IsDownloadShelfVisible() == visibility) { + success = true; + } else { + notification_observer_list_.AddObserver( + new DownloadShelfVisibilityObserver(this, + browser, + visibility, + reply_message)); + return; + } + } + AutomationMsg_WaitForDownloadShelfVisibilityChange::WriteReplyParams( + reply_message, success); + Send(reply_message); +} + // Sample json input: { "command": "GetHistoryInfo", // "search_text": "some text" } // Refer chrome/test/pyautolib/history_info.py for sample json output. diff --git a/chrome/browser/automation/automation_provider.h b/chrome/browser/automation/automation_provider.h index 83b52e6..9195244 100644 --- a/chrome/browser/automation/automation_provider.h +++ b/chrome/browser/automation/automation_provider.h @@ -79,22 +79,21 @@ class AutomationProvider : public base::RefCounted<AutomationProvider>, // complete, the completed_response object is sent; if the server requires // authentication, we instead send the auth_needed_response object. A pointer // to the added navigation observer is returned. This object should NOT be - // deleted and should be released by calling the corresponding - // RemoveNavigationStatusListener method. + // deleted and should be released by calling the RemoveObserver method. NotificationObserver* AddNavigationStatusListener( NavigationController* tab, IPC::Message* reply_message, int number_of_navigations, bool include_current_navigation); - void RemoveNavigationStatusListener(NotificationObserver* obs); - // Add an observer for the TabStrip. Currently only Tab append is observed. A // navigation listener is created on successful notification of tab append. A // pointer to the added navigation observer is returned. This object should - // NOT be deleted and should be released by calling the corresponding - // RemoveTabStripObserver method. + // NOT be deleted and should be released by calling the RemoveObserver method. NotificationObserver* AddTabStripObserver(Browser* parent, IPC::Message* reply_message); - void RemoveTabStripObserver(NotificationObserver* obs); + + // Remove an observer. The |NotificationObserver| still needs to be deleted + // afterwards. + void RemoveObserver(NotificationObserver* obs); // Get the index of a particular NavigationController object // in the given parent window. This method uses @@ -334,6 +333,11 @@ class AutomationProvider : public base::RefCounted<AutomationProvider>, int64 id, bool* success); + // Wait for the download shelf to appear or disappear. + void WaitForDownloadShelfVisibilityChange(int browser_handle, + bool visibility, + IPC::Message* reply_message); + // Get info about downloads. This includes only ones that have been // registered by the history system. // Uses the JSON interface for input/output. diff --git a/chrome/browser/automation/automation_provider_observers.cc b/chrome/browser/automation/automation_provider_observers.cc index eb8e247..bb706d3 100644 --- a/chrome/browser/automation/automation_provider_observers.cc +++ b/chrome/browser/automation/automation_provider_observers.cc @@ -10,6 +10,7 @@ #include "chrome/app/chrome_dll_resource.h" #include "chrome/browser/automation/automation_provider.h" #include "chrome/browser/bookmarks/bookmark_model.h" +#include "chrome/browser/browser_window.h" #include "chrome/browser/dom_operation_notification_details.h" #include "chrome/browser/extensions/extension_host.h" #include "chrome/browser/extensions/extension_process_manager.h" @@ -159,7 +160,7 @@ NavigationNotificationObserver::~NavigationNotificationObserver() { reply_message_ = NULL; } - automation_->RemoveNavigationStatusListener(this); + automation_->RemoveObserver(this); } void NavigationNotificationObserver::Observe( @@ -234,7 +235,7 @@ void TabStripNotificationObserver::Observe(NotificationType type, ObserveTab(Source<NavigationController>(source).ptr()); // If verified, no need to observe anymore - automation_->RemoveTabStripObserver(this); + automation_->RemoveObserver(this); delete this; } else { NOTREACHED(); @@ -821,7 +822,7 @@ DocumentPrintedNotificationObserver::~DocumentPrintedNotificationObserver() { DCHECK(reply_message_ != NULL); AutomationMsg_PrintNow::WriteReplyParams(reply_message_, success_); automation_->Send(reply_message_); - automation_->RemoveNavigationStatusListener(this); + automation_->RemoveObserver(this); } void DocumentPrintedNotificationObserver::Observe( @@ -907,6 +908,36 @@ void LoginManagerObserver::Observe(NotificationType type, } #endif +DownloadShelfVisibilityObserver::DownloadShelfVisibilityObserver( + AutomationProvider* automation, + Browser* browser, + bool visibility, + IPC::Message* reply_message) + : automation_(automation), + visibility_(visibility), + reply_message_(reply_message) { + registrar_.Add(this, NotificationType::DOWNLOAD_SHELF_VISIBILITY_CHANGED, + Source<Browser>(browser)); +} + +void DownloadShelfVisibilityObserver::Observe( + NotificationType type, + const NotificationSource& source, + const NotificationDetails& details) { + if (type == NotificationType::DOWNLOAD_SHELF_VISIBILITY_CHANGED) { + Browser* browser = Source<Browser>(source).ptr(); + if (browser->window()->IsDownloadShelfVisible() == visibility_) { + AutomationMsg_WaitForDownloadShelfVisibilityChange::WriteReplyParams( + reply_message_, true); + automation_->Send(reply_message_); + automation_->RemoveObserver(this); + delete this; + } + } else { + NOTREACHED(); + } +} + AutomationProviderBookmarkModelObserver::AutomationProviderBookmarkModelObserver( AutomationProvider* provider, IPC::Message* reply_message, diff --git a/chrome/browser/automation/automation_provider_observers.h b/chrome/browser/automation/automation_provider_observers.h index efb01e0..1821d33 100644 --- a/chrome/browser/automation/automation_provider_observers.h +++ b/chrome/browser/automation/automation_provider_observers.h @@ -488,6 +488,28 @@ class LoginManagerObserver : public NotificationObserver { }; #endif +// Waits for the download shelf to appear or disappear +// (depending on |visibility|). +class DownloadShelfVisibilityObserver : public NotificationObserver { + public: + DownloadShelfVisibilityObserver(AutomationProvider* automation, + Browser* browser, + bool visiblity, + IPC::Message* reply_message); + + // NotificationObserver interface. + virtual void Observe(NotificationType type, const NotificationSource& source, + const NotificationDetails& details); + + private: + NotificationRegistrar registrar_; + AutomationProvider* automation_; + bool visibility_; + IPC::Message* reply_message_; + + DISALLOW_COPY_AND_ASSIGN(DownloadShelfVisibilityObserver); +}; + // Waits for the bookmark model to load. class AutomationProviderBookmarkModelObserver : BookmarkModelObserver { public: @@ -536,8 +558,8 @@ class AutomationProviderBookmarkModelObserver : BookmarkModelObserver { // When asked for pending downloads, the DownloadManager places // results in a DownloadManager::Observer. -class AutomationProviderDownloadManagerObserver : - public DownloadManager::Observer { +class AutomationProviderDownloadManagerObserver + : public DownloadManager::Observer { public: AutomationProviderDownloadManagerObserver() : DownloadManager::Observer() {} virtual ~AutomationProviderDownloadManagerObserver() {} diff --git a/chrome/browser/browser.cc b/chrome/browser/browser.cc index 0561187..3ffceda 100644 --- a/chrome/browser/browser.cc +++ b/chrome/browser/browser.cc @@ -2604,6 +2604,11 @@ void Browser::UpdateTargetURL(TabContents* source, const GURL& url) { void Browser::UpdateDownloadShelfVisibility(bool visible) { if (GetStatusBubble()) GetStatusBubble()->UpdateDownloadShelfVisibility(visible); + + NotificationService::current()->Notify( + NotificationType::DOWNLOAD_SHELF_VISIBILITY_CHANGED, + Source<Browser>(this), + NotificationService::NoDetails()); } void Browser::ContentsZoomChange(bool zoom_in) { diff --git a/chrome/browser/browser_encoding_uitest.cc b/chrome/browser/browser_encoding_uitest.cc index 3c0531b..df856c7 100644 --- a/chrome/browser/browser_encoding_uitest.cc +++ b/chrome/browser/browser_encoding_uitest.cc @@ -148,7 +148,7 @@ TEST_F(BrowserEncodingTest, TestOverrideEncoding) { SavePackage::SAVE_AS_COMPLETE_HTML)); scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); ASSERT_TRUE(browser.get()); - EXPECT_TRUE(WaitForDownloadShelfVisible(browser.get())); + EXPECT_TRUE(browser->WaitForDownloadShelfVisibilityChange(true)); FilePath expected_file_name = FilePath().AppendASCII(kOverrideTestDir); expected_file_name = expected_file_name.AppendASCII(kExpectedFileName); CheckFile(full_file_name, expected_file_name, true); @@ -284,7 +284,7 @@ TEST_F(BrowserEncodingTest, TestEncodingAutoDetect) { kTestDatas[i].expected_result); EXPECT_TRUE(tab->SavePage(full_saved_file_name, temp_sub_resource_dir_, SavePackage::SAVE_AS_COMPLETE_HTML)); - EXPECT_TRUE(WaitForDownloadShelfVisible(browser.get())); + EXPECT_TRUE(browser->WaitForDownloadShelfVisibilityChange(true)); CheckFile(full_saved_file_name, expected_result_file_name, true); } } diff --git a/chrome/browser/download/download_uitest.cc b/chrome/browser/download/download_uitest.cc index b8171fa..011a54c 100644 --- a/chrome/browser/download/download_uitest.cc +++ b/chrome/browser/download/download_uitest.cc @@ -112,7 +112,7 @@ class DownloadTest : public UITest { // TODO(tc): check download status text // Make sure the download shelf is showing. - EXPECT_TRUE(WaitForDownloadShelfVisible(window.get())); + EXPECT_TRUE(window->WaitForDownloadShelfVisibilityChange(true)); } FilePath filename; @@ -187,7 +187,7 @@ TEST_F(DownloadTest, FLAKY_DownloadMimeType) { scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); ASSERT_TRUE(browser.get()); - EXPECT_TRUE(WaitForDownloadShelfVisible(browser.get())); + EXPECT_TRUE(browser->WaitForDownloadShelfVisibilityChange(true)); } // Access a file with a viewable mime-type, verify that a download @@ -213,7 +213,7 @@ TEST_F(DownloadTest, FLAKY_NoDownload) { scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); ASSERT_TRUE(browser.get()); - EXPECT_FALSE(WaitForDownloadShelfVisible(browser.get())); + EXPECT_FALSE(browser->WaitForDownloadShelfVisibilityChange(true)); } // Download a 0-size file with a content-disposition header, verify that the @@ -233,7 +233,7 @@ TEST_F(DownloadTest, FLAKY_ContentDisposition) { // Ensure the download shelf is visible on the window. scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); ASSERT_TRUE(browser.get()); - EXPECT_TRUE(WaitForDownloadShelfVisible(browser.get())); + EXPECT_TRUE(browser->WaitForDownloadShelfVisibilityChange(true)); } // Test that the download shelf is per-window by starting a download in one @@ -254,7 +254,7 @@ TEST_F(DownloadTest, FLAKY_PerWindowShelf) { // Ensure the download shelf is visible on the window. scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0)); ASSERT_TRUE(browser.get()); - EXPECT_TRUE(WaitForDownloadShelfVisible(browser.get())); + EXPECT_TRUE(browser->WaitForDownloadShelfVisibilityChange(true)); // Open a second tab ASSERT_TRUE(browser->AppendTab(GURL())); @@ -262,7 +262,7 @@ TEST_F(DownloadTest, FLAKY_PerWindowShelf) { // Hide shelf EXPECT_TRUE(browser->SetShelfVisible(false)); - EXPECT_TRUE(WaitForDownloadShelfInvisible(browser.get())); + EXPECT_TRUE(browser->WaitForDownloadShelfVisibilityChange(false)); // Go to first tab EXPECT_TRUE(browser->ActivateTab(0)); @@ -336,7 +336,7 @@ TEST_F(DownloadTest, FLAKY_IncognitoDownload) { ASSERT_TRUE(tab->NavigateToURL(URLRequestMockHTTPJob::GetMockUrl(file))); // Verify that the download shelf is showing for the Incognito window. - EXPECT_TRUE(WaitForDownloadShelfVisible(incognito.get())); + EXPECT_TRUE(incognito->WaitForDownloadShelfVisibilityChange(true)); // Close the Incognito window and don't crash. ASSERT_TRUE(incognito->RunCommand(IDC_CLOSE_WINDOW)); @@ -385,8 +385,9 @@ TEST_F(DownloadTest, FLAKY_CloseNewTab1) { ASSERT_TRUE(tab_proxy->NavigateToURLAsyncWithDisposition( URLRequestMockHTTPJob::GetMockUrl(file), NEW_BACKGROUND_TAB)); + // When the download starts, we should still have one tab. - ASSERT_TRUE(WaitForDownloadShelfVisible(browser)); + ASSERT_TRUE(browser->WaitForDownloadShelfVisibilityChange(true)); EXPECT_EQ(1, GetTabCount()); CheckDownload(file); @@ -410,7 +411,7 @@ TEST_F(DownloadTest, FLAKY_DontCloseNewTab2) { FilePath file(FILE_PATH_LITERAL("download-test1.lib")); ASSERT_TRUE(tab_proxy->NavigateToURLAsync(GURL("javascript:openNew()"))); - ASSERT_TRUE(WaitForDownloadShelfVisible(browser)); + ASSERT_TRUE(browser->WaitForDownloadShelfVisibilityChange(true)); EXPECT_EQ(2, GetTabCount()); CheckDownload(file); @@ -437,7 +438,7 @@ TEST_F(DownloadTest, FLAKY_DontCloseNewTab3) { ASSERT_TRUE(tab_proxy->NavigateToURLAsync( URLRequestMockHTTPJob::GetMockUrl(file))); - ASSERT_TRUE(WaitForDownloadShelfVisible(browser)); + ASSERT_TRUE(browser->WaitForDownloadShelfVisibilityChange(true)); EXPECT_EQ(2, GetTabCount()); CheckDownload(file); @@ -461,7 +462,7 @@ TEST_F(DownloadTest, FLAKY_CloseNewTab2) { FilePath file(FILE_PATH_LITERAL("download-test1.lib")); ASSERT_TRUE(tab_proxy->NavigateToURLAsync(GURL("javascript:openNew()"))); - ASSERT_TRUE(WaitForDownloadShelfVisible(browser)); + ASSERT_TRUE(browser->WaitForDownloadShelfVisibilityChange(true)); EXPECT_EQ(1, GetTabCount()); CheckDownload(file); @@ -486,7 +487,7 @@ TEST_F(DownloadTest, FLAKY_CloseNewTab3) { ASSERT_TRUE(tab_proxy->NavigateToURLAsync( GURL("javascript:document.getElementById('form').submit()"))); - ASSERT_TRUE(WaitForDownloadShelfVisible(browser)); + ASSERT_TRUE(browser->WaitForDownloadShelfVisibilityChange(true)); EXPECT_EQ(1, GetTabCount()); CheckDownload(file); diff --git a/chrome/browser/download/save_page_uitest.cc b/chrome/browser/download/save_page_uitest.cc index 07fd78c..c9de08b 100644 --- a/chrome/browser/download/save_page_uitest.cc +++ b/chrome/browser/download/save_page_uitest.cc @@ -84,7 +84,7 @@ TEST_F(SavePageTest, CleanFilenameFromPageTitle) { ASSERT_TRUE(browser.get()); automation()->SavePackageShouldPromptUser(false); EXPECT_TRUE(browser->RunCommandAsync(IDC_SAVE_PAGE)); - EXPECT_TRUE(WaitForDownloadShelfVisible(browser.get())); + EXPECT_TRUE(browser->WaitForDownloadShelfVisibilityChange(true)); automation()->SavePackageShouldPromptUser(true); CheckFile(full_file_name, file_name); diff --git a/chrome/common/notification_type.h b/chrome/common/notification_type.h index d8b46b4..51573a7 100644 --- a/chrome/common/notification_type.h +++ b/chrome/common/notification_type.h @@ -946,6 +946,12 @@ class NotificationType { // are a ChromeCookieDetails object. COOKIE_CHANGED, + // Downloads --------------------------------------------------------------- + + // Sent when the download shelf appears or disappears. The source is the + // Browser object. + DOWNLOAD_SHELF_VISIBILITY_CHANGED, + #if defined(OS_CHROMEOS) // Sent when a chromium os user logs in. LOGIN_USER_CHANGED, diff --git a/chrome/test/automation/automation_messages_internal.h b/chrome/test/automation/automation_messages_internal.h index 77f9d56..9f96c5a 100644 --- a/chrome/test/automation/automation_messages_internal.h +++ b/chrome/test/automation/automation_messages_internal.h @@ -1396,4 +1396,11 @@ IPC_BEGIN_MESSAGES(Automation) IPC_SYNC_MESSAGE_ROUTED3_1(AutomationMsg_DeleteCookie, GURL, std::string, int, bool) + // Waits for the download shelf to appear or disappear (depending on + // |visibility|) and sets |success| to true on success. + IPC_SYNC_MESSAGE_ROUTED2_1(AutomationMsg_WaitForDownloadShelfVisibilityChange, + int /* browser handle */, + bool /* visibility */, + bool /* success */) + IPC_END_MESSAGES(Automation) diff --git a/chrome/test/automation/browser_proxy.cc b/chrome/test/automation/browser_proxy.cc index 1b275d8..6456cec 100644 --- a/chrome/test/automation/browser_proxy.cc +++ b/chrome/test/automation/browser_proxy.cc @@ -398,6 +398,19 @@ bool BrowserProxy::SetShelfVisible(bool is_visible) { is_visible)); } +bool BrowserProxy::WaitForDownloadShelfVisibilityChange(bool visibility) { + if (!is_valid()) + return false; + + bool result = false; + + if (!sender_->Send(new AutomationMsg_WaitForDownloadShelfVisibilityChange( + 0, handle_, visibility, &result))) + return false; + + return result; +} + bool BrowserProxy::SetIntPreference(const std::wstring& name, int value) { if (!is_valid()) return false; diff --git a/chrome/test/automation/browser_proxy.h b/chrome/test/automation/browser_proxy.h index d0bb4d0..198004a 100644 --- a/chrome/test/automation/browser_proxy.h +++ b/chrome/test/automation/browser_proxy.h @@ -178,6 +178,9 @@ class BrowserProxy : public AutomationResourceProxy { // Shows or hides the download shelf. bool SetShelfVisible(bool is_visible) WARN_UNUSED_RESULT; + // Waits for the download shelf to appear or disappear. + bool WaitForDownloadShelfVisibilityChange(bool visibility) WARN_UNUSED_RESULT; + // Sets the int value of the specified preference. bool SetIntPreference(const std::wstring& name, int value) WARN_UNUSED_RESULT; diff --git a/chrome/test/ui/ui_test.cc b/chrome/test/ui/ui_test.cc index d956478..a0e7f26 100644 --- a/chrome/test/ui/ui_test.cc +++ b/chrome/test/ui/ui_test.cc @@ -613,30 +613,6 @@ void UITestBase::NavigateToURLBlockUntilNavigationsComplete( url, number_of_navigations)) << url.spec(); } -bool UITestBase::WaitForDownloadShelfVisible(BrowserProxy* browser) { - return WaitForDownloadShelfVisibilityChange(browser, true); -} - -bool UITestBase::WaitForDownloadShelfInvisible(BrowserProxy* browser) { - return WaitForDownloadShelfVisibilityChange(browser, false); -} - -bool UITestBase::WaitForDownloadShelfVisibilityChange(BrowserProxy* browser, - bool wait_for_open) { - const int kCycles = 10; - for (int i = 0; i < kCycles; i++) { - // Give it a chance to catch up. - PlatformThread::Sleep(sleep_timeout_ms() / kCycles); - - bool visible = !wait_for_open; - if (!browser->IsShelfVisible(&visible)) - continue; - if (visible == wait_for_open) - return true; // Got the download shelf. - } - return false; -} - bool UITestBase::WaitForFindWindowVisibilityChange(BrowserProxy* browser, bool wait_for_open) { const int kCycles = 10; diff --git a/chrome/test/ui/ui_test.h b/chrome/test/ui/ui_test.h index 9414808..3aadfac 100644 --- a/chrome/test/ui/ui_test.h +++ b/chrome/test/ui/ui_test.h @@ -191,23 +191,6 @@ class UITestBase { // assert that the tab count is valid at the end of the wait. void WaitUntilTabCount(int tab_count); - // Checks whether the download shelf is visible in the current browser, giving - // it a chance to appear (we don't know the exact timing) while finishing as - // soon as possible. - bool WaitForDownloadShelfVisible(BrowserProxy* browser); - - // Checks whether the download shelf is invisible in the current browser, - // giving it a chance to appear (we don't know the exact timing) while - // finishing as soon as possible. - bool WaitForDownloadShelfInvisible(BrowserProxy* browser); - - private: - // Waits for download shelf visibility or invisibility. - bool WaitForDownloadShelfVisibilityChange(BrowserProxy* browser, - bool wait_for_open); - - public: - // Waits until the Find window has become fully visible (if |wait_for_open| is // true) or fully hidden (if |wait_for_open| is false). This function can time // out (return false) if the window doesn't appear within a specific time. |