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

Unified Diff: chrome/browser/password_manager/password_manager_browsertest.cc

Issue 2288203002: Redo PasswordManagerBrowserTestBase.InternalsPage (Closed)
Patch Set: Created 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698