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

Unified Diff: chrome/browser/autofill/autofill_popup_view_browsertest.cc

Issue 9235072: Adding Mouse Support for new GTK Autofill (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Responding to comments Created 8 years, 10 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 side-by-side diff with in-line comments
Download patch
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);
+}

Powered by Google App Engine
This is Rietveld 408576698