Chromium Code Reviews| 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 6a383b67368fd96ea0a735490518d1f7812af13f..a907aa8739228921b5fcb9341ac1e667d10f7931 100644 |
| --- a/chrome/browser/password_manager/password_manager_browsertest.cc |
| +++ b/chrome/browser/password_manager/password_manager_browsertest.cc |
| @@ -163,6 +163,47 @@ 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 |
| +// 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); |
| + int internals_index = browser->tab_strip_model()->active_index(); |
| + |
| + ui_test_utils::NavigateToURLWithDisposition( |
| + browser, form_page, NEW_FOREGROUND_TAB, |
| + ui_test_utils::BROWSER_TEST_WAIT_FOR_NAVIGATION); |
| + |
| + browser->tab_strip_model()->ActivateTabAt(internals_index, true); |
| + |
| + std::string find_renderer_logs = |
| + "function logChecker() {" |
| + " var text = document.getElementById('log-entries').innerText;" |
| + " var logs_found = /" + |
| + str + |
| + "/.test(text);" |
| + " if (logs_found) {" |
| + " location = 'done.html';" |
| + " } else {" |
| + " window.setTimeout(logChecker, 500);" |
| + " }" |
| + "}" |
| + "window.setTimeout(logChecker, 0);"; |
| + NavigationObserver observer( |
| + browser->tab_strip_model()->GetActiveWebContents()); |
| + ASSERT_TRUE(content::ExecuteScript( |
| + browser->tab_strip_model()->GetActiveWebContents()->GetRenderViewHost(), |
| + find_renderer_logs)); |
| + observer.Wait(); |
| +} |
| + |
| } // namespace |
| namespace password_manager { |
| @@ -2742,43 +2783,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. |
| -// TODO(crbug.com/640737) Flaky on Mac. |
| -#if defined(OS_MACOSX) |
| -#define MAYBE_InternalsPage DISABLED_InternalsPage |
| -#else |
| -#define MAYBE_InternalsPage InternalsPage |
| -#endif |
| -IN_PROC_BROWSER_TEST_F(PasswordManagerBrowserTestBase, MAYBE_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); |
| +// 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_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); |
| - |
| - 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 both from the browser. |
|
vasilii
2016/08/29 13:56:07
logs from the browser.
vabr (Chromium)
2016/08/29 15:40:36
Done.
|
| +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 |