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

Unified Diff: chrome/renderer/form_manager_unittest.cc

Issue 3150034: GTTF: move tests that use WebKit from unit_tests to browser_tests... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years, 4 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 | « chrome/renderer/form_manager_browsertest.cc ('k') | chrome/renderer/pepper_devices_browsertest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/form_manager_unittest.cc
===================================================================
--- chrome/renderer/form_manager_unittest.cc (revision 57231)
+++ chrome/renderer/form_manager_unittest.cc (working copy)
@@ -1,2456 +0,0 @@
-// Copyright (c) 2010 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "base/string_util.h"
-#include "base/utf_string_conversions.h"
-#include "chrome/renderer/form_manager.h"
-#include "chrome/test/render_view_test.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebDocument.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebElement.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebFormControlElement.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebFormElement.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebInputElement.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebNode.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebString.h"
-#include "third_party/WebKit/WebKit/chromium/public/WebVector.h"
-#include "webkit/glue/form_data.h"
-
-using WebKit::WebDocument;
-using WebKit::WebElement;
-using WebKit::WebFormControlElement;
-using WebKit::WebFormElement;
-using WebKit::WebFrame;
-using WebKit::WebInputElement;
-using WebKit::WebNode;
-using WebKit::WebString;
-using WebKit::WebVector;
-
-using webkit_glue::FormData;
-using webkit_glue::FormField;
-
-namespace {
-
-typedef RenderViewTest FormManagerTest;
-
-TEST_F(FormManagerTest, WebFormElementToFormData) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
- " <INPUT type=\"hidden\" id=\"notvisible\" value=\"apple\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
-
- WebVector<WebFormElement> forms;
- frame->forms(forms);
- ASSERT_EQ(1U, forms.size());
-
- FormData form;
- EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0],
- FormManager::REQUIRE_NONE,
- true,
- &form));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(4U, fields.size());
- EXPECT_TRUE(fields[0].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("John"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[1].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Smith"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[2].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("notvisible"),
- ASCIIToUTF16("apple"),
- ASCIIToUTF16("hidden"),
- 0)));
- EXPECT_TRUE(fields[3].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("reply-send"),
- string16(),
- ASCIIToUTF16("submit"),
- 0)));
-}
-
-TEST_F(FormManagerTest, ExtractForms) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- const FormData& form = forms[0];
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("John"),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Smith"),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[2]);
-}
-
-TEST_F(FormManagerTest, ExtractMultipleForms) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>"
- "<FORM name=\"TestForm2\" action=\"http://zoo.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
- " <INPUT type=\"submit\" name=\"second\" value=\"Submit\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(2U, forms.size());
-
- // First form.
- const FormData& form = forms[0];
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(2U, fields.size());
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("John"),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[1]);
-
- // Second form.
- const FormData& form2 = forms[1];
- EXPECT_EQ(ASCIIToUTF16("TestForm2"), form2.name);
- EXPECT_EQ(GURL(web_frame->url()), form2.origin);
- EXPECT_EQ(GURL("http://zoo.com"), form2.action);
-
- const std::vector<FormField>& fields2 = form2.fields;
- ASSERT_EQ(2U, fields2.size());
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Smith"),
- ASCIIToUTF16("text"),
- 20),
- fields2[0]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("second"),
- ASCIIToUTF16("Submit"),
- ASCIIToUTF16("submit"),
- 0),
- fields2[1]);
-}
-
-TEST_F(FormManagerTest, GetFormsAutocomplete) {
- // Form is not auto-completable due to autocomplete=off.
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\""
- " autocomplete=off>"
- " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- // Verify that we did load the forms.
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- // autocomplete=off and we're requiring autocomplete, so no forms returned.
- forms.clear();
- form_manager.GetForms(FormManager::REQUIRE_AUTOCOMPLETE, &forms);
- ASSERT_EQ(0U, forms.size());
-
- // The firstname element is not auto-completable due to autocomplete=off.
- LoadHTML("<FORM name=\"TestForm\" action=\"http://abc.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\" value=\"John\""
- " autocomplete=off>"
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
- " <INPUT type=\"submit\" name=\"reply\" value=\"Send\"/>"
- "</FORM>");
-
- web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- form_manager.Reset();
- form_manager.ExtractForms(web_frame);
-
- forms.clear();
- form_manager.GetForms(FormManager::REQUIRE_AUTOCOMPLETE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- const FormData& form = forms[0];
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://abc.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(2U, fields.size());
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Smith"),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[1]);
-}
-
-TEST_F(FormManagerTest, GetFormsElementsEnabled) {
- // The firstname element is not enabled due to disabled being set.
- LoadHTML("<FORM name=\"TestForm\" action=\"http://xyz.com\" method=\"post\">"
- " <INPUT disabled type=\"text\" id=\"firstname\" value=\"John\"/>"
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
- " <INPUT type=\"submit\" name=\"submit\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_ENABLED, &forms);
- ASSERT_EQ(1U, forms.size());
-
- const FormData& form = forms[0];
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://xyz.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(2U, fields.size());
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Smith"),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("submit"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[1]);
-}
-
-TEST_F(FormManagerTest, FindForm) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- // Verify that we have the form.
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- // Get the input element we want to find.
- WebElement element = web_frame->document().getElementById("firstname");
- WebInputElement input_element = element.to<WebInputElement>();
-
- // Find the form and verify it's the correct form.
- FormData form;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- input_element, FormManager::REQUIRE_NONE, &form));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://buh.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("John"),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Smith"),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[2]);
-}
-
-TEST_F(FormManagerTest, FillForm) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\"/>"
- " <INPUT type=\"text\" id=\"lastname\"/>"
- " <INPUT type=\"hidden\" id=\"imhidden\"/>"
- " <INPUT type=\"text\" id=\"notempty\" value=\"Hi\"/>"
- " <INPUT type=\"text\" autocomplete=\"off\" id=\"noautocomplete\"/>"
- " <INPUT type=\"text\" disabled=\"disabled\" id=\"notenabled\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- // Verify that we have the form.
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- // Get the input element we want to find.
- WebElement element = web_frame->document().getElementById("firstname");
- WebInputElement input_element = element.to<WebInputElement>();
-
- // Find the form that contains the input element.
- FormData form;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- input_element, FormManager::REQUIRE_NONE, &form));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://buh.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(7U, fields.size());
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("firstname"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("lastname"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("imhidden"),
- string16(),
- ASCIIToUTF16("hidden"),
- 0),
- fields[2]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("notempty"),
- ASCIIToUTF16("Hi"),
- ASCIIToUTF16("text"),
- 20),
- fields[3]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("noautocomplete"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[4]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("notenabled"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[5]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[6]);
-
- // Fill the form.
- form.fields[0].set_value(ASCIIToUTF16("Wyatt"));
- form.fields[1].set_value(ASCIIToUTF16("Earp"));
- form.fields[2].set_value(ASCIIToUTF16("Alpha"));
- form.fields[3].set_value(ASCIIToUTF16("Beta"));
- form.fields[4].set_value(ASCIIToUTF16("Gamma"));
- form.fields[5].set_value(ASCIIToUTF16("Delta"));
- EXPECT_TRUE(form_manager.FillForm(form, WebNode()));
-
- // Verify the filled elements.
- WebDocument document = web_frame->document();
- WebInputElement firstname =
- document.getElementById("firstname").to<WebInputElement>();
- EXPECT_TRUE(firstname.isAutofilled());
- EXPECT_EQ(ASCIIToUTF16("Wyatt"), firstname.value());
-
- WebInputElement lastname =
- document.getElementById("lastname").to<WebInputElement>();
- EXPECT_TRUE(lastname.isAutofilled());
- EXPECT_EQ(ASCIIToUTF16("Earp"), lastname.value());
-
- // Hidden fields are not filled.
- WebInputElement imhidden =
- document.getElementById("imhidden").to<WebInputElement>();
- EXPECT_FALSE(imhidden.isAutofilled());
- EXPECT_TRUE(imhidden.value().isEmpty());
-
- // Non-empty fields are not filled.
- WebInputElement notempty =
- document.getElementById("notempty").to<WebInputElement>();
- EXPECT_FALSE(notempty.isAutofilled());
- EXPECT_EQ(ASCIIToUTF16("Hi"), notempty.value());
-
- // autocomplete=off fields are not filled.
- WebInputElement noautocomplete =
- document.getElementById("noautocomplete").to<WebInputElement>();
- EXPECT_FALSE(noautocomplete.isAutofilled());
- EXPECT_TRUE(noautocomplete.value().isEmpty());
-
- // Disabled fields are not filled.
- WebInputElement notenabled =
- document.getElementById("notenabled").to<WebInputElement>();
- EXPECT_FALSE(notenabled.isAutofilled());
- EXPECT_TRUE(notenabled.value().isEmpty());
-}
-
-TEST_F(FormManagerTest, PreviewForm) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\"/>"
- " <INPUT type=\"text\" id=\"lastname\"/>"
- " <INPUT type=\"hidden\" id=\"imhidden\"/>"
- " <INPUT type=\"text\" id=\"notempty\" value=\"Hi\"/>"
- " <INPUT type=\"text\" autocomplete=\"off\" id=\"noautocomplete\"/>"
- " <INPUT type=\"text\" disabled=\"disabled\" id=\"notenabled\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- // Verify that we have the form.
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- // Get the input element we want to find.
- WebElement element = web_frame->document().getElementById("firstname");
- WebInputElement input_element = element.to<WebInputElement>();
-
- // Find the form that contains the input element.
- FormData form;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- input_element, FormManager::REQUIRE_NONE, &form));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://buh.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(7U, fields.size());
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("firstname"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("lastname"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("imhidden"),
- string16(),
- ASCIIToUTF16("hidden"),
- 0),
- fields[2]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("notempty"),
- ASCIIToUTF16("Hi"),
- ASCIIToUTF16("text"),
- 20),
- fields[3]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("noautocomplete"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[4]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("notenabled"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[5]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[6]);
-
- // Preview the form.
- form.fields[0].set_value(ASCIIToUTF16("Wyatt"));
- form.fields[1].set_value(ASCIIToUTF16("Earp"));
- form.fields[2].set_value(ASCIIToUTF16("Alpha"));
- form.fields[3].set_value(ASCIIToUTF16("Beta"));
- form.fields[4].set_value(ASCIIToUTF16("Gamma"));
- form.fields[5].set_value(ASCIIToUTF16("Delta"));
- EXPECT_TRUE(form_manager.PreviewForm(form));
-
- // Verify the previewed elements.
- WebDocument document = web_frame->document();
- WebInputElement firstname =
- document.getElementById("firstname").to<WebInputElement>();
- EXPECT_TRUE(firstname.isAutofilled());
- EXPECT_EQ(ASCIIToUTF16("Wyatt"), firstname.suggestedValue());
-
- WebInputElement lastname =
- document.getElementById("lastname").to<WebInputElement>();
- EXPECT_TRUE(lastname.isAutofilled());
- EXPECT_EQ(ASCIIToUTF16("Earp"), lastname.suggestedValue());
-
- // Hidden fields are not previewed.
- WebInputElement imhidden =
- document.getElementById("imhidden").to<WebInputElement>();
- EXPECT_FALSE(imhidden.isAutofilled());
- EXPECT_TRUE(imhidden.suggestedValue().isEmpty());
-
- // Non-empty fields are not previewed.
- WebInputElement notempty =
- document.getElementById("notempty").to<WebInputElement>();
- EXPECT_FALSE(notempty.isAutofilled());
- EXPECT_TRUE(notempty.suggestedValue().isEmpty());
-
- // autocomplete=off fields are not previewed.
- WebInputElement noautocomplete =
- document.getElementById("noautocomplete").to<WebInputElement>();
- EXPECT_FALSE(noautocomplete.isAutofilled());
- EXPECT_TRUE(noautocomplete.suggestedValue().isEmpty());
-
- // Disabled fields are not previewed.
- WebInputElement notenabled =
- document.getElementById("notenabled").to<WebInputElement>();
- EXPECT_FALSE(notenabled.isAutofilled());
- EXPECT_TRUE(notenabled.suggestedValue().isEmpty());
-}
-
-TEST_F(FormManagerTest, Reset) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- // There should be no forms after the call to Reset.
- form_manager.Reset();
-
- forms.clear();
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(0U, forms.size());
-}
-
-TEST_F(FormManagerTest, Labels) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- " <LABEL for=\"firstname\"> First name: </LABEL>"
- " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
- " <LABEL for=\"lastname\"> Last name: </LABEL>"
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- const FormData& form = forms[0];
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_TRUE(fields[0].StrictlyEqualsHack(
- FormField(ASCIIToUTF16("First name:"),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("John"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[1].StrictlyEqualsHack(
- FormField(ASCIIToUTF16("Last name:"),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Smith"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[2].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("reply-send"),
- string16(),
- ASCIIToUTF16("submit"),
- 0)));
-}
-
-TEST_F(FormManagerTest, LabelsWithSpans) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- " <LABEL for=\"firstname\"><span>First name: </span></LABEL>"
- " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
- " <LABEL for=\"lastname\"><span>Last name: </span></LABEL>"
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- const FormData& form = forms[0];
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_TRUE(fields[0].StrictlyEqualsHack(
- FormField(ASCIIToUTF16("First name:"),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("John"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[1].StrictlyEqualsHack(
- FormField(ASCIIToUTF16("Last name:"),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Smith"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[2].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("reply-send"),
- string16(),
- ASCIIToUTF16("submit"),
- 0)));
-}
-
-// This test is different from FormManagerTest.Labels in that the label elements
-// for= attribute is set to the name of the form control element it is a label
-// for instead of the id of the form control element. This is invalid because
-// the for= attribute must be set to the id of the form control element.
-TEST_F(FormManagerTest, InvalidLabels) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- " <LABEL for=\"firstname\"> First name: </LABEL>"
- " <INPUT type=\"text\" name=\"firstname\" value=\"John\"/>"
- " <LABEL for=\"lastname\"> Last name: </LABEL>"
- " <INPUT type=\"text\" name=\"lastname\" value=\"Smith\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- const FormData& form = forms[0];
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("John"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Smith"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- string16(),
- ASCIIToUTF16("submit"),
- 0)));
-}
-
-// This test has three form control elements, only one of which has a label
-// element associated with it. The first element is disabled because of the
-// autocomplete=off attribute.
-TEST_F(FormManagerTest, OneLabelElementFirstControlElementDisabled) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- " First name:"
- " <INPUT type=\"text\" id=\"firstname\" autocomplete=\"off\"/>"
- " <LABEL for=\"middlename\">Middle name: </LABEL>"
- " <INPUT type=\"text\" id=\"middlename\"/>"
- " Last name:"
- " <INPUT type=\"text\" id=\"lastname\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_AUTOCOMPLETE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- const FormData& form = forms[0];
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_EQ(FormField(ASCIIToUTF16("Middle name:"),
- ASCIIToUTF16("middlename"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"),
- ASCIIToUTF16("lastname"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[2]);
-}
-
-// Crashy, http://crbug.com/52731.
-TEST_F(FormManagerTest, DISABLED_LabelsInferredFromText) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- " First name:"
- " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
- " Last name:"
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- const FormData& form = forms[0];
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_EQ(FormField(ASCIIToUTF16("First name:"),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("John"),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Smith"),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[2]);
-}
-
-TEST_F(FormManagerTest, LabelsInferredFromTextHidden) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- " First name:"
- " <INPUT type=\"hidden\" id=\"firstname\" value=\"John\"/>"
- " Last name:"
- " <INPUT type=\"hidden\" id=\"lastname\" value=\"Smith\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- const FormData& form = forms[0];
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("John"),
- ASCIIToUTF16("hidden"),
- 0)));
- EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Smith"),
- ASCIIToUTF16("hidden"),
- 0)));
- EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- string16(),
- ASCIIToUTF16("submit"),
- 0)));
-}
-
-TEST_F(FormManagerTest, LabelsInferredFromParagraph) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- " <P>First name:</P><INPUT type=\"text\" "
- " id=\"firstname\" value=\"John\"/>"
- " <P>Last name:</P>"
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- const FormData& form = forms[0];
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_EQ(FormField(ASCIIToUTF16("First name:"),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("John"),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Smith"),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[2]);
-}
-
-TEST_F(FormManagerTest, LabelsInferredFromTableCell) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- "<TABLE>"
- " <TR>"
- " <TD>First name:</TD>"
- " <TD><INPUT type=\"text\" id=\"firstname\" value=\"John\"/></TD>"
- " </TR>"
- " <TR>"
- " <TD>Last name:</TD>"
- " <TD><INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/></TD>"
- " </TR>"
- " <TR>"
- " <TD></TD>"
- " <TD>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- " </TD>"
- " </TR>"
- "</TABLE>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- const FormData& form = forms[0];
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_EQ(FormField(ASCIIToUTF16("First name:"),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("John"),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Smith"),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[2]);
-}
-
-TEST_F(FormManagerTest, LabelsInferredFromTableCellNested) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- "<TABLE>"
- " <TR>"
- " <TD>"
- " <FONT>"
- " First name:"
- " </FONT>"
- " <FONT>"
- " Bogus"
- " </FONT>"
- " </TD>"
- " <TD>"
- " <FONT>"
- " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
- " </FONT>"
- " </TD>"
- " </TR>"
- " <TR>"
- " <TD>"
- " <FONT>"
- " Last name:"
- " </FONT>"
- " </TD>"
- " <TD>"
- " <FONT>"
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
- " </FONT>"
- " </TD>"
- " </TR>"
- " <TR>"
- " <TD></TD>"
- " <TD>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- " </TD>"
- " </TR>"
- "</TABLE>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- const FormData& form = forms[0];
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_EQ(FormField(ASCIIToUTF16("First name:Bogus"),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("John"),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Smith"),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[2]);
-}
-
-TEST_F(FormManagerTest, LabelsInferredFromDefinitionList) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- "<DL>"
- " <DT>"
- " <SPAN>"
- " *"
- " </SPAN>"
- " <SPAN>"
- " First name:"
- " </SPAN>"
- " <SPAN>"
- " Bogus"
- " </SPAN>"
- " </DT>"
- " <DD>"
- " <FONT>"
- " <INPUT type=\"text\" id=\"firstname\" value=\"John\"/>"
- " </FONT>"
- " </DD>"
- " <DT>"
- " <SPAN>"
- " Last name:"
- " </SPAN>"
- " </DT>"
- " <DD>"
- " <FONT>"
- " <INPUT type=\"text\" id=\"lastname\" value=\"Smith\"/>"
- " </FONT>"
- " </DD>"
- " <DT></DT>"
- " <DD>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- " </DD>"
- "</DL>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- const FormData& form = forms[0];
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_EQ(FormField(ASCIIToUTF16("*First name:Bogus"),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("John"),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(ASCIIToUTF16("Last name:"),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Smith"),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[2]);
-}
-
-TEST_F(FormManagerTest, LabelsInferredWithSameName) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- " Address Line 1:"
- " <INPUT type=\"text\" name=\"Address\"/>"
- " Address Line 2:"
- " <INPUT type=\"text\" name=\"Address\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- const FormData& form = forms[0];
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_EQ(FormField(ASCIIToUTF16("Address Line 1:"),
- ASCIIToUTF16("Address"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(ASCIIToUTF16("Address Line 2:"),
- ASCIIToUTF16("Address"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[2]);
-}
-
-TEST_F(FormManagerTest, LabelsInferredWithImageTags) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- " Phone:"
- " <input type=\"text\" name=\"dayphone1\">"
- " <img/>"
- " -"
- " <img/>"
- " <input type=\"text\" name=\"dayphone2\">"
- " <img/>"
- " -"
- " <img/>"
- " <input type=\"text\" name=\"dayphone3\">"
- " ext.:"
- " <input type=\"text\" name=\"dayphone4\">"
- " <input type=\"text\" name=\"dummy\">"
- " <input type=\"submit\" name=\"reply-send\" value=\"Send\">"
- "</FORM>");
-
- WebFrame* frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
-
- WebVector<WebFormElement> forms;
- frame->forms(forms);
- ASSERT_EQ(1U, forms.size());
-
- FormData form;
- EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0],
- FormManager::REQUIRE_NONE,
- true,
- &form));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(6U, fields.size());
- EXPECT_EQ(FormField(ASCIIToUTF16("Phone:"),
- ASCIIToUTF16("dayphone1"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(ASCIIToUTF16("-"),
- ASCIIToUTF16("dayphone2"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(ASCIIToUTF16("-"),
- ASCIIToUTF16("dayphone3"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[2]);
- EXPECT_EQ(FormField(ASCIIToUTF16("ext.:"),
- ASCIIToUTF16("dayphone4"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[3]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("dummy"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[4]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[5]);
-}
-
-TEST_F(FormManagerTest, FillFormMaxLength) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\" maxlength=\"5\"/>"
- " <INPUT type=\"text\" id=\"lastname\" maxlength=\"5\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- // Verify that we have the form.
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- // Get the input element we want to find.
- WebElement element = web_frame->document().getElementById("firstname");
- WebInputElement input_element = element.to<WebInputElement>();
-
- // Find the form that contains the input element.
- FormData form;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- input_element, FormManager::REQUIRE_NONE, &form));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://buh.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("firstname"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("lastname"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[2]);
-
- // Fill the form.
- form.fields[0].set_value(ASCIIToUTF16("Brother"));
- form.fields[1].set_value(ASCIIToUTF16("Jonathan"));
- EXPECT_TRUE(form_manager.FillForm(form, WebNode()));
-
- // Find the newly-filled form that contains the input element.
- FormData form2;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- input_element, FormManager::REQUIRE_NONE, &form2));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
- EXPECT_EQ(GURL(web_frame->url()), form2.origin);
- EXPECT_EQ(GURL("http://buh.com"), form2.action);
-
- const std::vector<FormField>& fields2 = form2.fields;
- EXPECT_TRUE(fields2[0].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("Broth"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields2[1].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Jonat"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields2[2].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("reply-send"),
- string16(),
- ASCIIToUTF16("submit"),
- 0)));
-}
-
-// This test uses negative values of the maxlength attribute for input elements.
-// In this case, the maxlength of the input elements is set to the default
-// maxlength (defined in WebKit.)
-TEST_F(FormManagerTest, FillFormNegativeMaxLength) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\" maxlength=\"-1\"/>"
- " <INPUT type=\"text\" id=\"lastname\" maxlength=\"-10\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- // Verify that we have the form.
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- // Get the input element we want to find.
- WebElement element = web_frame->document().getElementById("firstname");
- WebInputElement input_element = element.to<WebInputElement>();
-
- // Find the form that contains the input element.
- FormData form;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- input_element, FormManager::REQUIRE_NONE, &form));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://buh.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("firstname"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("lastname"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[2]);
-
- // Fill the form.
- form.fields[0].set_value(ASCIIToUTF16("Brother"));
- form.fields[1].set_value(ASCIIToUTF16("Jonathan"));
- EXPECT_TRUE(form_manager.FillForm(form, WebNode()));
-
- // Find the newly-filled form that contains the input element.
- FormData form2;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- input_element, FormManager::REQUIRE_NONE, &form2));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
- EXPECT_EQ(GURL(web_frame->url()), form2.origin);
- EXPECT_EQ(GURL("http://buh.com"), form2.action);
-
- const std::vector<FormField>& fields2 = form2.fields;
- ASSERT_EQ(3U, fields2.size());
- EXPECT_TRUE(fields2[0].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("Brother"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields2[1].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Jonathan"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields2[2].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("reply-send"),
- string16(),
- ASCIIToUTF16("submit"),
- 0)));
-}
-
-// This test sends a FormData object to FillForm with more fields than are in
-// the cached WebFormElement. In this case, we only fill out the fields that
-// match between the FormData object and the WebFormElement.
-TEST_F(FormManagerTest, FillFormMoreFormDataFields) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\"/>"
- " <INPUT type=\"text\" id=\"middlename\"/>"
- " <INPUT type=\"text\" id=\"lastname\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- // Verify that we have the form.
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- // After the field modification, the fields in |form| will look like:
- // prefix
- // firstname
- // hidden
- // middlename
- // second
- // lastname
- // postfix
- FormData* form = &forms[0];
-
- FormField field1(string16(),
- ASCIIToUTF16("prefix"),
- string16(),
- ASCIIToUTF16("text"),
- 20);
- form->fields.insert(form->fields.begin(), field1);
-
- FormField field2(string16(),
- ASCIIToUTF16("hidden"),
- string16(),
- ASCIIToUTF16("text"),
- 20);
- form->fields.insert(form->fields.begin() + 2, field2);
-
- FormField field3(string16(),
- ASCIIToUTF16("second"),
- string16(),
- ASCIIToUTF16("text"),
- 20);
- form->fields.insert(form->fields.begin() + 4, field3);
-
- FormField field4(string16(),
- ASCIIToUTF16("postfix"),
- string16(),
- ASCIIToUTF16("text"),
- 20);
- form->fields.insert(form->fields.begin() + 6, field4);
-
- // Fill the form.
- form->fields[0].set_value(ASCIIToUTF16("Alpha"));
- form->fields[1].set_value(ASCIIToUTF16("Brother"));
- form->fields[2].set_value(ASCIIToUTF16("Abracadabra"));
- form->fields[3].set_value(ASCIIToUTF16("Joseph"));
- form->fields[4].set_value(ASCIIToUTF16("Beta"));
- form->fields[5].set_value(ASCIIToUTF16("Jonathan"));
- form->fields[6].set_value(ASCIIToUTF16("Omega"));
- EXPECT_TRUE(form_manager.FillForm(*form, WebNode()));
-
- // Get the input element we want to find.
- WebElement element = web_frame->document().getElementById("firstname");
- WebInputElement input_element = element.to<WebInputElement>();
-
- // Find the newly-filled form that contains the input element.
- FormData form2;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- input_element, FormManager::REQUIRE_NONE, &form2));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
- EXPECT_EQ(GURL(web_frame->url()), form2.origin);
- EXPECT_EQ(GURL("http://buh.com"), form2.action);
-
- const std::vector<FormField>& fields = form2.fields;
- ASSERT_EQ(4U, fields.size());
- EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("Brother"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("middlename"),
- ASCIIToUTF16("Joseph"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Jonathan"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[3].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- string16(),
- ASCIIToUTF16("submit"),
- 0)));
-}
-
-// This test sends a FormData object to FillForm with fewer fields than are in
-// the cached WebFormElement. In this case, we only fill out the fields that
-// match between the FormData object and the WebFormElement.
-TEST_F(FormManagerTest, FillFormFewerFormDataFields) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"prefix\"/>"
- " <INPUT type=\"text\" id=\"firstname\"/>"
- " <INPUT type=\"text\" id=\"hidden\"/>"
- " <INPUT type=\"text\" id=\"middlename\"/>"
- " <INPUT type=\"text\" id=\"second\"/>"
- " <INPUT type=\"text\" id=\"lastname\"/>"
- " <INPUT type=\"text\" id=\"postfix\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- // Verify that we have the form.
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- // After the field modification, the fields in |form| will look like:
- // firstname
- // middlename
- // lastname
- FormData* form = &forms[0];
- form->fields.erase(form->fields.begin());
- form->fields.erase(form->fields.begin() + 1);
- form->fields.erase(form->fields.begin() + 2);
- form->fields.erase(form->fields.begin() + 3);
-
- // Fill the form.
- form->fields[0].set_value(ASCIIToUTF16("Brother"));
- form->fields[1].set_value(ASCIIToUTF16("Joseph"));
- form->fields[2].set_value(ASCIIToUTF16("Jonathan"));
- EXPECT_TRUE(form_manager.FillForm(*form, WebNode()));
-
- // Get the input element we want to find.
- WebElement element = web_frame->document().getElementById("firstname");
- WebInputElement input_element = element.to<WebInputElement>();
-
- // Find the newly-filled form that contains the input element.
- FormData form2;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- input_element, FormManager::REQUIRE_NONE, &form2));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
- EXPECT_EQ(GURL(web_frame->url()), form2.origin);
- EXPECT_EQ(GURL("http://buh.com"), form2.action);
-
- const std::vector<FormField>& fields = form2.fields;
- ASSERT_EQ(8U, fields.size());
- EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("prefix"),
- string16(),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("Brother"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("hidden"),
- string16(),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[3].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("middlename"),
- ASCIIToUTF16("Joseph"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[4].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("second"),
- string16(),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[5].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Jonathan"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[6].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("postfix"),
- string16(),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[7].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- string16(),
- ASCIIToUTF16("submit"),
- 0)));
-}
-
-// This test sends a FormData object to FillForm with a field changed from
-// those in the cached WebFormElement. In this case, we only fill out the
-// fields that match between the FormData object and the WebFormElement.
-TEST_F(FormManagerTest, FillFormChangedFormDataFields) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\"/>"
- " <INPUT type=\"text\" id=\"middlename\"/>"
- " <INPUT type=\"text\" id=\"lastname\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- // Verify that we have the form.
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- // After the field modification, the fields in |form| will look like:
- // firstname
- // middlename
- // lastname
- FormData* form = &forms[0];
-
- // Fill the form.
- form->fields[0].set_value(ASCIIToUTF16("Brother"));
- form->fields[1].set_value(ASCIIToUTF16("Joseph"));
- form->fields[2].set_value(ASCIIToUTF16("Jonathan"));
-
- // Alter the label and name used for matching.
- form->fields[1].set_label(ASCIIToUTF16("bogus"));
- form->fields[1].set_name(ASCIIToUTF16("bogus"));
-
- EXPECT_TRUE(form_manager.FillForm(*form, WebNode()));
-
- // Get the input element we want to find.
- WebElement element = web_frame->document().getElementById("firstname");
- WebInputElement input_element = element.to<WebInputElement>();
-
- // Find the newly-filled form that contains the input element.
- FormData form2;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- input_element, FormManager::REQUIRE_NONE, &form2));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
- EXPECT_EQ(GURL(web_frame->url()), form2.origin);
- EXPECT_EQ(GURL("http://buh.com"), form2.action);
-
- const std::vector<FormField>& fields = form2.fields;
- ASSERT_EQ(4U, fields.size());
- EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("Brother"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("middlename"),
- string16(),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Jonathan"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[3].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- string16(),
- ASCIIToUTF16("submit"),
- 0)));
-}
-
-// This test sends a FormData object to FillForm with fewer fields than are in
-// the cached WebFormElement. In this case, we only fill out the fields that
-// match between the FormData object and the WebFormElement.
-TEST_F(FormManagerTest, FillFormExtraFieldInCache) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\"/>"
- " <INPUT type=\"text\" id=\"middlename\"/>"
- " <INPUT type=\"text\" id=\"lastname\"/>"
- " <INPUT type=\"text\" id=\"postfix\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- // Verify that we have the form.
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- // After the field modification, the fields in |form| will look like:
- // firstname
- // middlename
- // lastname
- FormData* form = &forms[0];
- form->fields.pop_back();
-
- // Fill the form.
- form->fields[0].set_value(ASCIIToUTF16("Brother"));
- form->fields[1].set_value(ASCIIToUTF16("Joseph"));
- form->fields[2].set_value(ASCIIToUTF16("Jonathan"));
- EXPECT_TRUE(form_manager.FillForm(*form, WebNode()));
-
- // Get the input element we want to find.
- WebElement element = web_frame->document().getElementById("firstname");
- WebInputElement input_element = element.to<WebInputElement>();
-
- // Find the newly-filled form that contains the input element.
- FormData form2;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- input_element, FormManager::REQUIRE_NONE, &form2));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
- EXPECT_EQ(GURL(web_frame->url()), form2.origin);
- EXPECT_EQ(GURL("http://buh.com"), form2.action);
-
- const std::vector<FormField>& fields = form2.fields;
- ASSERT_EQ(5U, fields.size());
- EXPECT_TRUE(fields[0].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("Brother"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[1].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("middlename"),
- ASCIIToUTF16("Joseph"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[2].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Jonathan"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[3].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("postfix"),
- string16(),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields[4].StrictlyEqualsHack(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- string16(),
- ASCIIToUTF16("submit"),
- 0)));
-}
-
-TEST_F(FormManagerTest, FillFormEmptyName) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\"/>"
- " <INPUT type=\"text\" id=\"lastname\"/>"
- " <INPUT type=\"submit\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- // Verify that we have the form.
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- // Get the input element we want to find.
- WebElement element = web_frame->document().getElementById("firstname");
- WebInputElement input_element = element.to<WebInputElement>();
-
- // Find the form that contains the input element.
- FormData form;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- input_element, FormManager::REQUIRE_NONE, &form));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://buh.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("firstname"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("lastname"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(string16(),
- string16(),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[2]);
-
- // Fill the form.
- form.fields[0].set_value(ASCIIToUTF16("Wyatt"));
- form.fields[1].set_value(ASCIIToUTF16("Earp"));
- EXPECT_TRUE(form_manager.FillForm(form, WebNode()));
-
- // Find the newly-filled form that contains the input element.
- FormData form2;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- input_element, FormManager::REQUIRE_NONE, &form2));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
- EXPECT_EQ(GURL(web_frame->url()), form2.origin);
- EXPECT_EQ(GURL("http://buh.com"), form2.action);
-
- const std::vector<FormField>& fields2 = form2.fields;
- ASSERT_EQ(3U, fields2.size());
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("Wyatt"),
- ASCIIToUTF16("text"),
- 20),
- fields2[0]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Earp"),
- ASCIIToUTF16("text"),
- 20),
- fields2[1]);
- EXPECT_EQ(FormField(string16(),
- string16(),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields2[2]);
-}
-
-TEST_F(FormManagerTest, FillFormEmptyFormNames) {
- LoadHTML("<FORM action=\"http://buh.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\"/>"
- " <INPUT type=\"text\" id=\"middlename\"/>"
- " <INPUT type=\"text\" id=\"lastname\"/>"
- " <INPUT type=\"submit\" value=\"Send\"/>"
- "</FORM>"
- "<FORM action=\"http://abc.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"apple\"/>"
- " <INPUT type=\"text\" id=\"banana\"/>"
- " <INPUT type=\"submit\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- // Verify that we have the form.
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(2U, forms.size());
-
- // Get the input element we want to find.
- WebElement element = web_frame->document().getElementById("apple");
- WebInputElement input_element = element.to<WebInputElement>();
-
- // Find the form that contains the input element.
- FormData form;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- input_element, FormManager::REQUIRE_NONE, &form));
- EXPECT_EQ(string16(), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://abc.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("apple"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("banana"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(string16(),
- string16(),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[2]);
-
- // Fill the form.
- form.fields[0].set_value(ASCIIToUTF16("Red"));
- form.fields[1].set_value(ASCIIToUTF16("Yellow"));
- EXPECT_TRUE(form_manager.FillForm(form, WebNode()));
-
- // Find the newly-filled form that contains the input element.
- FormData form2;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- input_element, FormManager::REQUIRE_NONE, &form2));
- EXPECT_EQ(string16(), form2.name);
- EXPECT_EQ(GURL(web_frame->url()), form2.origin);
- EXPECT_EQ(GURL("http://abc.com"), form2.action);
-
- const std::vector<FormField>& fields2 = form2.fields;
- ASSERT_EQ(3U, fields2.size());
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("apple"),
- ASCIIToUTF16("Red"),
- ASCIIToUTF16("text"),
- 20),
- fields2[0]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("banana"),
- ASCIIToUTF16("Yellow"),
- ASCIIToUTF16("text"),
- 20),
- fields2[1]);
- EXPECT_EQ(FormField(string16(),
- string16(),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields2[2]);
-}
-
-TEST_F(FormManagerTest, ThreePartPhone) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- " Phone:"
- " <input type=\"text\" name=\"dayphone1\">"
- " -"
- " <input type=\"text\" name=\"dayphone2\">"
- " -"
- " <input type=\"text\" name=\"dayphone3\">"
- " ext.:"
- " <input type=\"text\" name=\"dayphone4\">"
- " <input type=\"submit\" name=\"reply-send\" value=\"Send\">"
- "</FORM>");
-
-
- WebFrame* frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
-
- WebVector<WebFormElement> forms;
- frame->forms(forms);
- ASSERT_EQ(1U, forms.size());
-
- FormData form;
- EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0],
- FormManager::REQUIRE_NONE,
- true,
- &form));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(5U, fields.size());
- EXPECT_EQ(FormField(ASCIIToUTF16("Phone:"),
- ASCIIToUTF16("dayphone1"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(ASCIIToUTF16("-"),
- ASCIIToUTF16("dayphone2"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(ASCIIToUTF16("-"),
- ASCIIToUTF16("dayphone3"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[2]);
- EXPECT_EQ(FormField(ASCIIToUTF16("ext.:"),
- ASCIIToUTF16("dayphone4"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[3]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[4]);
-}
-
-
-TEST_F(FormManagerTest, SizeFields) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- " Phone:"
- " <input type=\"text\" size=\"3\" name=\"dayphone1\">"
- " -"
- " <input type=\"text\" size=\"3\" name=\"dayphone2\">"
- " -"
- " <input type=\"text\" size=\"4\" name=\"dayphone3\">"
- " ext.:"
- " <input type=\"text\" size=\"5\" name=\"dayphone4\">"
- " <input type=\"text\" name=\"default1\">"
- " <input type=\"text\" size=\"-1\" name=\"invalid1\">"
- " <input type=\"submit\" name=\"reply-send\" value=\"Send\">"
- "</FORM>");
-
-
- WebFrame* frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), frame);
-
- WebVector<WebFormElement> forms;
- frame->forms(forms);
- ASSERT_EQ(1U, forms.size());
-
- FormData form;
- EXPECT_TRUE(FormManager::WebFormElementToFormData(forms[0],
- FormManager::REQUIRE_NONE,
- true,
- &form));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(7U, fields.size());
- EXPECT_EQ(FormField(ASCIIToUTF16("Phone:"),
- ASCIIToUTF16("dayphone1"),
- string16(),
- ASCIIToUTF16("text"),
- 3),
- fields[0]);
- EXPECT_EQ(FormField(ASCIIToUTF16("-"),
- ASCIIToUTF16("dayphone2"),
- string16(),
- ASCIIToUTF16("text"),
- 3),
- fields[1]);
- EXPECT_EQ(FormField(ASCIIToUTF16("-"),
- ASCIIToUTF16("dayphone3"),
- string16(),
- ASCIIToUTF16("text"),
- 4),
- fields[2]);
- EXPECT_EQ(FormField(ASCIIToUTF16("ext.:"),
- ASCIIToUTF16("dayphone4"),
- string16(),
- ASCIIToUTF16("text"),
- 5),
- fields[3]);
- // When unspecified |size|, default is 20.
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("default1"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[4]);
- // When invalid |size| same value is returned.
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("invalid1"),
- string16(),
- ASCIIToUTF16("text"),
- -1),
- fields[5]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("reply-send"),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[6]);
-}
-
-// This test re-creates the experience of typing in a field then selecting a
-// profile from the AutoFill suggestions popup. The field that is being typed
-// into should be filled even though it's not technically empty.
-TEST_F(FormManagerTest, FillFormNonEmptyField) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\"/>"
- " <INPUT type=\"text\" id=\"lastname\"/>"
- " <INPUT type=\"submit\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- // Verify that we have the form.
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- // Get the input element we want to find.
- WebElement element = web_frame->document().getElementById("firstname");
- WebInputElement input_element = element.to<WebInputElement>();
-
- // Simulate typing by modifying the field value.
- input_element.setValue(ASCIIToUTF16("Wy"));
-
- // Find the form that contains the input element.
- FormData form;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- input_element, FormManager::REQUIRE_NONE, &form));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://buh.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("firstname"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[0]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("lastname"),
- string16(),
- ASCIIToUTF16("text"),
- 20),
- fields[1]);
- EXPECT_EQ(FormField(string16(),
- string16(),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields[2]);
-
- // Fill the form.
- form.fields[0].set_value(ASCIIToUTF16("Wyatt"));
- form.fields[1].set_value(ASCIIToUTF16("Earp"));
- EXPECT_TRUE(form_manager.FillForm(form, input_element));
-
- // Find the newly-filled form that contains the input element.
- FormData form2;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- input_element, FormManager::REQUIRE_NONE, &form2));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
- EXPECT_EQ(GURL(web_frame->url()), form2.origin);
- EXPECT_EQ(GURL("http://buh.com"), form2.action);
-
- const std::vector<FormField>& fields2 = form2.fields;
- ASSERT_EQ(3U, fields2.size());
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("Wyatt"),
- ASCIIToUTF16("text"),
- 20),
- fields2[0]);
- EXPECT_EQ(FormField(string16(),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Earp"),
- ASCIIToUTF16("text"),
- 20),
- fields2[1]);
- EXPECT_EQ(FormField(string16(),
- string16(),
- ASCIIToUTF16("Send"),
- ASCIIToUTF16("submit"),
- 0),
- fields2[2]);
-}
-
-TEST_F(FormManagerTest, ClearFormWithNode) {
- LoadHTML(
- "<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\" value=\"Wyatt\"/>"
- " <INPUT type=\"text\" id=\"lastname\" value=\"Earp\"/>"
- " <INPUT type=\"text\" autocomplete=\"off\" id=\"noAC\" value=\"one\"/>"
- " <INPUT type=\"text\" id=\"notenabled\" disabled=\"disabled\">"
- " <INPUT type=\"hidden\" id=\"notvisible\" value=\"apple\">"
- " <INPUT type=\"submit\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- // Verify that we have the form.
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- // Set the auto-filled attribute on the firstname element.
- WebInputElement firstname =
- web_frame->document().getElementById("firstname").to<WebInputElement>();
- firstname.setAutofilled(true);
-
- // Set the value of the disabled attribute.
- WebInputElement notenabled =
- web_frame->document().getElementById("notenabled").to<WebInputElement>();
- notenabled.setValue(WebString::fromUTF8("no clear"));
-
- // Clear the form.
- EXPECT_TRUE(form_manager.ClearFormWithNode(firstname));
-
- // Verify that the auto-filled attribute has been turned off.
- EXPECT_FALSE(firstname.isAutofilled());
-
- // Verify the form is cleared.
- FormData form2;
- EXPECT_TRUE(form_manager.FindFormWithFormControlElement(
- firstname, FormManager::REQUIRE_NONE, &form2));
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form2.name);
- EXPECT_EQ(GURL(web_frame->url()), form2.origin);
- EXPECT_EQ(GURL("http://buh.com"), form2.action);
-
- const std::vector<FormField>& fields2 = form2.fields;
- ASSERT_EQ(6U, fields2.size());
- EXPECT_TRUE(fields2[0].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("firstname"),
- string16(),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields2[1].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("lastname"),
- string16(),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields2[2].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("noAC"),
- string16(),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields2[3].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("notenabled"),
- ASCIIToUTF16("no clear"),
- ASCIIToUTF16("text"),
- 20)));
- EXPECT_TRUE(fields2[4].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("notvisible"),
- ASCIIToUTF16("apple"),
- ASCIIToUTF16("hidden"),
- 0)));
- EXPECT_TRUE(fields2[5].StrictlyEqualsHack(
- FormField(string16(),
- string16(),
- string16(),
- ASCIIToUTF16("submit"),
- 0)));
-}
-
-TEST_F(FormManagerTest, ClearPreviewedFormWithNode) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\" value=\"Wyatt\"/>"
- " <INPUT type=\"text\" id=\"lastname\"/>"
- " <INPUT type=\"text\" id=\"email\"/>"
- " <INPUT type=\"submit\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- // Verify that we have the form.
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- // Set the auto-filled attribute.
- WebInputElement firstname =
- web_frame->document().getElementById("firstname").to<WebInputElement>();
- firstname.setAutofilled(true);
- WebInputElement lastname =
- web_frame->document().getElementById("lastname").to<WebInputElement>();
- lastname.setAutofilled(true);
- WebInputElement email =
- web_frame->document().getElementById("email").to<WebInputElement>();
- email.setAutofilled(true);
-
- // Set the suggested values on two of the elements.
- lastname.setSuggestedValue(ASCIIToUTF16("Earp"));
- email.setSuggestedValue(ASCIIToUTF16("wyatt@earp.com"));
-
- // Clear the previewed fields.
- EXPECT_TRUE(form_manager.ClearPreviewedFormWithNode(firstname));
-
- // Fields with non-empty values are not modified.
- EXPECT_EQ(ASCIIToUTF16("Wyatt"), firstname.value());
- EXPECT_TRUE(firstname.suggestedValue().isEmpty());
- EXPECT_TRUE(firstname.isAutofilled());
-
- // Verify the previewed fields are cleared.
- EXPECT_TRUE(lastname.value().isEmpty());
- EXPECT_TRUE(lastname.suggestedValue().isEmpty());
- EXPECT_FALSE(lastname.isAutofilled());
- EXPECT_TRUE(email.value().isEmpty());
- EXPECT_TRUE(email.suggestedValue().isEmpty());
- EXPECT_FALSE(email.isAutofilled());
-}
-
-TEST_F(FormManagerTest, FormWithNodeIsAutoFilled) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://buh.com\" method=\"post\">"
- " <INPUT type=\"text\" id=\"firstname\" value=\"Wyatt\"/>"
- " <INPUT type=\"text\" id=\"lastname\"/>"
- " <INPUT type=\"text\" id=\"email\"/>"
- " <INPUT type=\"submit\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- // Verify that we have the form.
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- WebInputElement firstname =
- web_frame->document().getElementById("firstname").to<WebInputElement>();
-
- // Auto-filled attribute not set yet.
- EXPECT_FALSE(form_manager.FormWithNodeIsAutoFilled(firstname));
-
- // Set the auto-filled attribute.
- firstname.setAutofilled(true);
-
- EXPECT_TRUE(form_manager.FormWithNodeIsAutoFilled(firstname));
-}
-
-TEST_F(FormManagerTest, LabelsHiddenFields) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- " <LABEL for=\"firstname\"> First name: </LABEL>"
- " <INPUT type=\"hidden\" id=\"firstname\" value=\"John\"/>"
- " <LABEL for=\"lastname\"> Last name: </LABEL>"
- " <INPUT type=\"hidden\" id=\"lastname\" value=\"Smith\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- FormManager form_manager;
- form_manager.ExtractForms(web_frame);
-
- std::vector<FormData> forms;
- form_manager.GetForms(FormManager::REQUIRE_NONE, &forms);
- ASSERT_EQ(1U, forms.size());
-
- const FormData& form = forms[0];
- EXPECT_EQ(ASCIIToUTF16("TestForm"), form.name);
- EXPECT_EQ(GURL(web_frame->url()), form.origin);
- EXPECT_EQ(GURL("http://cnn.com"), form.action);
-
- const std::vector<FormField>& fields = form.fields;
- ASSERT_EQ(3U, fields.size());
- EXPECT_TRUE(fields[0].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("firstname"),
- ASCIIToUTF16("John"),
- ASCIIToUTF16("hidden"),
- 0)));
- EXPECT_TRUE(fields[1].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("lastname"),
- ASCIIToUTF16("Smith"),
- ASCIIToUTF16("hidden"),
- 0)));
- EXPECT_TRUE(fields[2].StrictlyEqualsHack(
- FormField(string16(),
- ASCIIToUTF16("reply-send"),
- string16(),
- ASCIIToUTF16("submit"),
- 0)));
-}
-
-TEST_F(FormManagerTest, LabelForElementHidden) {
- LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">"
- " <LABEL for=\"firstname\"> First name: </LABEL>"
- " <INPUT type=\"hidden\" id=\"firstname\" value=\"John\"/>"
- " <LABEL for=\"lastname\"> Last name: </LABEL>"
- " <INPUT type=\"hidden\" id=\"lastname\" value=\"Smith\"/>"
- " <INPUT type=\"submit\" name=\"reply-send\" value=\"Send\"/>"
- "</FORM>");
-
- WebFrame* web_frame = GetMainFrame();
- ASSERT_NE(static_cast<WebFrame*>(NULL), web_frame);
-
- WebElement e = web_frame->document().getElementById("firstname");
- WebFormControlElement firstname = e.to<WebFormControlElement>();
-
- // Hidden form control element should not have a label set.
- FormManager form_manager;
- EXPECT_EQ(string16(), form_manager.LabelForElement(firstname));
-}
-
-} // namespace
« no previous file with comments | « chrome/renderer/form_manager_browsertest.cc ('k') | chrome/renderer/pepper_devices_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698