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

Unified Diff: chrome/browser/task_manager/providers/web_contents/subframe_task_browsertest.cc

Issue 2437253002: Improve TDI render process naming in the task manager. (Closed)
Patch Set: ncarter Created 4 years, 2 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
Index: chrome/browser/task_manager/providers/web_contents/subframe_task_browsertest.cc
diff --git a/chrome/browser/task_manager/providers/web_contents/subframe_task_browsertest.cc b/chrome/browser/task_manager/providers/web_contents/subframe_task_browsertest.cc
index 8608ae95fe61db1b9742241ea89ab1a3abad7b16..671e822881f3d09b486ef216d15f53da1996424f 100644
--- a/chrome/browser/task_manager/providers/web_contents/subframe_task_browsertest.cc
+++ b/chrome/browser/task_manager/providers/web_contents/subframe_task_browsertest.cc
@@ -2,12 +2,16 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/command_line.h"
#include "base/macros.h"
#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/task_manager/mock_web_contents_task_manager.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/grit/generated_resources.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
+#include "content/public/common/content_switches.h"
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/test_utils.h"
#include "net/dns/mock_host_resolver.h"
@@ -30,11 +34,16 @@ base::string16 GetExpectedSubframeTitlePrefix() {
base::string16());
}
-base::string16 PrefixExpectedTabTitle(const char* title) {
+base::string16 PrefixExpectedTabTitle(const std::string& title) {
return l10n_util::GetStringFUTF16(IDS_TASK_MANAGER_TAB_PREFIX,
base::UTF8ToUTF16(title));
}
+base::string16 PrefixExpectedTDIRowTitle(const std::string& title) {
+ return l10n_util::GetStringFUTF16(IDS_TASK_MANAGER_ISOLATED_SUBFRAMES_PREFIX,
+ base::UTF8ToUTF16(title));
+}
+
} // namespace
// A test for OOPIFs and how they show up in the task manager as
@@ -126,4 +135,78 @@ IN_PROC_BROWSER_TEST_F(SubframeTaskBrowserTest, TaskManagerShowsSubframeTasks) {
simple_page_task->title());
}
+// A test for top document isolation and how subframes show up in the task
+// manager as SubframeTasks.
+class SubframeTaskTDIBrowserTest : public InProcessBrowserTest {
+ public:
+ SubframeTaskTDIBrowserTest() {}
+ ~SubframeTaskTDIBrowserTest() override {}
+
+ void SetUpCommandLine(base::CommandLine* command_line) override {
+ InProcessBrowserTest::SetUpCommandLine(command_line);
+ command_line->AppendSwitch(switches::kTopDocumentIsolation);
+ }
+
+ void SetUpOnMainThread() override {
+ host_resolver()->AddRule("*", "127.0.0.1");
+ ASSERT_TRUE(embedded_test_server()->Start());
+ content::SetupCrossSiteRedirector(embedded_test_server());
+ }
+
+ void NavigateTo(const char* page_url) const {
+ ui_test_utils::NavigateToURL(browser(),
+ embedded_test_server()->GetURL(page_url));
+ }
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(SubframeTaskTDIBrowserTest);
+};
+
+// Makes sure that subframe row gets updated with the new title when the main
+// frame's title changes.
+IN_PROC_BROWSER_TEST_F(SubframeTaskTDIBrowserTest,
+ SubframeRowGetsUpdatedParentPageTitle) {
+ if (content::AreAllSitesIsolatedForTesting()) {
+ // If full site isolation is turned on, it supersedes top document
+ // isolation, so bail if it is.
+ return;
+ }
+
+ MockWebContentsTaskManager task_manager;
+ EXPECT_TRUE(task_manager.tasks().empty());
+ task_manager.StartObserving();
+
+ // Currently only the about:blank page.
+ ASSERT_EQ(1U, task_manager.tasks().size());
+ const Task* about_blank_task = task_manager.tasks().front();
+ EXPECT_EQ(Task::RENDERER, about_blank_task->GetType());
+ EXPECT_EQ(PrefixExpectedTabTitle("about:blank"), about_blank_task->title());
+
+ // Start with a known title, make sure everything starts correctly.
+ NavigateTo(kCrossSitePageUrl);
+
+ ASSERT_EQ(2U, task_manager.tasks().size());
+ const Task* main_task = task_manager.tasks()[0];
+ const Task* tdi_task = task_manager.tasks()[1];
+ EXPECT_EQ(Task::RENDERER, main_task->GetType());
+ EXPECT_EQ(Task::RENDERER, tdi_task->GetType());
+ std::string main_title = "cross-site iframe test";
+ EXPECT_EQ(PrefixExpectedTabTitle(main_title), main_task->title());
+ EXPECT_EQ(PrefixExpectedTDIRowTitle(main_title), tdi_task->title());
+
+ // Change the title on the main page, and make sure the TDI row reflects it.
+ std::string new_title = "new title";
+ std::string script = "document.title = '" + new_title + "'";
+ content::WebContents* web_contents =
+ browser()->tab_strip_model()->GetActiveWebContents();
+ content::TitleWatcher title_watcher(web_contents,
+ base::UTF8ToUTF16(new_title));
+ EXPECT_TRUE(ExecuteScript(web_contents, script));
+ base::string16 actual_title = title_watcher.WaitAndGetTitle();
+ EXPECT_EQ(new_title, base::UTF16ToUTF8(actual_title));
+
+ EXPECT_EQ(PrefixExpectedTabTitle(new_title), main_task->title());
+ EXPECT_EQ(PrefixExpectedTDIRowTitle(new_title), tdi_task->title());
+}
+
} // namespace task_manager

Powered by Google App Engine
This is Rietveld 408576698