OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/strings/string16.h" | 5 #include "base/strings/string16.h" |
6 #include "base/strings/utf_string_conversions.h" | 6 #include "base/strings/utf_string_conversions.h" |
7 #include "components/autofill/content/renderer/password_form_conversion_utils.h" | 7 #include "components/autofill/content/renderer/password_form_conversion_utils.h" |
8 #include "components/autofill/core/common/password_form.h" | 8 #include "components/autofill/core/common/password_form.h" |
9 #include "content/public/test/render_view_test.h" | 9 #include "content/public/test/render_view_test.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
11 #include "third_party/WebKit/public/platform/WebVector.h" | 11 #include "third_party/WebKit/public/platform/WebVector.h" |
12 #include "third_party/WebKit/public/web/WebDocument.h" | 12 #include "third_party/WebKit/public/web/WebDocument.h" |
13 #include "third_party/WebKit/public/web/WebFormElement.h" | 13 #include "third_party/WebKit/public/web/WebFormElement.h" |
14 #include "third_party/WebKit/public/web/WebLocalFrame.h" | 14 #include "third_party/WebKit/public/web/WebLocalFrame.h" |
15 #include "third_party/WebKit/public/web/WebPasswordFormData.h" | |
16 | 15 |
17 using blink::WebFormElement; | 16 using blink::WebFormElement; |
18 using blink::WebFrame; | 17 using blink::WebFrame; |
19 using blink::WebPasswordFormData; | |
20 using blink::WebVector; | 18 using blink::WebVector; |
21 | 19 |
22 namespace autofill { | 20 namespace autofill { |
23 namespace { | 21 namespace { |
24 | 22 |
25 class PasswordFormConversionUtilsTest : public content::RenderViewTest { | 23 class PasswordFormConversionUtilsTest : public content::RenderViewTest { |
26 public: | 24 public: |
27 PasswordFormConversionUtilsTest() : content::RenderViewTest() {} | 25 PasswordFormConversionUtilsTest() : content::RenderViewTest() {} |
28 virtual ~PasswordFormConversionUtilsTest() {} | 26 virtual ~PasswordFormConversionUtilsTest() {} |
29 | 27 |
(...skipping 11 matching lines...) Expand all Loading... | |
41 " <INPUT type=\"password\" name=\"password\" id=\"password\" " | 39 " <INPUT type=\"password\" name=\"password\" id=\"password\" " |
42 " value=\"secret\"/>" | 40 " value=\"secret\"/>" |
43 "</FORM>"); | 41 "</FORM>"); |
44 | 42 |
45 WebFrame* frame = GetMainFrame(); | 43 WebFrame* frame = GetMainFrame(); |
46 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); | 44 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); |
47 | 45 |
48 WebVector<WebFormElement> forms; | 46 WebVector<WebFormElement> forms; |
49 frame->document().forms(forms); | 47 frame->document().forms(forms); |
50 ASSERT_EQ(1U, forms.size()); | 48 ASSERT_EQ(1U, forms.size()); |
51 WebPasswordFormData web_password_form(forms[0]); | |
52 ASSERT_TRUE(web_password_form.isValid()); | |
53 | 49 |
54 scoped_ptr<PasswordForm> password_form = CreatePasswordForm(forms[0]); | 50 scoped_ptr<PasswordForm> password_form = CreatePasswordForm(forms[0]); |
55 ASSERT_NE(static_cast<PasswordForm*>(NULL), password_form.get()); | 51 ASSERT_NE(static_cast<PasswordForm*>(NULL), password_form.get()); |
56 | 52 |
57 EXPECT_EQ("data:", password_form->signon_realm); | 53 EXPECT_EQ("data:", password_form->signon_realm); |
58 EXPECT_EQ(GURL("http://cnn.com"), password_form->action); | 54 EXPECT_EQ(GURL("http://cnn.com"), password_form->action); |
59 EXPECT_EQ(base::UTF8ToUTF16("username"), password_form->username_element); | 55 EXPECT_EQ(base::UTF8ToUTF16("username"), password_form->username_element); |
60 EXPECT_EQ(base::UTF8ToUTF16("johnsmith"), password_form->username_value); | 56 EXPECT_EQ(base::UTF8ToUTF16("johnsmith"), password_form->username_value); |
61 EXPECT_EQ(base::UTF8ToUTF16("password"), password_form->password_element); | 57 EXPECT_EQ(base::UTF8ToUTF16("password"), password_form->password_element); |
62 EXPECT_EQ(base::UTF8ToUTF16("secret"), password_form->password_value); | 58 EXPECT_EQ(base::UTF8ToUTF16("secret"), password_form->password_value); |
(...skipping 12 matching lines...) Expand all Loading... | |
75 " <INPUT type=\"password\" name=\"password\" id=\"password\" " | 71 " <INPUT type=\"password\" name=\"password\" id=\"password\" " |
76 " value=\"secret\"/>" | 72 " value=\"secret\"/>" |
77 "</FORM>"); | 73 "</FORM>"); |
78 | 74 |
79 WebFrame* frame = GetMainFrame(); | 75 WebFrame* frame = GetMainFrame(); |
80 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); | 76 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); |
81 | 77 |
82 WebVector<WebFormElement> forms; | 78 WebVector<WebFormElement> forms; |
83 frame->document().forms(forms); | 79 frame->document().forms(forms); |
84 ASSERT_EQ(1U, forms.size()); | 80 ASSERT_EQ(1U, forms.size()); |
85 WebPasswordFormData web_password_form(forms[0]); | |
86 ASSERT_FALSE(web_password_form.isValid()); | |
87 | 81 |
88 scoped_ptr<PasswordForm> password_form = CreatePasswordForm(forms[0]); | 82 scoped_ptr<PasswordForm> password_form = CreatePasswordForm(forms[0]); |
89 EXPECT_EQ(static_cast<PasswordForm*>(NULL), password_form.get()); | 83 EXPECT_EQ(static_cast<PasswordForm*>(NULL), password_form.get()); |
90 } | 84 } |
91 | 85 |
86 TEST_F(PasswordFormConversionUtilsTest, | |
87 WebFormWithMultipleUseNameAndPassWordFieldsToPasswordForm) { | |
88 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | |
89 " <INPUT type=\"text\" name=\"username\" " | |
90 " id=\"username\" value=\"John\"/>" | |
91 " <INPUT type=\"password\" name=\"password\" id=\"password\" " | |
Garrett Casto
2014/04/17 18:20:22
Would you mind changing the name and id's of these
| |
92 " value=\"encrypted\"/>" | |
93 " <INPUT type=\"text\" name=\"username\" " | |
94 " id=\"username\" value=\"Smith\"/>" | |
95 " <INPUT type=\"password\" name=\"password\" id=\"password\" " | |
96 " value=\"secret\"/>" | |
97 " <INPUT type=\"text\" name=\"username\" " | |
98 " id=\"username\" value=\"JohnSmith\"/>" | |
99 " <INPUT type=\"password\" name=\"password\" id=\"password\" " | |
100 " value=\"secret\"/>" | |
101 " <INPUT type=\"submit\" name=\"submit\" value=\"Submit\"/>" | |
102 "</FORM>"); | |
103 | |
104 WebFrame* frame = GetMainFrame(); | |
105 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); | |
106 | |
107 WebVector<WebFormElement> forms; | |
108 frame->document().forms(forms); | |
109 ASSERT_EQ(1U, forms.size()); | |
110 | |
111 scoped_ptr<PasswordForm> password_form = CreatePasswordForm(forms[0]); | |
112 ASSERT_NE(static_cast<PasswordForm*>(NULL), password_form.get()); | |
113 | |
114 EXPECT_EQ("data:", password_form->signon_realm); | |
115 EXPECT_EQ(GURL("http://cnn.com"), password_form->action); | |
116 EXPECT_EQ(base::UTF8ToUTF16("username"), password_form->username_element); | |
117 EXPECT_EQ(base::UTF8ToUTF16("John"), password_form->username_value); | |
118 EXPECT_EQ(base::UTF8ToUTF16("password"), password_form->password_element); | |
119 EXPECT_EQ(base::UTF8ToUTF16("secret"), password_form->password_value); | |
120 EXPECT_EQ(base::UTF8ToUTF16("password"), password_form->old_password_element); | |
121 EXPECT_EQ(base::UTF8ToUTF16("encrypted"), password_form->old_password_value); | |
122 EXPECT_EQ(base::UTF8ToUTF16("Smith"), | |
123 password_form->other_possible_usernames[0]); | |
124 EXPECT_EQ(base::UTF8ToUTF16("JohnSmith"), | |
125 password_form->other_possible_usernames[1]); | |
126 EXPECT_EQ(PasswordForm::SCHEME_HTML, password_form->scheme); | |
127 EXPECT_FALSE(password_form->ssl_valid); | |
128 EXPECT_FALSE(password_form->preferred); | |
129 EXPECT_FALSE(password_form->blacklisted_by_user); | |
130 EXPECT_EQ(PasswordForm::TYPE_MANUAL, password_form->type); | |
131 } | |
132 | |
133 TEST_F(PasswordFormConversionUtilsTest, | |
134 WebFormwithThreeDifferentPasswordsToPasswordForm) { | |
135 LoadHTML("<FORM name=\"TestForm\" action=\"http://cnn.com\" method=\"post\">" | |
136 " <INPUT type=\"text\" name=\"username\" " | |
137 " id=\"username\" value=\"John\"/>" | |
138 " <INPUT type=\"password\" name=\"password\" id=\"password\" " | |
139 " value=\"secret\"/>" | |
140 " <INPUT type=\"password\" name=\"password\" id=\"password\" " | |
141 " value=\"encrypted\"/>" | |
142 " <INPUT type=\"password\" name=\"password\" id=\"password\" " | |
143 " value=\"key\"/>" | |
144 " <INPUT type=\"submit\" name=\"submit\" value=\"Submit\"/>" | |
145 "</FORM>"); | |
146 | |
147 WebFrame* frame = GetMainFrame(); | |
148 ASSERT_NE(static_cast<WebFrame*>(NULL), frame); | |
149 | |
150 WebVector<WebFormElement> forms; | |
151 frame->document().forms(forms); | |
152 ASSERT_EQ(1U, forms.size()); | |
153 | |
154 scoped_ptr<PasswordForm> password_form = CreatePasswordForm(forms[0]); | |
155 ASSERT_EQ(static_cast<PasswordForm*>(NULL), password_form.get()); | |
156 } | |
157 | |
92 } // namespace autofill | 158 } // namespace autofill |
OLD | NEW |