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

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

Issue 19820004: Per the Chromium style guide/dos-and-donts doc, don't inline non-"cheap (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 7 years, 5 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
« no previous file with comments | « no previous file | chrome/browser/devtools/devtools_window.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/autofill/autofill_interactive_uitest.cc
===================================================================
--- chrome/browser/autofill/autofill_interactive_uitest.cc (revision 212931)
+++ chrome/browser/autofill/autofill_interactive_uitest.cc (working copy)
@@ -69,92 +69,75 @@
" <input type=\"text\" id=\"phone\"><br>"
"</form>";
+
+// AutofillManagerTestDelegateImpl --------------------------------------------
+
class AutofillManagerTestDelegateImpl
: public autofill::AutofillManagerTestDelegate {
public:
- AutofillManagerTestDelegateImpl() {}
+ AutofillManagerTestDelegateImpl();
+ virtual ~AutofillManagerTestDelegateImpl();
- virtual void DidPreviewFormData() OVERRIDE {
- loop_runner_->Quit();
- }
+ // autofill::AutofillManagerTestDelegate:
+ virtual void DidPreviewFormData() OVERRIDE;
+ virtual void DidFillFormData() OVERRIDE;
+ virtual void DidShowSuggestions() OVERRIDE;
- virtual void DidFillFormData() OVERRIDE {
- loop_runner_->Quit();
- }
+ void Reset();
+ void Wait();
- virtual void DidShowSuggestions() OVERRIDE {
- loop_runner_->Quit();
- }
-
- void Reset() {
- loop_runner_ = new content::MessageLoopRunner();
- }
-
- void Wait() {
- loop_runner_->Run();
- }
-
private:
scoped_refptr<content::MessageLoopRunner> loop_runner_;
DISALLOW_COPY_AND_ASSIGN(AutofillManagerTestDelegateImpl);
};
+AutofillManagerTestDelegateImpl::AutofillManagerTestDelegateImpl() {
+}
+
+AutofillManagerTestDelegateImpl::~AutofillManagerTestDelegateImpl() {
+}
+
+void AutofillManagerTestDelegateImpl::DidPreviewFormData() {
+ loop_runner_->Quit();
+}
+
+void AutofillManagerTestDelegateImpl::DidFillFormData() {
+ loop_runner_->Quit();
+}
+
+void AutofillManagerTestDelegateImpl::DidShowSuggestions() {
+ loop_runner_->Quit();
+}
+
+void AutofillManagerTestDelegateImpl::Reset() {
+ loop_runner_ = new content::MessageLoopRunner();
+}
+
+void AutofillManagerTestDelegateImpl::Wait() {
+ loop_runner_->Run();
+}
+
+
+// WindowedPersonalDataManagerObserver ----------------------------------------
+
class WindowedPersonalDataManagerObserver
: public PersonalDataManagerObserver,
public content::NotificationObserver {
public:
- explicit WindowedPersonalDataManagerObserver(Browser* browser)
- : alerted_(false),
- has_run_message_loop_(false),
- browser_(browser),
- infobar_service_(NULL) {
- PersonalDataManagerFactory::GetForProfile(browser_->profile())->
- AddObserver(this);
- registrar_.Add(this, chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_ADDED,
- content::NotificationService::AllSources());
- }
+ explicit WindowedPersonalDataManagerObserver(Browser* browser);
+ virtual ~WindowedPersonalDataManagerObserver();
- virtual ~WindowedPersonalDataManagerObserver() {
- if (infobar_service_ && infobar_service_->infobar_count() > 0)
- infobar_service_->RemoveInfoBar(infobar_service_->infobar_at(0));
- }
-
- void Wait() {
- if (!alerted_) {
- has_run_message_loop_ = true;
- content::RunMessageLoop();
- }
- PersonalDataManagerFactory::GetForProfile(browser_->profile())->
- RemoveObserver(this);
- }
-
// PersonalDataManagerObserver:
- virtual void OnPersonalDataChanged() OVERRIDE {
- if (has_run_message_loop_) {
- base::MessageLoopForUI::current()->Quit();
- has_run_message_loop_ = false;
- }
- alerted_ = true;
- }
+ virtual void OnPersonalDataChanged() OVERRIDE;
+ virtual void OnInsufficientFormData() OVERRIDE;
- virtual void OnInsufficientFormData() OVERRIDE {
- OnPersonalDataChanged();
- }
-
// content::NotificationObserver:
virtual void Observe(int type,
const content::NotificationSource& source,
- const content::NotificationDetails& details) OVERRIDE {
- // Accept in the infobar.
- infobar_service_ = InfoBarService::FromWebContents(
- browser_->tab_strip_model()->GetActiveWebContents());
- InfoBarDelegate* infobar = infobar_service_->infobar_at(0);
+ const content::NotificationDetails& details) OVERRIDE;
- ConfirmInfoBarDelegate* confirm_infobar =
- infobar->AsConfirmInfoBarDelegate();
- confirm_infobar->Accept();
- }
+ void Wait();
private:
bool alerted_;
@@ -164,27 +147,72 @@
InfoBarService* infobar_service_;
};
+WindowedPersonalDataManagerObserver::WindowedPersonalDataManagerObserver(
+ Browser* browser)
+ : alerted_(false),
+ has_run_message_loop_(false),
+ browser_(browser),
+ infobar_service_(NULL) {
+ PersonalDataManagerFactory::GetForProfile(browser_->profile())->
+ AddObserver(this);
+ registrar_.Add(this, chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_ADDED,
+ content::NotificationService::AllSources());
+}
+
+WindowedPersonalDataManagerObserver::~WindowedPersonalDataManagerObserver() {
+ if (infobar_service_ && infobar_service_->infobar_count() > 0)
+ infobar_service_->RemoveInfoBar(infobar_service_->infobar_at(0));
+}
+
+void WindowedPersonalDataManagerObserver::OnPersonalDataChanged() {
+ if (has_run_message_loop_) {
+ base::MessageLoopForUI::current()->Quit();
+ has_run_message_loop_ = false;
+ }
+ alerted_ = true;
+}
+
+void WindowedPersonalDataManagerObserver::OnInsufficientFormData() {
+ OnPersonalDataChanged();
+}
+
+void WindowedPersonalDataManagerObserver::Observe(
+ int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) {
+ // Accept in the infobar.
+ infobar_service_ = InfoBarService::FromWebContents(
+ browser_->tab_strip_model()->GetActiveWebContents());
+ InfoBarDelegate* infobar = infobar_service_->infobar_at(0);
+
+ ConfirmInfoBarDelegate* confirm_infobar =
+ infobar->AsConfirmInfoBarDelegate();
+ confirm_infobar->Accept();
+}
+
+void WindowedPersonalDataManagerObserver::Wait() {
+ if (!alerted_) {
+ has_run_message_loop_ = true;
+ content::RunMessageLoop();
+ }
+ PersonalDataManagerFactory::GetForProfile(browser_->profile())->
+ RemoveObserver(this);
+}
+
+
+// TestAutofillExternalDelegate -----------------------------------------------
+
class TestAutofillExternalDelegate : public AutofillExternalDelegate {
public:
TestAutofillExternalDelegate(content::WebContents* web_contents,
AutofillManager* autofill_manager,
- AutofillDriver* autofill_driver)
- : AutofillExternalDelegate(web_contents, autofill_manager,
- autofill_driver),
- keyboard_listener_(NULL) {
- }
- virtual ~TestAutofillExternalDelegate() {}
+ AutofillDriver* autofill_driver);
+ virtual ~TestAutofillExternalDelegate();
- virtual void OnPopupShown(content::KeyboardListener* listener) OVERRIDE {
- AutofillExternalDelegate::OnPopupShown(listener);
- keyboard_listener_ = listener;
- }
+ // AutofillExternalDelegate:
+ virtual void OnPopupShown(content::KeyboardListener* listener) OVERRIDE;
+ virtual void OnPopupHidden(content::KeyboardListener* listener) OVERRIDE;
- virtual void OnPopupHidden(content::KeyboardListener* listener) OVERRIDE {
- keyboard_listener_ = NULL;
- AutofillExternalDelegate::OnPopupHidden(listener);
- }
-
content::KeyboardListener* keyboard_listener() {
return keyboard_listener_;
}
@@ -197,141 +225,190 @@
DISALLOW_COPY_AND_ASSIGN(TestAutofillExternalDelegate);
};
+TestAutofillExternalDelegate::TestAutofillExternalDelegate(
+ content::WebContents* web_contents,
+ AutofillManager* autofill_manager,
+ AutofillDriver* autofill_driver)
+ : AutofillExternalDelegate(web_contents, autofill_manager, autofill_driver),
+ keyboard_listener_(NULL) {
+}
+
+TestAutofillExternalDelegate::~TestAutofillExternalDelegate() {
+}
+
+void TestAutofillExternalDelegate::OnPopupShown(
+ content::KeyboardListener* listener) {
+ AutofillExternalDelegate::OnPopupShown(listener);
+ keyboard_listener_ = listener;
+}
+
+void TestAutofillExternalDelegate::OnPopupHidden(
+ content::KeyboardListener* listener) {
+ keyboard_listener_ = NULL;
+ AutofillExternalDelegate::OnPopupHidden(listener);
+}
+
+
+// AutofillInteractiveTest ----------------------------------------------------
+
class AutofillInteractiveTest : public InProcessBrowserTest {
protected:
- AutofillInteractiveTest() {}
+ AutofillInteractiveTest();
- virtual void SetUpOnMainThread() OVERRIDE {
- // Don't want Keychain coming up on Mac.
- test::DisableSystemServices(browser()->profile());
+ // InProcessBrowserTest:
+ virtual void SetUpOnMainThread() OVERRIDE;
+ virtual void CleanUpOnMainThread() OVERRIDE;
- // When testing the native UI, hook up a test external delegate, which
- // allows us to forward keyboard events to the popup directly.
- content::WebContents* web_contents =
- browser()->tab_strip_model()->GetActiveWebContents();
- AutofillDriverImpl* autofill_driver =
- AutofillDriverImpl::FromWebContents(web_contents);
- AutofillManager* autofill_manager = autofill_driver->autofill_manager();
- scoped_ptr<AutofillExternalDelegate> external_delegate(
- new TestAutofillExternalDelegate(web_contents, autofill_manager,
- autofill_driver));
- autofill_driver->SetAutofillExternalDelegate(external_delegate.Pass());
- autofill_manager->SetTestDelegate(&test_delegate_);
- }
+ PersonalDataManager* GetPersonalDataManager();
+ content::RenderViewHost* GetRenderViewHost();
+ TestAutofillExternalDelegate* GetExternalDelegate();
- virtual void CleanUpOnMainThread() OVERRIDE {
- // Make sure to close any showing popups prior to tearing down the UI.
- content::WebContents* web_contents =
- browser()->tab_strip_model()->GetActiveWebContents();
- AutofillManager* autofill_manager =
- AutofillDriverImpl::FromWebContents(web_contents)->autofill_manager();
- autofill_manager->delegate()->HideAutofillPopup();
- }
+ void CreateTestProfile();
+ void ExpectFieldValue(const std::string& field_name,
+ const std::string& expected_value);
+ void FocusFirstNameField();
+ void ExpectFilledTestForm();
+ void SendKeyToPageAndWait(ui::KeyboardCode key);
+ void SendKeyToPopupAndWait(ui::KeyboardCode key);
- PersonalDataManager* personal_data_manager() {
- return PersonalDataManagerFactory::GetForProfile(browser()->profile());
- }
+ AutofillManagerTestDelegateImpl test_delegate_;
+};
- void CreateTestProfile() {
- AutofillProfile profile;
- test::SetProfileInfo(
- &profile, "Milton", "C.", "Waddams",
- "red.swingline@initech.com", "Initech", "4120 Freidrich Lane",
- "Basement", "Austin", "Texas", "78744", "US", "5125551234");
+AutofillInteractiveTest::AutofillInteractiveTest() {
+}
- WindowedPersonalDataManagerObserver observer(browser());
- personal_data_manager()->AddProfile(profile);
+void AutofillInteractiveTest::SetUpOnMainThread() {
+ // Don't want Keychain coming up on Mac.
+ test::DisableSystemServices(browser()->profile());
- // AddProfile is asynchronous. Wait for it to finish before continuing the
- // tests.
- observer.Wait();
- }
+ // When testing the native UI, hook up a test external delegate, which allows
+ // us to forward keyboard events to the popup directly.
+ content::WebContents* web_contents =
+ browser()->tab_strip_model()->GetActiveWebContents();
+ AutofillDriverImpl* autofill_driver =
+ AutofillDriverImpl::FromWebContents(web_contents);
+ AutofillManager* autofill_manager = autofill_driver->autofill_manager();
+ scoped_ptr<AutofillExternalDelegate> external_delegate(
+ new TestAutofillExternalDelegate(web_contents, autofill_manager,
+ autofill_driver));
+ autofill_driver->SetAutofillExternalDelegate(external_delegate.Pass());
+ autofill_manager->SetTestDelegate(&test_delegate_);
+}
- void ExpectFieldValue(const std::string& field_name,
- const std::string& expected_value) {
- std::string value;
- ASSERT_TRUE(content::ExecuteScriptAndExtractString(
- browser()->tab_strip_model()->GetActiveWebContents(),
- "window.domAutomationController.send("
- " document.getElementById('" + field_name + "').value);",
- &value));
- EXPECT_EQ(expected_value, value);
- }
+void AutofillInteractiveTest::CleanUpOnMainThread() {
+ // Make sure to close any showing popups prior to tearing down the UI.
+ content::WebContents* web_contents =
+ browser()->tab_strip_model()->GetActiveWebContents();
+ AutofillManager* autofill_manager =
+ AutofillDriverImpl::FromWebContents(web_contents)->autofill_manager();
+ autofill_manager->delegate()->HideAutofillPopup();
+}
- RenderViewHost* render_view_host() {
- return browser()->tab_strip_model()->GetActiveWebContents()->
- GetRenderViewHost();
- }
+PersonalDataManager* AutofillInteractiveTest::GetPersonalDataManager() {
+ return PersonalDataManagerFactory::GetForProfile(browser()->profile());
+}
- void FocusFirstNameField() {
- LOG(WARNING) << "Clicking on the tab.";
- content::SimulateMouseClick(
- browser()->tab_strip_model()->GetActiveWebContents(),
- 0,
- WebKit::WebMouseEvent::ButtonLeft);
+RenderViewHost* AutofillInteractiveTest::GetRenderViewHost() {
+ return browser()->tab_strip_model()->GetActiveWebContents()->
+ GetRenderViewHost();
+}
- LOG(WARNING) << "Focusing the first name field.";
- bool result = false;
- ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
- render_view_host(),
- "if (document.readyState === 'complete')"
- " document.getElementById('firstname').focus();"
- "else"
- " domAutomationController.send(false);",
- &result));
- ASSERT_TRUE(result);
- }
+TestAutofillExternalDelegate* AutofillInteractiveTest::GetExternalDelegate() {
+ content::WebContents* web_contents =
+ browser()->tab_strip_model()->GetActiveWebContents();
+ AutofillDriverImpl* autofill_driver =
+ AutofillDriverImpl::FromWebContents(web_contents);
+ return static_cast<TestAutofillExternalDelegate*>(
+ autofill_driver->autofill_external_delegate());
+}
- void ExpectFilledTestForm() {
- ExpectFieldValue("firstname", "Milton");
- ExpectFieldValue("lastname", "Waddams");
- ExpectFieldValue("address1", "4120 Freidrich Lane");
- ExpectFieldValue("address2", "Basement");
- ExpectFieldValue("city", "Austin");
- ExpectFieldValue("state", "TX");
- ExpectFieldValue("zip", "78744");
- ExpectFieldValue("country", "US");
- ExpectFieldValue("phone", "5125551234");
- }
+void AutofillInteractiveTest::CreateTestProfile() {
+ AutofillProfile profile;
+ test::SetProfileInfo(
+ &profile, "Milton", "C.", "Waddams",
+ "red.swingline@initech.com", "Initech", "4120 Freidrich Lane",
+ "Basement", "Austin", "Texas", "78744", "US", "5125551234");
- void SendKeyToPageAndWait(ui::KeyboardCode key) {
- test_delegate_.Reset();
- content::SimulateKeyPress(
- browser()->tab_strip_model()->GetActiveWebContents(),
- key, false, false, false, false);
- test_delegate_.Wait();
- }
+ WindowedPersonalDataManagerObserver observer(browser());
+ GetPersonalDataManager()->AddProfile(profile);
- void SendKeyToPopupAndWait(ui::KeyboardCode key) {
- // TODO(isherman): Remove this condition once the WebKit popup UI code is
- // removed.
- if (!external_delegate()) {
- // When testing the WebKit-based UI, route all keys to the page.
- SendKeyToPageAndWait(key);
- return;
- }
+ // AddProfile is asynchronous. Wait for it to finish before continuing the
+ // tests.
+ observer.Wait();
+}
- // When testing the native UI, route popup-targeted key presses via the
- // external delegate.
- content::NativeWebKeyboardEvent event;
- event.windowsKeyCode = key;
- test_delegate_.Reset();
- external_delegate()->keyboard_listener()->HandleKeyPressEvent(event);
- test_delegate_.Wait();
- }
+void AutofillInteractiveTest::ExpectFieldValue(
+ const std::string& field_name,
+ const std::string& expected_value) {
+ std::string value;
+ ASSERT_TRUE(content::ExecuteScriptAndExtractString(
+ browser()->tab_strip_model()->GetActiveWebContents(),
+ "window.domAutomationController.send("
+ " document.getElementById('" + field_name + "').value);",
+ &value));
+ EXPECT_EQ(expected_value, value);
+}
- TestAutofillExternalDelegate* external_delegate() {
- content::WebContents* web_contents =
- browser()->tab_strip_model()->GetActiveWebContents();
- AutofillDriverImpl* autofill_driver =
- AutofillDriverImpl::FromWebContents(web_contents);
- return static_cast<TestAutofillExternalDelegate*>(
- autofill_driver->autofill_external_delegate());
+void AutofillInteractiveTest::FocusFirstNameField() {
+ LOG(WARNING) << "Clicking on the tab.";
+ content::SimulateMouseClick(
+ browser()->tab_strip_model()->GetActiveWebContents(),
+ 0,
+ WebKit::WebMouseEvent::ButtonLeft);
+
+ LOG(WARNING) << "Focusing the first name field.";
+ bool result = false;
+ ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
+ GetRenderViewHost(),
+ "if (document.readyState === 'complete')"
+ " document.getElementById('firstname').focus();"
+ "else"
+ " domAutomationController.send(false);",
+ &result));
+ ASSERT_TRUE(result);
+}
+
+void AutofillInteractiveTest::ExpectFilledTestForm() {
+ ExpectFieldValue("firstname", "Milton");
+ ExpectFieldValue("lastname", "Waddams");
+ ExpectFieldValue("address1", "4120 Freidrich Lane");
+ ExpectFieldValue("address2", "Basement");
+ ExpectFieldValue("city", "Austin");
+ ExpectFieldValue("state", "TX");
+ ExpectFieldValue("zip", "78744");
+ ExpectFieldValue("country", "US");
+ ExpectFieldValue("phone", "5125551234");
+}
+
+void AutofillInteractiveTest::SendKeyToPageAndWait(ui::KeyboardCode key) {
+ test_delegate_.Reset();
+ content::SimulateKeyPress(
+ browser()->tab_strip_model()->GetActiveWebContents(),
+ key, false, false, false, false);
+ test_delegate_.Wait();
+}
+
+void AutofillInteractiveTest::SendKeyToPopupAndWait(ui::KeyboardCode key) {
+ // TODO(isherman): Remove this condition once the WebKit popup UI code is
+ // removed.
+ if (!GetExternalDelegate()) {
+ // When testing the WebKit-based UI, route all keys to the page.
+ SendKeyToPageAndWait(key);
+ return;
}
- AutofillManagerTestDelegateImpl test_delegate_;
-};
+ // When testing the native UI, route popup-targeted key presses via the
+ // external delegate.
+ content::NativeWebKeyboardEvent event;
+ event.windowsKeyCode = key;
+ test_delegate_.Reset();
+ GetExternalDelegate()->keyboard_listener()->HandleKeyPressEvent(event);
+ test_delegate_.Wait();
+}
+
+// Actual tests ---------------------------------------------------------------
+
IN_PROC_BROWSER_TEST_F(AutofillInteractiveTest, DISABLED_AutofillSelectViaTab) {
CreateTestProfile();
« no previous file with comments | « no previous file | chrome/browser/devtools/devtools_window.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698