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

Side by Side Diff: chrome/browser/ui/autofill/autofill_dialog_controller_browsertest.cc

Issue 796493004: Remove FrameDetached and FrameWillClose listeners from AutofillAgent. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add test and fix code Created 6 years 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
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/bind.h" 5 #include "base/bind.h"
6 #include "base/command_line.h" 6 #include "base/command_line.h"
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/memory/weak_ptr.h" 9 #include "base/memory/weak_ptr.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 InitiateDialog(); 456 InitiateDialog();
457 457
458 ChromeAutofillClient* client = 458 ChromeAutofillClient* client =
459 ChromeAutofillClient::FromWebContents(contents); 459 ChromeAutofillClient::FromWebContents(contents);
460 AutofillDialogControllerImpl* controller = 460 AutofillDialogControllerImpl* controller =
461 static_cast<AutofillDialogControllerImpl*>( 461 static_cast<AutofillDialogControllerImpl*>(
462 client->GetDialogControllerForTesting()); 462 client->GetDialogControllerForTesting());
463 return !!controller; 463 return !!controller;
464 } 464 }
465 465
466 void RunTestPageInIframe(const net::SpawnedTestServer& server) {
467 InitializeDOMMessageQueue();
468 GURL iframe_url = server.GetURL(
469 "files/request_autocomplete/test_page.html");
470
471 ui_test_utils::NavigateToURL(
472 browser(), GURL(std::string("data:text/html,") +
473 "<!doctype html>"
474 "<html>"
475 "<body>"
476 "<iframe style='position: fixed;"
477 "height: 100%;"
478 "width: 100%;'"
479 "id='racFrame'></iframe>"
480 "<script>"
481 "function send(msg) {"
482 "domAutomationController.setAutomationId(0);"
483 "domAutomationController.send(msg);"
484 "}"
485 "var racFrame = document.getElementById('racFrame');"
486 "racFrame.onload = function() {"
487 "send('iframe loaded');"
488 "};"
489 "racFrame.src = \"" + iframe_url.spec() + "\";"
490 "function navigateFrame() {"
491 "racFrame.src = 'about:blank';"
492 "}"
493 "</script>"
494 "</body>"
495 "</html>"));
496
497 ChromeAutofillClient* client =
498 ChromeAutofillClient::FromWebContents(GetActiveWebContents());
499 ExpectDomMessage("iframe loaded");
500 EXPECT_FALSE(client->GetDialogControllerForTesting());
501 InitiateDialog();
502 EXPECT_TRUE(client->GetDialogControllerForTesting());
503 }
504
466 // Wait for a message from the DOM automation controller (from JS in the 505 // Wait for a message from the DOM automation controller (from JS in the
467 // page). Requires |SetUpHtmlAndInvoke()| be called first. 506 // page). Requires |SetUpHtmlAndInvoke()| be called first.
468 void ExpectDomMessage(const std::string& expected) { 507 void ExpectDomMessage(const std::string& expected) {
469 std::string message; 508 std::string message;
470 ASSERT_TRUE(dom_message_queue_->WaitForMessage(&message)); 509 ASSERT_TRUE(dom_message_queue_->WaitForMessage(&message));
471 dom_message_queue_->ClearQueue(); 510 dom_message_queue_->ClearQueue();
472 EXPECT_EQ("\"" + expected + "\"", message); 511 EXPECT_EQ("\"" + expected + "\"", message);
473 } 512 }
474 513
475 void InitiateDialog() { 514 void InitiateDialog() {
476 dom_message_queue_.reset(new content::DOMMessageQueue); 515 InitializeDOMMessageQueue();
477
478 // Triggers the onclick handler which invokes requestAutocomplete(). 516 // Triggers the onclick handler which invokes requestAutocomplete().
479 content::WebContents* contents = GetActiveWebContents(); 517 content::WebContents* contents = GetActiveWebContents();
480 content::SimulateMouseClick(contents, 0, blink::WebMouseEvent::ButtonLeft); 518 content::SimulateMouseClick(contents, 0, blink::WebMouseEvent::ButtonLeft);
481 ExpectDomMessage("clicked"); 519 ExpectDomMessage("clicked");
482 } 520 }
483 521
522 void InitializeDOMMessageQueue() {
523 dom_message_queue_.reset(new content::DOMMessageQueue);
524 }
525
484 // Returns the value filled into the first field with autocomplete attribute 526 // Returns the value filled into the first field with autocomplete attribute
485 // equal to |autocomplete_type|, or an empty string if there is no such field. 527 // equal to |autocomplete_type|, or an empty string if there is no such field.
486 std::string GetValueForHTMLFieldOfType(const std::string& autocomplete_type) { 528 std::string GetValueForHTMLFieldOfType(const std::string& autocomplete_type) {
487 std::string script = "getValueForFieldOfType('" + autocomplete_type + "');"; 529 std::string script = "getValueForFieldOfType('" + autocomplete_type + "');";
488 std::string result; 530 std::string result;
489 EXPECT_TRUE(content::ExecuteScriptAndExtractString(GetRenderViewHost(), 531 EXPECT_TRUE(content::ExecuteScriptAndExtractString(GetRenderViewHost(),
490 script, 532 script,
491 &result)); 533 &result));
492 return result; 534 return result;
493 } 535 }
(...skipping 1260 matching lines...) Expand 10 before | Expand all | Expand 10 after
1754 " autocomplete='transaction-amount' value='24' readonly>" 1796 " autocomplete='transaction-amount' value='24' readonly>"
1755 "<input autocomplete='transaction-currency' value='USD' readonly>" 1797 "<input autocomplete='transaction-currency' value='USD' readonly>"
1756 "<input autocomplete='cc-csc'>"); 1798 "<input autocomplete='cc-csc'>");
1757 AutofillDialogControllerImpl* controller = SetUpHtmlAndInvoke(html); 1799 AutofillDialogControllerImpl* controller = SetUpHtmlAndInvoke(html);
1758 ASSERT_TRUE(controller); 1800 ASSERT_TRUE(controller);
1759 1801
1760 EXPECT_EQ(ASCIIToUTF16("24"), controller->transaction_amount_); 1802 EXPECT_EQ(ASCIIToUTF16("24"), controller->transaction_amount_);
1761 EXPECT_EQ(ASCIIToUTF16("USD"), controller->transaction_currency_); 1803 EXPECT_EQ(ASCIIToUTF16("USD"), controller->transaction_currency_);
1762 } 1804 }
1763 1805
1806 IN_PROC_BROWSER_TEST_F(AutofillDialogControllerTest, HideOnNavigate) {
1807 base::WeakPtr<TestAutofillDialogController> weak_ptr =
1808 controller()->AsWeakPtr();
1809 EXPECT_TRUE(weak_ptr.get());
1810
1811 ui_test_utils::NavigateToURL(browser(), GURL("about:blank"));
1812 EXPECT_FALSE(weak_ptr.get());
1813 }
1814
1815 // Tests that the rAc dialog hides when the main frame is navigated, even if
1816 // it was invoked from a child frame.
1817 IN_PROC_BROWSER_TEST_F(AutofillDialogControllerTest, HideOnNavigateMainFrame) {
1818 net::SpawnedTestServer http_server(
1819 net::SpawnedTestServer::TYPE_HTTP,
1820 net::SpawnedTestServer::kLocalhost,
1821 base::FilePath(FILE_PATH_LITERAL("chrome/test/data")));
1822 ASSERT_TRUE(http_server.Start());
1823 RunTestPageInIframe(http_server);
1824
1825 ui_test_utils::NavigateToURL(browser(), GURL("about:blank"));
1826 ChromeAutofillClient* client =
1827 ChromeAutofillClient::FromWebContents(GetActiveWebContents());
1828 EXPECT_FALSE(client->GetDialogControllerForTesting());
1829 }
1830
1831 // Tests that the rAc dialog hides when the iframe it's in is navigated.
1832 IN_PROC_BROWSER_TEST_F(AutofillDialogControllerTest, HideOnNavigateIframe) {
1833 net::SpawnedTestServer http_server(
1834 net::SpawnedTestServer::TYPE_HTTP,
1835 net::SpawnedTestServer::kLocalhost,
1836 base::FilePath(FILE_PATH_LITERAL("chrome/test/data")));
1837 ASSERT_TRUE(http_server.Start());
1838 RunTestPageInIframe(http_server);
1839
1840 std::string unused;
Dan Beam 2014/12/20 01:10:51 lame https://code.google.com/p/chromium/codesearch
1841 ASSERT_TRUE(content::ExecuteScriptAndExtractString(GetRenderViewHost(),
1842 "navigateFrame();",
1843 &unused));
1844 ExpectDomMessage("iframe loaded");
1845 ChromeAutofillClient* client =
1846 ChromeAutofillClient::FromWebContents(GetActiveWebContents());
1847 EXPECT_FALSE(client->GetDialogControllerForTesting());
1848 }
1849
1764 } // namespace autofill 1850 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698