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

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

Issue 1931043002: Remove requestAutocomplete (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 7 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 | « chrome/chrome_tests_unit.gypi ('k') | chrome/test/BUILD.gn » ('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 <tuple> 5 #include <tuple>
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/files/file_util.h" 8 #include "base/files/file_util.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 class AutofillRendererTest : public ChromeRenderViewTest { 46 class AutofillRendererTest : public ChromeRenderViewTest {
47 public: 47 public:
48 AutofillRendererTest() {} 48 AutofillRendererTest() {}
49 ~AutofillRendererTest() override {} 49 ~AutofillRendererTest() override {}
50 50
51 protected: 51 protected:
52 void SetUp() override { 52 void SetUp() override {
53 ChromeRenderViewTest::SetUp(); 53 ChromeRenderViewTest::SetUp();
54 } 54 }
55 55
56 void SimulateRequestAutocompleteResult(
57 blink::WebFrame* invoking_frame,
58 const blink::WebFormElement::AutocompleteResult& result,
59 const base::string16& message) {
60 AutofillMsg_RequestAutocompleteResult msg(0, result, message, FormData());
61 content::RenderFrame::FromWebFrame(invoking_frame)->OnMessageReceived(msg);
62 }
63
64 private: 56 private:
65 DISALLOW_COPY_AND_ASSIGN(AutofillRendererTest); 57 DISALLOW_COPY_AND_ASSIGN(AutofillRendererTest);
66 }; 58 };
67 59
68 TEST_F(AutofillRendererTest, SendForms) { 60 TEST_F(AutofillRendererTest, SendForms) {
69 LoadHTML("<form method='POST'>" 61 LoadHTML("<form method='POST'>"
70 " <input type='text' id='firstname'/>" 62 " <input type='text' id='firstname'/>"
71 " <input type='text' id='middlename'/>" 63 " <input type='text' id='middlename'/>"
72 " <input type='text' id='lastname' autoComplete='off'/>" 64 " <input type='text' id='lastname' autoComplete='off'/>"
73 " <input type='hidden' id='email'/>" 65 " <input type='hidden' id='email'/>"
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 ASSERT_EQ(nullptr, render_thread_->sink().GetFirstMessageMatching( 255 ASSERT_EQ(nullptr, render_thread_->sink().GetFirstMessageMatching(
264 AutofillHostMsg_TextFieldDidChange::ID)); 256 AutofillHostMsg_TextFieldDidChange::ID));
265 257
266 // A user gesture will send a message to the browser. 258 // A user gesture will send a message to the browser.
267 EnableUserGestureSimulationForAutofill(); 259 EnableUserGestureSimulationForAutofill();
268 SimulateUserInputChangeForElement(&full_name, "Alice"); 260 SimulateUserInputChangeForElement(&full_name, "Alice");
269 ASSERT_NE(nullptr, render_thread_->sink().GetFirstMessageMatching( 261 ASSERT_NE(nullptr, render_thread_->sink().GetFirstMessageMatching(
270 AutofillHostMsg_TextFieldDidChange::ID)); 262 AutofillHostMsg_TextFieldDidChange::ID));
271 } 263 }
272 264
273 class RequestAutocompleteRendererTest : public AutofillRendererTest {
274 public:
275 RequestAutocompleteRendererTest()
276 : invoking_frame_(NULL), sibling_frame_(NULL) {}
277 ~RequestAutocompleteRendererTest() override {}
278
279 protected:
280 void SetUp() override {
281 AutofillRendererTest::SetUp();
282
283 // Bypass the HTTPS-only restriction to show requestAutocomplete.
284 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
285 command_line->AppendSwitch(::switches::kReduceSecurityForTesting);
286
287 GURL url("data:text/html;charset=utf-8,"
288 "<form><input autocomplete=cc-number></form>");
289 const char kDoubleIframeHtml[] = "<iframe id=subframe src='%s'></iframe>"
290 "<iframe id=sibling></iframe>";
291 LoadHTML(base::StringPrintf(kDoubleIframeHtml, url.spec().c_str()).c_str());
292
293 WebElement subframe = GetMainFrame()->document().getElementById("subframe");
294 ASSERT_FALSE(subframe.isNull());
295 invoking_frame_ = WebLocalFrame::fromFrameOwnerElement(subframe);
296 ASSERT_TRUE(invoking_frame());
297 ASSERT_EQ(GetMainFrame(), invoking_frame()->parent());
298
299 WebElement sibling = GetMainFrame()->document().getElementById("sibling");
300 ASSERT_FALSE(sibling.isNull());
301 sibling_frame_ = WebLocalFrame::fromFrameOwnerElement(sibling);
302 ASSERT_TRUE(sibling_frame());
303
304 WebVector<WebFormElement> forms;
305 invoking_frame()->document().forms(forms);
306 ASSERT_EQ(1U, forms.size());
307 invoking_form_ = forms[0];
308 ASSERT_FALSE(invoking_form().isNull());
309
310 render_thread_->sink().ClearMessages();
311
312 // Invoke requestAutocomplete to show the dialog.
313 invoking_frame_->autofillClient()->didRequestAutocomplete(invoking_form());
314 ASSERT_TRUE(render_thread_->sink().GetFirstMessageMatching(
315 AutofillHostMsg_RequestAutocomplete::ID));
316
317 render_thread_->sink().ClearMessages();
318 }
319
320 void TearDown() override {
321 invoking_form_.reset();
322 AutofillRendererTest::TearDown();
323 }
324
325 void NavigateFrame(WebFrame* frame) {
326 frame->loadRequest(WebURLRequest(GURL("about:blank")));
327 ProcessPendingMessages();
328 }
329
330 const WebFormElement& invoking_form() const { return invoking_form_; }
331 WebLocalFrame* invoking_frame() { return invoking_frame_; }
332 WebFrame* sibling_frame() { return sibling_frame_; }
333
334 protected:
335 WebFormElement invoking_form_;
336 WebLocalFrame* invoking_frame_;
337 WebFrame* sibling_frame_;
338
339 private:
340 DISALLOW_COPY_AND_ASSIGN(RequestAutocompleteRendererTest);
341 };
342
343 TEST_F(RequestAutocompleteRendererTest, InvokingTwiceOnlyShowsOnce) {
344 // Attempting to show the requestAutocomplete dialog again should be ignored.
345 invoking_frame_->autofillClient()->didRequestAutocomplete(invoking_form());
346 EXPECT_FALSE(render_thread_->sink().GetFirstMessageMatching(
347 AutofillHostMsg_RequestAutocomplete::ID));
348 }
349
350 } // namespace autofill 265 } // namespace autofill
OLDNEW
« no previous file with comments | « chrome/chrome_tests_unit.gypi ('k') | chrome/test/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698