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

Side by Side Diff: chrome/renderer/autofill/autofill_renderer_browsertest.cc

Issue 455653002: Use single quotes in Layout tests as they don't need to be escaped (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix failing tests Created 6 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 unified diff | Download patch
« no previous file with comments | « no previous file | chrome/renderer/autofill/form_autofill_browsertest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/strings/stringprintf.h" 6 #include "base/strings/stringprintf.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "chrome/test/base/chrome_render_view_test.h" 8 #include "chrome/test/base/chrome_render_view_test.h"
9 #include "components/autofill/content/common/autofill_messages.h" 9 #include "components/autofill/content/common/autofill_messages.h"
10 #include "components/autofill/content/renderer/autofill_agent.h" 10 #include "components/autofill/content/renderer/autofill_agent.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 // message so updates will get coalesced, but as soon as we spin the message 52 // message so updates will get coalesced, but as soon as we spin the message
53 // loop, it will generate an update. 53 // loop, it will generate an update.
54 SendContentStateImmediately(); 54 SendContentStateImmediately();
55 } 55 }
56 56
57 private: 57 private:
58 DISALLOW_COPY_AND_ASSIGN(AutofillRendererTest); 58 DISALLOW_COPY_AND_ASSIGN(AutofillRendererTest);
59 }; 59 };
60 60
61 TEST_F(AutofillRendererTest, SendForms) { 61 TEST_F(AutofillRendererTest, SendForms) {
62 LoadHTML("<form method=\"POST\">" 62 LoadHTML("<form method='POST'>"
63 " <input type=\"text\" id=\"firstname\"/>" 63 " <input type='text' id='firstname'/>"
64 " <input type=\"text\" id=\"middlename\"/>" 64 " <input type='text' id='middlename'/>"
65 " <input type=\"text\" id=\"lastname\" autoComplete=\"off\"/>" 65 " <input type='text' id='lastname' autoComplete='off'/>"
66 " <input type=\"hidden\" id=\"email\"/>" 66 " <input type='hidden' id='email'/>"
67 " <select id=\"state\"/>" 67 " <select id='state'/>"
68 " <option>?</option>" 68 " <option>?</option>"
69 " <option>California</option>" 69 " <option>California</option>"
70 " <option>Texas</option>" 70 " <option>Texas</option>"
71 " </select>" 71 " </select>"
72 "</form>"); 72 "</form>");
73 73
74 // Verify that "FormsSeen" sends the expected number of fields. 74 // Verify that "FormsSeen" sends the expected number of fields.
75 const IPC::Message* message = render_thread_->sink().GetFirstMessageMatching( 75 const IPC::Message* message = render_thread_->sink().GetFirstMessageMatching(
76 AutofillHostMsg_FormsSeen::ID); 76 AutofillHostMsg_FormsSeen::ID);
77 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); 77 ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 expected.name = ASCIIToUTF16("second_lastname"); 154 expected.name = ASCIIToUTF16("second_lastname");
155 expected.value = ASCIIToUTF16("Hope"); 155 expected.value = ASCIIToUTF16("Hope");
156 EXPECT_FORM_FIELD_DATA_EQUALS(expected, forms[0].fields[1]); 156 EXPECT_FORM_FIELD_DATA_EQUALS(expected, forms[0].fields[1]);
157 157
158 expected.name = ASCIIToUTF16("second_email"); 158 expected.name = ASCIIToUTF16("second_email");
159 expected.value = ASCIIToUTF16("bobhope@example.com"); 159 expected.value = ASCIIToUTF16("bobhope@example.com");
160 EXPECT_FORM_FIELD_DATA_EQUALS(expected, forms[0].fields[2]); 160 EXPECT_FORM_FIELD_DATA_EQUALS(expected, forms[0].fields[2]);
161 } 161 }
162 162
163 TEST_F(AutofillRendererTest, EnsureNoFormSeenIfTooFewFields) { 163 TEST_F(AutofillRendererTest, EnsureNoFormSeenIfTooFewFields) {
164 LoadHTML("<form method=\"POST\">" 164 LoadHTML("<form method='POST'>"
165 " <input type=\"text\" id=\"firstname\"/>" 165 " <input type='text' id='firstname'/>"
166 " <input type=\"text\" id=\"middlename\"/>" 166 " <input type='text' id='middlename'/>"
167 "</form>"); 167 "</form>");
168 168
169 // Verify that "FormsSeen" isn't sent, as there are too few fields. 169 // Verify that "FormsSeen" isn't sent, as there are too few fields.
170 const IPC::Message* message = render_thread_->sink().GetFirstMessageMatching( 170 const IPC::Message* message = render_thread_->sink().GetFirstMessageMatching(
171 AutofillHostMsg_FormsSeen::ID); 171 AutofillHostMsg_FormsSeen::ID);
172 ASSERT_NE(static_cast<IPC::Message*>(NULL), message); 172 ASSERT_NE(static_cast<IPC::Message*>(NULL), message);
173 AutofillHostMsg_FormsSeen::Param params; 173 AutofillHostMsg_FormsSeen::Param params;
174 AutofillHostMsg_FormsSeen::Read(message, &params); 174 AutofillHostMsg_FormsSeen::Read(message, &params);
175 const std::vector<FormData>& forms = params.a; 175 const std::vector<FormData>& forms = params.a;
176 ASSERT_EQ(0UL, forms.size()); 176 ASSERT_EQ(0UL, forms.size());
177 } 177 }
178 178
179 TEST_F(AutofillRendererTest, ShowAutofillWarning) { 179 TEST_F(AutofillRendererTest, ShowAutofillWarning) {
180 LoadHTML("<form method=\"POST\" autocomplete=\"Off\">" 180 LoadHTML("<form method='POST' autocomplete='Off'>"
181 " <input id=\"firstname\" autocomplete=\"OFF\"/>" 181 " <input id='firstname' autocomplete='OFF'/>"
182 " <input id=\"middlename\"/>" 182 " <input id='middlename'/>"
183 " <input id=\"lastname\"/>" 183 " <input id='lastname'/>"
184 "</form>"); 184 "</form>");
185 185
186 // Verify that "QueryFormFieldAutofill" isn't sent prior to a user 186 // Verify that "QueryFormFieldAutofill" isn't sent prior to a user
187 // interaction. 187 // interaction.
188 const IPC::Message* message0 = render_thread_->sink().GetFirstMessageMatching( 188 const IPC::Message* message0 = render_thread_->sink().GetFirstMessageMatching(
189 AutofillHostMsg_QueryFormFieldAutofill::ID); 189 AutofillHostMsg_QueryFormFieldAutofill::ID);
190 EXPECT_EQ(static_cast<IPC::Message*>(NULL), message0); 190 EXPECT_EQ(static_cast<IPC::Message*>(NULL), message0);
191 191
192 WebFrame* web_frame = GetMainFrame(); 192 WebFrame* web_frame = GetMainFrame();
193 WebDocument document = web_frame->document(); 193 WebDocument document = web_frame->document();
(...skipping 28 matching lines...) Expand all
222 EXPECT_TRUE(query_param.e); 222 EXPECT_TRUE(query_param.e);
223 } 223 }
224 224
225 // Regression test for [ http://crbug.com/346010 ]. 225 // Regression test for [ http://crbug.com/346010 ].
226 TEST_F(AutofillRendererTest, DontCrashWhileAssociatingForms) { 226 TEST_F(AutofillRendererTest, DontCrashWhileAssociatingForms) {
227 LoadHTML("<form id='form'>" 227 LoadHTML("<form id='form'>"
228 "<foo id='foo'>" 228 "<foo id='foo'>"
229 "<script id='script'>" 229 "<script id='script'>"
230 "document.documentElement.appendChild(foo);" 230 "document.documentElement.appendChild(foo);"
231 "newDoc = document.implementation.createDocument(" 231 "newDoc = document.implementation.createDocument("
232 " \"http://www.w3.org/1999/xhtml\", \"html\");" 232 " 'http://www.w3.org/1999/xhtml', 'html');"
233 "foo.insertBefore(form, script);" 233 "foo.insertBefore(form, script);"
234 "newDoc.adoptNode(foo);" 234 "newDoc.adoptNode(foo);"
235 "</script>"); 235 "</script>");
236 236
237 // Shouldn't crash. 237 // Shouldn't crash.
238 } 238 }
239 239
240 class RequestAutocompleteRendererTest : public AutofillRendererTest { 240 class RequestAutocompleteRendererTest : public AutofillRendererTest {
241 public: 241 public:
242 RequestAutocompleteRendererTest() 242 RequestAutocompleteRendererTest()
243 : invoking_frame_(NULL), sibling_frame_(NULL) {} 243 : invoking_frame_(NULL), sibling_frame_(NULL) {}
244 virtual ~RequestAutocompleteRendererTest() {} 244 virtual ~RequestAutocompleteRendererTest() {}
245 245
246 protected: 246 protected:
247 virtual void SetUp() OVERRIDE { 247 virtual void SetUp() OVERRIDE {
248 AutofillRendererTest::SetUp(); 248 AutofillRendererTest::SetUp();
249 249
250 // Bypass the HTTPS-only restriction to show requestAutocomplete. 250 // Bypass the HTTPS-only restriction to show requestAutocomplete.
251 CommandLine* command_line = CommandLine::ForCurrentProcess(); 251 CommandLine* command_line = CommandLine::ForCurrentProcess();
252 command_line->AppendSwitch(::switches::kReduceSecurityForTesting); 252 command_line->AppendSwitch(::switches::kReduceSecurityForTesting);
253 253
254 GURL url("data:text/html;charset=utf-8," 254 GURL url("data:text/html;charset=utf-8,"
255 "<form><input autocomplete=cc-number></form>"); 255 "<form><input autocomplete=cc-number></form>");
256 const char kDoubleIframeHtml[] = "<iframe id=subframe src=\"%s\"></iframe>" 256 const char kDoubleIframeHtml[] = "<iframe id=subframe src='%s'></iframe>"
257 "<iframe id=sibling></iframe>"; 257 "<iframe id=sibling></iframe>";
258 LoadHTML(base::StringPrintf(kDoubleIframeHtml, url.spec().c_str()).c_str()); 258 LoadHTML(base::StringPrintf(kDoubleIframeHtml, url.spec().c_str()).c_str());
259 259
260 WebElement subframe = GetMainFrame()->document().getElementById("subframe"); 260 WebElement subframe = GetMainFrame()->document().getElementById("subframe");
261 ASSERT_FALSE(subframe.isNull()); 261 ASSERT_FALSE(subframe.isNull());
262 invoking_frame_ = WebLocalFrame::fromFrameOwnerElement(subframe); 262 invoking_frame_ = WebLocalFrame::fromFrameOwnerElement(subframe);
263 ASSERT_TRUE(invoking_frame()); 263 ASSERT_TRUE(invoking_frame());
264 ASSERT_EQ(GetMainFrame(), invoking_frame()->parent()); 264 ASSERT_EQ(GetMainFrame(), invoking_frame()->parent());
265 265
266 WebElement sibling = GetMainFrame()->document().getElementById("sibling"); 266 WebElement sibling = GetMainFrame()->document().getElementById("sibling");
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 } 354 }
355 355
356 TEST_F(RequestAutocompleteRendererTest, InvokingTwiceOnlyShowsOnce) { 356 TEST_F(RequestAutocompleteRendererTest, InvokingTwiceOnlyShowsOnce) {
357 // Attempting to show the requestAutocomplete dialog again should be ignored. 357 // Attempting to show the requestAutocomplete dialog again should be ignored.
358 autofill_agent_->didRequestAutocomplete(invoking_form()); 358 autofill_agent_->didRequestAutocomplete(invoking_form());
359 EXPECT_FALSE(render_thread_->sink().GetFirstMessageMatching( 359 EXPECT_FALSE(render_thread_->sink().GetFirstMessageMatching(
360 AutofillHostMsg_RequestAutocomplete::ID)); 360 AutofillHostMsg_RequestAutocomplete::ID));
361 } 361 }
362 362
363 } // namespace autofill 363 } // namespace autofill
OLDNEW
« no previous file with comments | « no previous file | chrome/renderer/autofill/form_autofill_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698