Index: chrome/browser/password_manager/password_manager_browsertest.cc |
diff --git a/chrome/browser/password_manager/password_manager_browsertest.cc b/chrome/browser/password_manager/password_manager_browsertest.cc |
index c5d05d396671a933f4421a9fedf0ad733982bf15..317f23c3b4befdbb2141114938fcb8016d721cfc 100644 |
--- a/chrome/browser/password_manager/password_manager_browsertest.cc |
+++ b/chrome/browser/password_manager/password_manager_browsertest.cc |
@@ -163,6 +163,45 @@ void TestPromptNotShown(const char* failure_message, |
EXPECT_FALSE(prompt_observer->IsShowingSavePrompt()); |
} |
+// Opens the internals page, then some page with a HTML form. Then it activates |
+// back the internals page and waits until it contains the string segment |str|. |
+// The check is done by a repeatedly called JavaScript function, which navigates |
vasilii
2016/08/30 14:09:48
obsolete
vabr (Chromium)
2016/09/02 16:29:22
Thanks for spotting. I inlined the helper method,
|
+// away from the internals page as soon as it finds |str|. Thus, the waiting for |
+// |str| is reduced to waiting for a navigation. |browser| needs to represent |
+// the current test Chrome window. |
+void WaitForStringInInternals(const std::string& str, |
+ const GURL& form_page, |
+ Browser* browser) { |
+ ui_test_utils::NavigateToURLWithDisposition( |
+ browser, GURL("chrome://password-manager-internals"), CURRENT_TAB, |
+ ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
+ content::WebContents* internals_web_contents = |
+ browser->tab_strip_model()->GetActiveWebContents(); |
+ |
+ ui_test_utils::NavigateToURLWithDisposition( |
+ browser, form_page, NEW_FOREGROUND_TAB, |
+ ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
+ content::WebContents* forms_web_contents = |
+ browser->tab_strip_model()->GetActiveWebContents(); |
+ |
+ // Reload the frame with the forms to ensure that the activation of logging |
+ // was propagated to the renderer before it could emit the first log. |
+ NavigationObserver observer(forms_web_contents); |
+ forms_web_contents->ReloadFocusedFrame(false); |
+ observer.Wait(); |
+ |
+ std::string find_logs = |
+ "var text = document.getElementById('log-entries').innerText;" |
+ "var logs_found = /" + |
+ str + |
+ "/.test(text);" |
+ "window.domAutomationController.send(logs_found);"; |
+ bool logs_found = false; |
+ ASSERT_TRUE(content::ExecuteScriptAndExtractBool( |
+ internals_web_contents->GetRenderViewHost(), find_logs, &logs_found)); |
+ EXPECT_TRUE(logs_found); |
+} |
+ |
} // namespace |
namespace password_manager { |
@@ -2742,37 +2781,20 @@ IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase, |
EXPECT_EQ("mypassword", actual_password); |
} |
-// Check that the internals page contains logs both from the renderer and the |
-// browser. |
-IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase, InternalsPage) { |
- ui_test_utils::NavigateToURLWithDisposition( |
- browser(), GURL("chrome://password-manager-internals"), CURRENT_TAB, |
- ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
- content::WebContents* internals_web_contents = WebContents(); |
- |
- ui_test_utils::NavigateToURLWithDisposition( |
- browser(), embedded_test_server()->GetURL("/password/password_form.html"), |
- NEW_FOREGROUND_TAB, ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
- |
- std::string find_renderer_logs = |
- "var text = document.getElementById('log-entries').innerText;" |
- "var logs_found = /PasswordAutofillAgent::/.test(text);" |
- "window.domAutomationController.send(logs_found);"; |
- bool renderer_logs_found; |
- ASSERT_TRUE(content::ExecuteScriptAndExtractBool( |
- internals_web_contents->GetRenderViewHost(), find_renderer_logs, |
- &renderer_logs_found)); |
- EXPECT_TRUE(renderer_logs_found); |
+// Check that the internals page contains logs from the renderer. |
+IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase, InternalsPage_Renderer) { |
+ WaitForStringInInternals( |
+ "PasswordAutofillAgent::", |
+ embedded_test_server()->GetURL("/password/password_form.html"), |
+ browser()); |
+} |
- std::string find_browser_logs = |
- "var text = document.getElementById('log-entries').innerText;" |
- "var logs_found = /PasswordManager::/.test(text);" |
- "window.domAutomationController.send(logs_found);"; |
- bool browser_logs_found; |
- ASSERT_TRUE(content::ExecuteScriptAndExtractBool( |
- internals_web_contents->GetRenderViewHost(), find_browser_logs, |
- &browser_logs_found)); |
- EXPECT_TRUE(browser_logs_found); |
+// Check that the internals page contains logs from the browser. |
+IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase, InternalsPage_Browser) { |
+ WaitForStringInInternals( |
+ "PasswordManager::", |
+ embedded_test_server()->GetURL("/password/password_form.html"), |
+ browser()); |
} |
// Tests that submitted credentials are saved on a password form without |