OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/command_line.h" | 5 #include "base/command_line.h" |
6 #include "base/files/file_util.h" | 6 #include "base/files/file_util.h" |
7 #include "base/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #include "chrome/test/base/chrome_render_view_test.h" | 9 #include "chrome/test/base/chrome_render_view_test.h" |
10 #include "chrome/test/base/ui_test_utils.h" | 10 #include "chrome/test/base/ui_test_utils.h" |
(...skipping 19 matching lines...) Expand all Loading... |
30 using blink::WebFormElement; | 30 using blink::WebFormElement; |
31 using blink::WebFrame; | 31 using blink::WebFrame; |
32 using blink::WebLocalFrame; | 32 using blink::WebLocalFrame; |
33 using blink::WebInputElement; | 33 using blink::WebInputElement; |
34 using blink::WebString; | 34 using blink::WebString; |
35 using blink::WebURLRequest; | 35 using blink::WebURLRequest; |
36 using blink::WebVector; | 36 using blink::WebVector; |
37 | 37 |
38 namespace autofill { | 38 namespace autofill { |
39 | 39 |
40 typedef Tuple<int, autofill::FormData, autofill::FormFieldData, gfx::RectF> | 40 typedef base::Tuple<int, autofill::FormData, autofill::FormFieldData, |
41 AutofillQueryParam; | 41 gfx::RectF> AutofillQueryParam; |
42 | 42 |
43 class AutofillRendererTest : public ChromeRenderViewTest { | 43 class AutofillRendererTest : public ChromeRenderViewTest { |
44 public: | 44 public: |
45 AutofillRendererTest() {} | 45 AutofillRendererTest() {} |
46 ~AutofillRendererTest() override {} | 46 ~AutofillRendererTest() override {} |
47 | 47 |
48 protected: | 48 protected: |
49 void SetUp() override { | 49 void SetUp() override { |
50 ChromeRenderViewTest::SetUp(); | 50 ChromeRenderViewTest::SetUp(); |
51 | 51 |
(...skipping 27 matching lines...) Expand all Loading... |
79 " <option>Texas</option>" | 79 " <option>Texas</option>" |
80 " </select>" | 80 " </select>" |
81 "</form>"); | 81 "</form>"); |
82 | 82 |
83 // Verify that "FormsSeen" sends the expected number of fields. | 83 // Verify that "FormsSeen" sends the expected number of fields. |
84 const IPC::Message* message = render_thread_->sink().GetFirstMessageMatching( | 84 const IPC::Message* message = render_thread_->sink().GetFirstMessageMatching( |
85 AutofillHostMsg_FormsSeen::ID); | 85 AutofillHostMsg_FormsSeen::ID); |
86 ASSERT_NE(nullptr, message); | 86 ASSERT_NE(nullptr, message); |
87 AutofillHostMsg_FormsSeen::Param params; | 87 AutofillHostMsg_FormsSeen::Param params; |
88 AutofillHostMsg_FormsSeen::Read(message, ¶ms); | 88 AutofillHostMsg_FormsSeen::Read(message, ¶ms); |
89 std::vector<FormData> forms = get<0>(params); | 89 std::vector<FormData> forms = base::get<0>(params); |
90 ASSERT_EQ(1UL, forms.size()); | 90 ASSERT_EQ(1UL, forms.size()); |
91 ASSERT_EQ(4UL, forms[0].fields.size()); | 91 ASSERT_EQ(4UL, forms[0].fields.size()); |
92 | 92 |
93 FormFieldData expected; | 93 FormFieldData expected; |
94 | 94 |
95 expected.name = ASCIIToUTF16("firstname"); | 95 expected.name = ASCIIToUTF16("firstname"); |
96 expected.value = base::string16(); | 96 expected.value = base::string16(); |
97 expected.form_control_type = "text"; | 97 expected.form_control_type = "text"; |
98 expected.max_length = WebInputElement::defaultMaxLength(); | 98 expected.max_length = WebInputElement::defaultMaxLength(); |
99 EXPECT_FORM_FIELD_DATA_EQUALS(expected, forms[0].fields[0]); | 99 EXPECT_FORM_FIELD_DATA_EQUALS(expected, forms[0].fields[0]); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 "newForm.appendChild(newFirstname);" | 142 "newForm.appendChild(newFirstname);" |
143 "newForm.appendChild(newLastname);" | 143 "newForm.appendChild(newLastname);" |
144 "newForm.appendChild(newEmail);" | 144 "newForm.appendChild(newEmail);" |
145 "document.body.appendChild(newForm);"); | 145 "document.body.appendChild(newForm);"); |
146 msg_loop_.RunUntilIdle(); | 146 msg_loop_.RunUntilIdle(); |
147 | 147 |
148 message = render_thread_->sink().GetFirstMessageMatching( | 148 message = render_thread_->sink().GetFirstMessageMatching( |
149 AutofillHostMsg_FormsSeen::ID); | 149 AutofillHostMsg_FormsSeen::ID); |
150 ASSERT_NE(nullptr, message); | 150 ASSERT_NE(nullptr, message); |
151 AutofillHostMsg_FormsSeen::Read(message, ¶ms); | 151 AutofillHostMsg_FormsSeen::Read(message, ¶ms); |
152 forms = get<0>(params); | 152 forms = base::get<0>(params); |
153 ASSERT_EQ(1UL, forms.size()); | 153 ASSERT_EQ(1UL, forms.size()); |
154 ASSERT_EQ(3UL, forms[0].fields.size()); | 154 ASSERT_EQ(3UL, forms[0].fields.size()); |
155 | 155 |
156 expected.form_control_type = "text"; | 156 expected.form_control_type = "text"; |
157 expected.max_length = WebInputElement::defaultMaxLength(); | 157 expected.max_length = WebInputElement::defaultMaxLength(); |
158 | 158 |
159 expected.name = ASCIIToUTF16("second_firstname"); | 159 expected.name = ASCIIToUTF16("second_firstname"); |
160 expected.value = ASCIIToUTF16("Bob"); | 160 expected.value = ASCIIToUTF16("Bob"); |
161 EXPECT_FORM_FIELD_DATA_EQUALS(expected, forms[0].fields[0]); | 161 EXPECT_FORM_FIELD_DATA_EQUALS(expected, forms[0].fields[0]); |
162 | 162 |
(...skipping 11 matching lines...) Expand all Loading... |
174 " <input type='text' id='firstname'/>" | 174 " <input type='text' id='firstname'/>" |
175 " <input type='text' id='middlename'/>" | 175 " <input type='text' id='middlename'/>" |
176 "</form>"); | 176 "</form>"); |
177 | 177 |
178 // Verify that "FormsSeen" isn't sent, as there are too few fields. | 178 // Verify that "FormsSeen" isn't sent, as there are too few fields. |
179 const IPC::Message* message = render_thread_->sink().GetFirstMessageMatching( | 179 const IPC::Message* message = render_thread_->sink().GetFirstMessageMatching( |
180 AutofillHostMsg_FormsSeen::ID); | 180 AutofillHostMsg_FormsSeen::ID); |
181 ASSERT_NE(nullptr, message); | 181 ASSERT_NE(nullptr, message); |
182 AutofillHostMsg_FormsSeen::Param params; | 182 AutofillHostMsg_FormsSeen::Param params; |
183 AutofillHostMsg_FormsSeen::Read(message, ¶ms); | 183 AutofillHostMsg_FormsSeen::Read(message, ¶ms); |
184 const std::vector<FormData>& forms = get<0>(params); | 184 const std::vector<FormData>& forms = base::get<0>(params); |
185 ASSERT_EQ(0UL, forms.size()); | 185 ASSERT_EQ(0UL, forms.size()); |
186 } | 186 } |
187 | 187 |
188 // Regression test for [ http://crbug.com/346010 ]. | 188 // Regression test for [ http://crbug.com/346010 ]. |
189 TEST_F(AutofillRendererTest, DontCrashWhileAssociatingForms) { | 189 TEST_F(AutofillRendererTest, DontCrashWhileAssociatingForms) { |
190 LoadHTML("<form id='form'>" | 190 LoadHTML("<form id='form'>" |
191 "<foo id='foo'>" | 191 "<foo id='foo'>" |
192 "<script id='script'>" | 192 "<script id='script'>" |
193 "document.documentElement.appendChild(foo);" | 193 "document.documentElement.appendChild(foo);" |
194 "newDoc = document.implementation.createDocument(" | 194 "newDoc = document.implementation.createDocument(" |
(...skipping 12 matching lines...) Expand all Loading... |
207 base::FilePath(FILE_PATH_LITERAL("autofill_noform_dynamic.html"))); | 207 base::FilePath(FILE_PATH_LITERAL("autofill_noform_dynamic.html"))); |
208 ASSERT_TRUE(base::ReadFileToString(test_path, &html_data)); | 208 ASSERT_TRUE(base::ReadFileToString(test_path, &html_data)); |
209 LoadHTML(html_data.c_str()); | 209 LoadHTML(html_data.c_str()); |
210 | 210 |
211 // Verify that "FormsSeen" sends the expected number of fields. | 211 // Verify that "FormsSeen" sends the expected number of fields. |
212 const IPC::Message* message = render_thread_->sink().GetFirstMessageMatching( | 212 const IPC::Message* message = render_thread_->sink().GetFirstMessageMatching( |
213 AutofillHostMsg_FormsSeen::ID); | 213 AutofillHostMsg_FormsSeen::ID); |
214 ASSERT_NE(nullptr, message); | 214 ASSERT_NE(nullptr, message); |
215 AutofillHostMsg_FormsSeen::Param params; | 215 AutofillHostMsg_FormsSeen::Param params; |
216 AutofillHostMsg_FormsSeen::Read(message, ¶ms); | 216 AutofillHostMsg_FormsSeen::Read(message, ¶ms); |
217 std::vector<FormData> forms = get<0>(params); | 217 std::vector<FormData> forms = base::get<0>(params); |
218 ASSERT_EQ(1UL, forms.size()); | 218 ASSERT_EQ(1UL, forms.size()); |
219 ASSERT_EQ(7UL, forms[0].fields.size()); | 219 ASSERT_EQ(7UL, forms[0].fields.size()); |
220 | 220 |
221 render_thread_->sink().ClearMessages(); | 221 render_thread_->sink().ClearMessages(); |
222 | 222 |
223 ExecuteJavaScript("AddFields()"); | 223 ExecuteJavaScript("AddFields()"); |
224 msg_loop_.RunUntilIdle(); | 224 msg_loop_.RunUntilIdle(); |
225 | 225 |
226 message = render_thread_->sink().GetFirstMessageMatching( | 226 message = render_thread_->sink().GetFirstMessageMatching( |
227 AutofillHostMsg_FormsSeen::ID); | 227 AutofillHostMsg_FormsSeen::ID); |
228 ASSERT_NE(nullptr, message); | 228 ASSERT_NE(nullptr, message); |
229 AutofillHostMsg_FormsSeen::Read(message, ¶ms); | 229 AutofillHostMsg_FormsSeen::Read(message, ¶ms); |
230 forms = get<0>(params); | 230 forms = base::get<0>(params); |
231 ASSERT_EQ(1UL, forms.size()); | 231 ASSERT_EQ(1UL, forms.size()); |
232 ASSERT_EQ(9UL, forms[0].fields.size()); | 232 ASSERT_EQ(9UL, forms[0].fields.size()); |
233 | 233 |
234 FormFieldData expected; | 234 FormFieldData expected; |
235 | 235 |
236 expected.name = ASCIIToUTF16("EMAIL_ADDRESS"); | 236 expected.name = ASCIIToUTF16("EMAIL_ADDRESS"); |
237 expected.value.clear(); | 237 expected.value.clear(); |
238 expected.form_control_type = "text"; | 238 expected.form_control_type = "text"; |
239 expected.max_length = WebInputElement::defaultMaxLength(); | 239 expected.max_length = WebInputElement::defaultMaxLength(); |
240 EXPECT_FORM_FIELD_DATA_EQUALS(expected, forms[0].fields[7]); | 240 EXPECT_FORM_FIELD_DATA_EQUALS(expected, forms[0].fields[7]); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
344 }; | 344 }; |
345 | 345 |
346 TEST_F(RequestAutocompleteRendererTest, InvokingTwiceOnlyShowsOnce) { | 346 TEST_F(RequestAutocompleteRendererTest, InvokingTwiceOnlyShowsOnce) { |
347 // Attempting to show the requestAutocomplete dialog again should be ignored. | 347 // Attempting to show the requestAutocomplete dialog again should be ignored. |
348 invoking_frame_->autofillClient()->didRequestAutocomplete(invoking_form()); | 348 invoking_frame_->autofillClient()->didRequestAutocomplete(invoking_form()); |
349 EXPECT_FALSE(render_thread_->sink().GetFirstMessageMatching( | 349 EXPECT_FALSE(render_thread_->sink().GetFirstMessageMatching( |
350 AutofillHostMsg_RequestAutocomplete::ID)); | 350 AutofillHostMsg_RequestAutocomplete::ID)); |
351 } | 351 } |
352 | 352 |
353 } // namespace autofill | 353 } // namespace autofill |
OLD | NEW |