Index: chrome/browser/autofill/form_structure_unittest.cc |
=================================================================== |
--- chrome/browser/autofill/form_structure_unittest.cc (revision 0) |
+++ chrome/browser/autofill/form_structure_unittest.cc (revision 0) |
@@ -0,0 +1,93 @@ |
+// 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/scoped_ptr.h" |
+#include "base/string_util.h" |
+#include "chrome/browser/autofill/form_structure.h" |
+#include "googleurl/src/gurl.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+#include "third_party/WebKit/WebKit/chromium/public/WebInputElement.h" |
+#include "webkit/glue/form_field_values.h" |
+ |
+using WebKit::WebInputElement; |
+ |
+TEST(FormStructureTest, FieldCount) { |
+ webkit_glue::FormFieldValues values; |
+ values.method = ASCIIToUTF16("post"); |
+ values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("username"), |
+ ASCIIToUTF16("username"), |
+ string16(), |
+ ASCIIToUTF16("text"), |
+ WebInputElement::Text)); |
+ values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("password"), |
+ ASCIIToUTF16("password"), |
+ string16(), |
+ ASCIIToUTF16("password"), |
+ WebInputElement::Password)); |
+ values.elements.push_back(webkit_glue::FormField(string16(), |
+ ASCIIToUTF16("Submit"), |
+ string16(), |
+ ASCIIToUTF16("submit"), |
+ WebInputElement::Submit)); |
+ |
+ FormStructure form_structure(values); |
+ |
+ // Only text fields are counted. |
+ EXPECT_EQ(1U, form_structure.field_count()); |
+} |
+ |
+TEST(FormStructureTest, IsAutoFillable) { |
+ scoped_ptr<FormStructure> form_structure; |
+ webkit_glue::FormFieldValues values; |
+ |
+ // We need at least three text fields to be auto-fillable. |
+ values.method = ASCIIToUTF16("post"); |
+ values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("username"), |
+ ASCIIToUTF16("username"), |
+ string16(), |
+ ASCIIToUTF16("text"), |
+ WebInputElement::Text)); |
+ values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("password"), |
+ ASCIIToUTF16("password"), |
+ string16(), |
+ ASCIIToUTF16("password"), |
+ WebInputElement::Password)); |
+ values.elements.push_back(webkit_glue::FormField(string16(), |
+ ASCIIToUTF16("Submit"), |
+ string16(), |
+ ASCIIToUTF16("submit"), |
+ WebInputElement::Submit)); |
+ form_structure.reset(new FormStructure(values)); |
+ EXPECT_FALSE(form_structure->IsAutoFillable()); |
+ |
+ // We now have three text fields. |
+ values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("First Name"), |
+ ASCIIToUTF16("firstname"), |
+ string16(), |
+ ASCIIToUTF16("text"), |
+ WebInputElement::Text)); |
+ values.elements.push_back(webkit_glue::FormField(ASCIIToUTF16("Last Name"), |
+ ASCIIToUTF16("lastname"), |
+ string16(), |
+ ASCIIToUTF16("text"), |
+ WebInputElement::Text)); |
+ form_structure.reset(new FormStructure(values)); |
+ EXPECT_TRUE(form_structure->IsAutoFillable()); |
+ |
+ // The method must be 'post'. |
+ values.method = ASCIIToUTF16("get"); |
+ form_structure.reset(new FormStructure(values)); |
+ EXPECT_FALSE(form_structure->IsAutoFillable()); |
+ |
+ // The target cannot include http(s)://*/search... |
+ values.method = ASCIIToUTF16("post"); |
+ values.target_url = GURL("http://google.com/search?q=hello"); |
+ form_structure.reset(new FormStructure(values)); |
+ EXPECT_FALSE(form_structure->IsAutoFillable()); |
+ |
+ // But search can be in the URL. |
+ values.target_url = GURL("http://search.com/?q=hello"); |
+ form_structure.reset(new FormStructure(values)); |
+ EXPECT_TRUE(form_structure->IsAutoFillable()); |
+} |
Property changes on: chrome/browser/autofill/form_structure_unittest.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |