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..0e88bf7c6d2cef0656664340a014a3c4e05e7559 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_unittest.h" |
| #include "chrome/browser/ui/browser.h" |
| #include "chrome/test/base/ui_test_utils.h" |
| #include "content/public/browser/navigation_controller.h" |
| @@ -18,16 +19,25 @@ |
| #include "testing/gtest/include/gtest/gtest.h" |
| using ::testing::AtLeast; |
| +using testing::_; |
| 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_METHOD0(HideInternal, void()); |
| virtual void ShowInternal() OVERRIDE {} |
| + |
| + MOCK_METHOD1(InvalidateRow, void(size_t)); |
| + |
| + void SetSelectedLine(size_t selected_line) { |
| + AutofillPopupView::SetSelectedLine(selected_line); |
| + } |
|
Ilya Sherman
2012/02/04 04:10:52
nit: Is it not ok to just call AutofillPopupView::
csharp
2012/02/07 22:30:58
Nope, because it is a protected member.
|
| }; |
|
Ilya Sherman
2012/02/04 04:10:52
nit: Can this class be moved into an anonymous nam
csharp
2012/02/07 22:30:58
Done.
|
| class AutofillPopupViewBrowserTest : public InProcessBrowserTest { |
| @@ -35,21 +45,31 @@ class AutofillPopupViewBrowserTest : public InProcessBrowserTest { |
| AutofillPopupViewBrowserTest() {} |
| virtual ~AutofillPopupViewBrowserTest() {} |
| + virtual void SetUpOnMainThread() OVERRIDE{ |
|
Ilya Sherman
2012/02/04 04:10:52
nit: "OVERRIDE{" -> "OVERRIDE {"
csharp
2012/02/07 22:30:58
Done.
|
| + 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_; |
| + scoped_ptr<MockAutofillExternalDelegate> 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_, HideInternal()).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 +77,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_, HideInternal()).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 +95,26 @@ 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_value; |
|
Ilya Sherman
2012/02/04 04:10:52
nit: Since this is a vector, let's call it |autofi
csharp
2012/02/07 22:30:58
Done.
|
| + autofill_value.push_back(string16()); |
| + std::vector<int> autofill_id; |
| + autofill_id.push_back(0); |
| + autofill_popup_view_->Show( |
| + autofill_value, autofill_value, autofill_value, autofill_id, 0); |
| + |
| + // Make sure that when a new line is selected, it is invalidated so it can |
| + // be updated so so it is selected. |
|
Ilya Sherman
2012/02/04 04:10:52
nit: "so so" -> "to show"?
csharp
2012/02/07 22:30:58
Done.
|
| + 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. |
|
Ilya Sherman
2012/02/04 04:10:52
If you want the test to actually fail if this does
csharp
2012/02/07 22:30:58
Done.
|
| + autofill_popup_view_->SetSelectedLine(selected_line); |
| + |
| + // Change back to no selection. |
| + EXPECT_CALL(*autofill_popup_view_, InvalidateRow(selected_line)); |
| + autofill_popup_view_->SetSelectedLine(-1); |
| +} |