TaskManagerTester: add GetWebContentsTaskTitles

Add a helper function to return a list of tasks. It only
includes task associated with WebContents, which is tabs and
their subpages.

Change-Id: I084485eeab0503e24e3da93afdd6b167ef831611
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3037773
Reviewed-by: Ahmed Fakhry <[email protected]>
Reviewed-by: Alexander Timin <[email protected]>
Reviewed-by: Jeremy Roman <[email protected]>
Commit-Queue: Jeremy Roman <[email protected]>
Auto-Submit: Johann Koenig <[email protected]>
Cr-Commit-Position: refs/heads/master@{#904514}
diff --git a/chrome/browser/chrome_back_forward_cache_browsertest.cc b/chrome/browser/chrome_back_forward_cache_browsertest.cc
index ff292a58..bb5e170 100644
--- a/chrome/browser/chrome_back_forward_cache_browsertest.cc
+++ b/chrome/browser/chrome_back_forward_cache_browsertest.cc
@@ -501,23 +501,6 @@
     MetricsChromeBackForwardCacheBrowserTest,
     testing::ValuesIn(MetricsChromeBackForwardCacheBrowserTestValues()));
 
-namespace {
-
-// TODO(johannkoenig): Deduplicate this with
-// chrome/browser/portal/portal_browsertest.cc.
-std::vector<std::u16string> GetRendererTaskTitles(
-    task_manager::TaskManagerTester* tester) {
-  std::vector<std::u16string> renderer_titles;
-  renderer_titles.reserve(tester->GetRowCount());
-  for (int row = 0; row < tester->GetRowCount(); row++) {
-    if (tester->GetTabId(row) != SessionID::InvalidValue())
-      renderer_titles.push_back(tester->GetRowTitle(row));
-  }
-  return renderer_titles;
-}
-
-}  // namespace
-
 // Ensure that BackForwardCache RenderFrameHosts are shown in the Task Manager.
 IN_PROC_BROWSER_TEST_F(ChromeBackForwardCacheBrowserTest,
                        ShowMainFrameInTaskManager) {
@@ -555,7 +538,7 @@
       1, expected_url_b_active_title);
   task_manager::browsertest_util::WaitForTaskManagerRows(
       1, expected_url_a_cached_title);
-  EXPECT_THAT(GetRendererTaskTitles(tester.get()),
+  EXPECT_THAT(tester->GetWebContentsTaskTitles(),
               ::testing::ElementsAre(expected_url_b_active_title,
                                      expected_url_a_cached_title));
 
@@ -572,7 +555,7 @@
       1, expected_url_a_active_title);
   task_manager::browsertest_util::WaitForTaskManagerRows(
       1, expected_url_b_cached_title);
-  EXPECT_THAT(GetRendererTaskTitles(tester.get()),
+  EXPECT_THAT(tester->GetWebContentsTaskTitles(),
               ::testing::ElementsAre(expected_url_a_active_title,
                                      expected_url_b_cached_title));
 }
@@ -624,7 +607,7 @@
       1, expected_url_a_cached_subframe_b_title);
   task_manager::browsertest_util::WaitForTaskManagerRows(
       1, expected_url_a_cached_subframe_c_title);
-  EXPECT_THAT(GetRendererTaskTitles(tester.get()),
+  EXPECT_THAT(tester->GetWebContentsTaskTitles(),
               ::testing::ElementsAre(expected_url_b_active_title,
                                      expected_url_a_cached_title,
                                      expected_url_a_cached_subframe_b_title,
@@ -665,7 +648,7 @@
       1, expected_url_b_active_title);
   task_manager::browsertest_util::WaitForTaskManagerRows(
       1, expected_url_a_cached_title);
-  EXPECT_THAT(GetRendererTaskTitles(tester.get()),
+  EXPECT_THAT(tester->GetWebContentsTaskTitles(),
               ::testing::ElementsAre(expected_url_b_active_title,
                                      expected_url_a_cached_title));
 }
diff --git a/chrome/browser/portal/portal_browsertest.cc b/chrome/browser/portal/portal_browsertest.cc
index 2ed97ce..2b71ef48 100644
--- a/chrome/browser/portal/portal_browsertest.cc
+++ b/chrome/browser/portal/portal_browsertest.cc
@@ -180,21 +180,6 @@
   EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle());
 }
 
-namespace {
-
-std::vector<std::u16string> GetRendererTaskTitles(
-    task_manager::TaskManagerTester* tester) {
-  std::vector<std::u16string> renderer_titles;
-  renderer_titles.reserve(tester->GetRowCount());
-  for (int row = 0; row < tester->GetRowCount(); row++) {
-    if (tester->GetTabId(row) != SessionID::InvalidValue())
-      renderer_titles.push_back(tester->GetRowTitle(row));
-  }
-  return renderer_titles;
-}
-
-}  // namespace
-
 // The task manager should show the portal tasks, and update the tasks after
 // activation as tab contents become portals and vice versa.
 IN_PROC_BROWSER_TEST_F(PortalBrowserTest, TaskManagerUpdatesAfterActivation) {
@@ -221,7 +206,7 @@
       1, expected_tab_title_before_activation);
   task_manager::browsertest_util::WaitForTaskManagerRows(1,
                                                          expected_portal_title);
-  EXPECT_THAT(GetRendererTaskTitles(tester.get()),
+  EXPECT_THAT(tester->GetWebContentsTaskTitles(),
               ::testing::ElementsAre(expected_tab_title_before_activation,
                                      expected_portal_title));
 
@@ -231,7 +216,7 @@
       1, expected_tab_title_after_activation);
   task_manager::browsertest_util::WaitForTaskManagerRows(1,
                                                          expected_portal_title);
-  EXPECT_THAT(GetRendererTaskTitles(tester.get()),
+  EXPECT_THAT(tester->GetWebContentsTaskTitles(),
               ::testing::ElementsAre(expected_tab_title_after_activation,
                                      expected_portal_title));
 }
@@ -295,7 +280,7 @@
                                                          expected_tab_title);
   task_manager::browsertest_util::WaitForTaskManagerRows(
       kNumTabs * kPortalsPerTab, expected_portal_title);
-  EXPECT_THAT(GetRendererTaskTitles(tester.get()), expected_titles);
+  EXPECT_THAT(tester->GetWebContentsTaskTitles(), expected_titles);
 }
 
 IN_PROC_BROWSER_TEST_F(PortalBrowserTest, PdfViewerLoadsInPortal) {
diff --git a/chrome/browser/task_manager/task_manager_tester.cc b/chrome/browser/task_manager/task_manager_tester.cc
index 9807bf7..60621f45 100644
--- a/chrome/browser/task_manager/task_manager_tester.cc
+++ b/chrome/browser/task_manager/task_manager_tester.cc
@@ -185,6 +185,17 @@
   return model_->GetRowsGroupRange(row, out_start, out_length);
 }
 
+std::vector<std::u16string> TaskManagerTester::GetWebContentsTaskTitles() {
+  std::vector<std::u16string> titles;
+  titles.reserve(GetRowCount());
+  for (int row = 0; row < GetRowCount(); row++) {
+    // Exclude tasks which are not associated with a WebContents.
+    if (GetTabId(row) != SessionID::InvalidValue())
+      titles.push_back(GetRowTitle(row));
+  }
+  return titles;
+}
+
 TaskManagerInterface* TaskManagerTester::task_manager() {
   return model_->observed_task_manager();
 }
diff --git a/chrome/browser/task_manager/task_manager_tester.h b/chrome/browser/task_manager/task_manager_tester.h
index 847dad9..51aa0808 100644
--- a/chrome/browser/task_manager/task_manager_tester.h
+++ b/chrome/browser/task_manager/task_manager_tester.h
@@ -58,6 +58,10 @@
   // |row_index| belongs.
   void GetRowsGroupRange(int row, int* out_start, int* out_length);
 
+  // Get all task titles associated with a WebContents and return them in a
+  // vector.
+  std::vector<std::u16string> GetWebContentsTaskTitles();
+
  private:
   explicit TaskManagerTester(const base::RepeatingClosure& on_resource_change);