Chromium Code Reviews| Index: chrome/browser/autofill/autofill_popup_view_browsertest.cc |
| diff --git a/chrome/browser/autofill/autofill_popup_view_browsertest.cc b/chrome/browser/autofill/autofill_popup_view_browsertest.cc |
| index 5dda01ad5ab670800ef698a80b47c5bf58f6f3ad..11e7c1c0eac0fe104f66ec616c7639cc77266c5f 100644 |
| --- a/chrome/browser/autofill/autofill_popup_view_browsertest.cc |
| +++ b/chrome/browser/autofill/autofill_popup_view_browsertest.cc |
| @@ -5,6 +5,7 @@ |
| #include "chrome/browser/autofill/autofill_popup_view.h" |
| #include "base/memory/scoped_ptr.h" |
| +#include "chrome/browser/autofill/autofill_external_delegate_test.h" |
| #include "chrome/browser/ui/browser.h" |
| #include "chrome/test/base/ui_test_utils.h" |
| #include "content/public/browser/navigation_controller.h" |
| @@ -18,38 +19,76 @@ |
| #include "testing/gtest/include/gtest/gtest.h" |
| using ::testing::AtLeast; |
| +using testing::_; |
| + |
| +namespace { |
| + |
| +class MockAutofillExternalDelegate : public AutofillExternalDelegateTest { |
| + public: |
| + MockAutofillExternalDelegate( |
| + TabContentsWrapper* wrapper, AutofillManager* autofill_manager) : |
| + AutofillExternalDelegateTest(wrapper, autofill_manager) {} |
| + ~MockAutofillExternalDelegate() {} |
| + |
| + virtual void SelectAutofillSuggestionAtIndex(int unique_id, int list_index) |
| + OVERRIDE {} |
| +}; |
| class TestAutofillPopupView : public AutofillPopupView { |
| public: |
| - explicit TestAutofillPopupView(content::WebContents* web_contents) |
| - : AutofillPopupView(web_contents) {} |
| + explicit TestAutofillPopupView( |
| + content::WebContents* web_contents, |
| + AutofillExternalDelegate* autofill_external_delegate) |
| + : AutofillPopupView(web_contents, autofill_external_delegate) {} |
| virtual ~TestAutofillPopupView() {} |
| MOCK_METHOD0(Hide, void()); |
| + MOCK_METHOD1(InvalidateRow, void(size_t)); |
| + |
| + void SetSelectedLine(size_t selected_line) { |
| + AutofillPopupView::SetSelectedLine(selected_line); |
| + } |
| + |
| + protected: |
| virtual void ShowInternal() OVERRIDE {} |
| + |
| + virtual void HideInternal() OVERRIDE {} |
| }; |
| +} // namespace |
| + |
| class AutofillPopupViewBrowserTest : public InProcessBrowserTest { |
| public: |
| AutofillPopupViewBrowserTest() {} |
| virtual ~AutofillPopupViewBrowserTest() {} |
| + virtual void SetUpOnMainThread() OVERRIDE { |
| + web_contents_ = browser()->GetSelectedWebContents(); |
| + ASSERT_TRUE(web_contents_ != NULL); |
| + |
| + autofill_external_delegate_.reset( |
| + new MockAutofillExternalDelegate(NULL, NULL)); |
| + |
| + autofill_popup_view_.reset(new TestAutofillPopupView( |
| + web_contents_, |
| + autofill_external_delegate_.get())); |
| + } |
| + |
| protected: |
| + content::WebContents* web_contents_; |
| scoped_ptr<TestAutofillPopupView> autofill_popup_view_; |
| + // Make this just a member |
|
Ilya Sherman
2012/02/07 23:35:55
nit: Is this meant as a TODO?
csharp
2012/02/08 16:11:16
I had make this change before uploading, I must ha
|
| + scoped_ptr<AutofillExternalDelegateTest> autofill_external_delegate_; |
| }; |
| -IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, SwitchTabAndHideAutofillPopup) { |
| - content::WebContents* web_contents = browser()->GetSelectedWebContents(); |
| - TestAutofillPopupView autofill_popup_view(web_contents); |
| - |
| - // Using AtLeast here because current Hide is called once on Linux and Mac, |
| - // and three times on Windows and ChromeOS. http://crbug.com/109269 |
| - EXPECT_CALL(autofill_popup_view, Hide()).Times(AtLeast(1)); |
| +IN_PROC_BROWSER_TEST_F(AutofillPopupViewBrowserTest, |
| + SwitchTabAndHideAutofillPopup) { |
| + EXPECT_CALL(*autofill_popup_view_, Hide()).Times(AtLeast(1)); |
| ui_test_utils::WindowedNotificationObserver observer( |
| content::NOTIFICATION_WEB_CONTENTS_HIDDEN, |
| - content::Source<content::WebContents>(web_contents)); |
| + content::Source<content::WebContents>(web_contents_)); |
| browser()->AddSelectedTabWithURL(GURL(chrome::kAboutBlankURL), |
| content::PAGE_TRANSITION_START_PAGE); |
| observer.Wait(); |
| @@ -57,16 +96,14 @@ IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, SwitchTabAndHideAutofillPopup) { |
| // The mock verifies that the call was made. |
| } |
| -IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, |
| +IN_PROC_BROWSER_TEST_F(AutofillPopupViewBrowserTest, |
| TestPageNavigationHidingAutofillPopup) { |
| - content::WebContents* web_contents = browser()->GetSelectedWebContents(); |
| - TestAutofillPopupView autofill_popup_view(web_contents); |
| - EXPECT_CALL(autofill_popup_view, Hide()); |
| + EXPECT_CALL(*autofill_popup_view_, Hide()).Times(AtLeast(1)); |
| ui_test_utils::WindowedNotificationObserver observer( |
| content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
| content::Source<content::NavigationController>( |
| - &(web_contents->GetController()))); |
| + &(web_contents_->GetController()))); |
| browser()->OpenURL(content::OpenURLParams( |
| GURL(chrome::kAboutBlankURL), content::Referrer(), |
| CURRENT_TAB, content::PAGE_TRANSITION_TYPED, false)); |
| @@ -77,3 +114,27 @@ IN_PROC_BROWSER_TEST_F(InProcessBrowserTest, |
| // The mock verifies that the call was made. |
| } |
| + |
| +IN_PROC_BROWSER_TEST_F(AutofillPopupViewBrowserTest, |
| + SetSelectedAutofillLineAndCallInvalidate) { |
| + std::vector<string16> autofill_values; |
| + autofill_values.push_back(string16()); |
| + std::vector<int> autofill_ids; |
| + autofill_ids.push_back(0); |
| + autofill_popup_view_->Show( |
| + autofill_values, autofill_values, autofill_values, autofill_ids, 0); |
| + |
| + // Make sure that when a new line is selected, it is invalidated so it can |
| + // be updated to show it is selected. |
| + int selected_line = 0; |
| + EXPECT_CALL(*autofill_popup_view_, InvalidateRow(selected_line)); |
| + autofill_popup_view_->SetSelectedLine(selected_line); |
| + |
| + // Ensure that the row isn't invalidated if it didn't change. |
| + EXPECT_CALL(*autofill_popup_view_, InvalidateRow(selected_line)).Times(0); |
| + autofill_popup_view_->SetSelectedLine(selected_line); |
| + |
| + // Change back to no selection. |
| + EXPECT_CALL(*autofill_popup_view_, InvalidateRow(selected_line)); |
| + autofill_popup_view_->SetSelectedLine(-1); |
| +} |