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

Side by Side Diff: chrome/browser/task_manager/task_manager_browsertest.cc

Issue 1922683003: Make old task manager tests work against new task manager. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Missing override Created 4 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/task_manager/task_manager.h" 5 #include "chrome/browser/task_manager/task_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 using task_manager::browsertest_util::MatchAnyApp; 55 using task_manager::browsertest_util::MatchAnyApp;
56 using task_manager::browsertest_util::MatchAnyExtension; 56 using task_manager::browsertest_util::MatchAnyExtension;
57 using task_manager::browsertest_util::MatchAnySubframe; 57 using task_manager::browsertest_util::MatchAnySubframe;
58 using task_manager::browsertest_util::MatchAnyTab; 58 using task_manager::browsertest_util::MatchAnyTab;
59 using task_manager::browsertest_util::MatchAnyUtility; 59 using task_manager::browsertest_util::MatchAnyUtility;
60 using task_manager::browsertest_util::MatchApp; 60 using task_manager::browsertest_util::MatchApp;
61 using task_manager::browsertest_util::MatchExtension; 61 using task_manager::browsertest_util::MatchExtension;
62 using task_manager::browsertest_util::MatchSubframe; 62 using task_manager::browsertest_util::MatchSubframe;
63 using task_manager::browsertest_util::MatchTab; 63 using task_manager::browsertest_util::MatchTab;
64 using task_manager::browsertest_util::MatchUtility; 64 using task_manager::browsertest_util::MatchUtility;
65 using task_manager::browsertest_util::TaskManagerTester;
65 using task_manager::browsertest_util::WaitForTaskManagerRows; 66 using task_manager::browsertest_util::WaitForTaskManagerRows;
66 using task_manager::browsertest_util::WaitForTaskManagerStatToExceed; 67 using task_manager::browsertest_util::WaitForTaskManagerStatToExceed;
67 68
68 namespace { 69 namespace {
69 70
70 const base::FilePath::CharType* kTitle1File = FILE_PATH_LITERAL("title1.html"); 71 const base::FilePath::CharType* kTitle1File = FILE_PATH_LITERAL("title1.html");
71 72
72 } // namespace 73 } // namespace
73 74
75 // TODO(nick): Move this file into task_management. https://crbug.com/606963
74 class TaskManagerBrowserTest : public ExtensionBrowserTest { 76 class TaskManagerBrowserTest : public ExtensionBrowserTest {
75 public: 77 public:
76 TaskManagerBrowserTest() {} 78 TaskManagerBrowserTest() {}
77 ~TaskManagerBrowserTest() override {} 79 ~TaskManagerBrowserTest() override {}
78 80
79 TaskManagerModel* model() const { 81 TaskManagerTester* model() { return model_.get(); }
80 return TaskManager::GetInstance()->model();
81 }
82 82
83 void ShowTaskManager() { 83 void ShowTaskManager() {
84 EXPECT_EQ(0, model()->ResourceCount());
85
86 // Show the task manager. This populates the model, and helps with debugging 84 // Show the task manager. This populates the model, and helps with debugging
87 // (you see the task manager). 85 // (you see the task manager).
88 chrome::ShowTaskManager(browser()); 86 chrome::ShowTaskManager(browser());
87 model_ = task_manager::browsertest_util::GetTaskManagerTester();
89 } 88 }
90 89
91 void HideTaskManager() { 90 void HideTaskManager() {
92 // Hide the task manager, and wait for the model to be depopulated. 91 model_.reset();
92
93 // Hide the task manager, and wait for it to go.
93 chrome::HideTaskManager(); 94 chrome::HideTaskManager();
94 base::RunLoop().RunUntilIdle(); // OnWindowClosed happens asynchronously. 95 base::RunLoop().RunUntilIdle(); // OnWindowClosed happens asynchronously.
95 EXPECT_EQ(0, model()->ResourceCount());
96 } 96 }
97 97
98 void Refresh() { 98 void Refresh() {
99 model()->Refresh(); 99 // Refresh() isn't ever needed on the new task manager.
100 } 100 if (switches::NewTaskManagerEnabled())
101 101 return;
102 int GetUpdateTimeMs() { 102 TaskManager::GetInstance()->model()->Refresh();
103 return TaskManagerModel::kUpdateTimeMs;
104 } 103 }
105 104
106 GURL GetTestURL() { 105 GURL GetTestURL() {
107 return ui_test_utils::GetTestUrl( 106 return ui_test_utils::GetTestUrl(
108 base::FilePath(base::FilePath::kCurrentDirectory), 107 base::FilePath(base::FilePath::kCurrentDirectory),
109 base::FilePath(kTitle1File)); 108 base::FilePath(kTitle1File));
110 } 109 }
111 110
112 int FindResourceIndex(const base::string16& title) { 111 int FindResourceIndex(const base::string16& title) {
113 for (int i = 0; i < model()->ResourceCount(); ++i) { 112 for (int i = 0; i < model_->GetRowCount(); ++i) {
114 if (title == model()->GetResourceTitle(i)) 113 if (title == model_->GetRowTitle(i))
115 return i; 114 return i;
116 } 115 }
117 return -1; 116 return -1;
118 } 117 }
119 118
119 // TODO(nick, afakhry): Remove this function. https://crbug.com/606963
120 void DisableNewTaskManagerForBrokenTest() {
121 base::CommandLine::ForCurrentProcess()->AppendSwitch(
122 switches::kDisableNewTaskManager);
123 }
124
120 protected: 125 protected:
121 void SetUpCommandLine(base::CommandLine* command_line) override { 126 void SetUpCommandLine(base::CommandLine* command_line) override {
122 ExtensionBrowserTest::SetUpCommandLine(command_line); 127 ExtensionBrowserTest::SetUpCommandLine(command_line);
123 128
124 // These tests are for the old implementation of the task manager. We must
125 // explicitly disable the new one.
126 task_manager::browsertest_util::EnableOldTaskManager();
127
128 // Do not launch device discovery process. 129 // Do not launch device discovery process.
129 command_line->AppendSwitch(switches::kDisableDeviceDiscoveryNotifications); 130 command_line->AppendSwitch(switches::kDisableDeviceDiscoveryNotifications);
130 } 131 }
131 132
133 void TearDownOnMainThread() override { model_.reset(); }
134
132 private: 135 private:
136 std::unique_ptr<TaskManagerTester> model_;
133 DISALLOW_COPY_AND_ASSIGN(TaskManagerBrowserTest); 137 DISALLOW_COPY_AND_ASSIGN(TaskManagerBrowserTest);
134 }; 138 };
135 139
136 class TaskManagerUtilityProcessBrowserTest : public TaskManagerBrowserTest { 140 class TaskManagerUtilityProcessBrowserTest : public TaskManagerBrowserTest {
137 public: 141 public:
138 TaskManagerUtilityProcessBrowserTest() {} 142 TaskManagerUtilityProcessBrowserTest() {}
139 143
140 protected: 144 protected:
141 void SetUpCommandLine(base::CommandLine* command_line) override { 145 void SetUpCommandLine(base::CommandLine* command_line) override {
142 TaskManagerBrowserTest::SetUpCommandLine(command_line); 146 TaskManagerBrowserTest::SetUpCommandLine(command_line);
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 219
216 // Open a new tab and make sure the task manager notices it. 220 // Open a new tab and make sure the task manager notices it.
217 AddTabAtIndex(0, GetTestURL(), ui::PAGE_TRANSITION_TYPED); 221 AddTabAtIndex(0, GetTestURL(), ui::PAGE_TRANSITION_TYPED);
218 222
219 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("title1.html"))); 223 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("title1.html")));
220 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab())); 224 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
221 225
222 // Killing the tab via task manager should remove the row. 226 // Killing the tab via task manager should remove the row.
223 int tab = FindResourceIndex(MatchTab("title1.html")); 227 int tab = FindResourceIndex(MatchTab("title1.html"));
224 ASSERT_NE(-1, tab); 228 ASSERT_NE(-1, tab);
225 ASSERT_TRUE(model()->GetResourceWebContents(tab) != NULL); 229 ASSERT_NE(-1, model()->GetTabId(tab));
226 ASSERT_TRUE(model()->CanActivate(tab)); 230 model()->Kill(tab);
227 TaskManager::GetInstance()->KillProcess(tab);
228 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchTab("title1.html"))); 231 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchTab("title1.html")));
229 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 232 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
230 233
231 // Tab should reappear in task manager upon reload. 234 // Tab should reappear in task manager upon reload.
232 chrome::Reload(browser(), CURRENT_TAB); 235 chrome::Reload(browser(), CURRENT_TAB);
233 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("title1.html"))); 236 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("title1.html")));
234 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab())); 237 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
235 } 238 }
236 239
237 // Test for http://crbug.com/444945, which is not fixed yet. 240 // Regression test for http://crbug.com/444945.
238 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, 241 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest,
239 DISABLED_NavigateAwayFromHungRenderer) { 242 NavigateAwayFromHungRenderer) {
240 host_resolver()->AddRule("*", "127.0.0.1"); 243 host_resolver()->AddRule("*", "127.0.0.1");
241 ASSERT_TRUE(embedded_test_server()->Start()); 244 ASSERT_TRUE(embedded_test_server()->Start());
242 ShowTaskManager(); 245 ShowTaskManager();
243 246
244 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 247 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
245 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 248 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
246 249
247 GURL url1(embedded_test_server()->GetURL("/title2.html")); 250 GURL url1(embedded_test_server()->GetURL("/title2.html"));
248 GURL url3(embedded_test_server()->GetURL("a.com", "/iframe.html")); 251 GURL url3(embedded_test_server()->GetURL("a.com", "/iframe.html"));
249 252
250 // Open a new tab and make sure the task manager notices it. 253 // Open a new tab and make sure the task manager notices it.
251 AddTabAtIndex(0, url1, ui::PAGE_TRANSITION_TYPED); 254 AddTabAtIndex(0, url1, ui::PAGE_TRANSITION_TYPED);
252 ASSERT_NO_FATAL_FAILURE( 255 ASSERT_NO_FATAL_FAILURE(
253 WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness"))); 256 WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness")));
254 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 257 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
255 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab())); 258 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
256 WebContents* tab1 = browser()->tab_strip_model()->GetActiveWebContents(); 259 WebContents* tab1 = browser()->tab_strip_model()->GetActiveWebContents();
257 260
258 // Initiate a navigation that will create a new WebContents in the same 261 // Initiate a navigation that will create a new WebContents in the same
259 // SiteInstace... 262 // SiteInstance. Then immediately hang the renderer so that title3.html can't
260 content::WebContentsAddedObserver web_contents_added_observer; 263 // load in this process.
261 tab1->GetMainFrame()->ExecuteJavaScriptWithUserGestureForTests( 264 content::WebContentsAddedObserver web_contents_added_observer;
262 base::ASCIIToUTF16("window.open('title3.html', '_blank');")); 265 int dummy_value = 0;
263 // ... then immediately hang the renderer so that title3.html can't load. 266 ASSERT_TRUE(content::ExecuteScriptAndExtractInt(tab1->GetMainFrame(),
264 tab1->GetMainFrame()->ExecuteJavaScriptForTests( 267 "window.open('title3.html', '_blank');\n"
265 base::ASCIIToUTF16("while(1);")); 268 "window.domAutomationController.send(55);\n"
269 "while(1);", &dummy_value));
266 270
267 // Blocks until a new WebContents appears. 271 // Blocks until a new WebContents appears as a result of window.open().
268 WebContents* tab2 = web_contents_added_observer.GetWebContents(); 272 WebContents* tab2 = web_contents_added_observer.GetWebContents();
269 273
270 // Make sure the new WebContents is in tab1's hung renderer process. 274 // Make sure the new WebContents is in tab1's hung renderer process.
271 ASSERT_NE(nullptr, tab2); 275 ASSERT_NE(nullptr, tab2);
272 ASSERT_NE(tab1, tab2); 276 ASSERT_NE(tab1, tab2);
273 ASSERT_EQ(tab1->GetMainFrame()->GetProcess(), 277 ASSERT_EQ(tab1->GetMainFrame()->GetProcess(),
274 tab2->GetMainFrame()->GetProcess()) 278 tab2->GetMainFrame()->GetProcess())
275 << "New WebContents must be in the same process as the old WebContents, " 279 << "New WebContents must be in the same process as the old WebContents, "
276 << "so that the new tab doesn't finish loading (what this test is all " 280 << "so that the new tab doesn't finish loading (what this test is all "
277 << "about)"; 281 << "about)";
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 "chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/" 420 "chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/"
417 "french_sentence.html"))); 421 "french_sentence.html")));
418 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyExtension())); 422 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyExtension()));
419 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 423 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
420 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 424 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
421 425
422 // Kill the process via the BACKGROUND PAGE (not the panel). Verify that both 426 // Kill the process via the BACKGROUND PAGE (not the panel). Verify that both
423 // the background page and the panel go away from the task manager. 427 // the background page and the panel go away from the task manager.
424 int background_page = FindResourceIndex(MatchExtension("My extension 1")); 428 int background_page = FindResourceIndex(MatchExtension("My extension 1"));
425 ASSERT_NE(-1, background_page); 429 ASSERT_NE(-1, background_page);
426 ASSERT_TRUE(model()->GetResourceWebContents(background_page) == NULL); 430 ASSERT_EQ(-1, model()->GetTabId(background_page));
427 ASSERT_FALSE(model()->CanActivate(background_page)); 431 model()->Kill(background_page);
428 TaskManager::GetInstance()->KillProcess(background_page);
429 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension())); 432 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension()));
430 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 433 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
431 } 434 }
432 435
433 // Kills a process that has more than one task manager entry. This test is the 436 // Kills a process that has more than one task manager entry. This test is the
434 // same as KillPanelViaExtensionResource except it does the kill via the other 437 // same as KillPanelViaExtensionResource except it does the kill via the other
435 // entry. 438 // entry.
436 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, KillPanelViaPanelResource) { 439 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, KillPanelViaPanelResource) {
437 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("good") 440 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("good")
438 .AppendASCII("Extensions") 441 .AppendASCII("Extensions")
(...skipping 20 matching lines...) Expand all
459 1, 462 1,
460 MatchExtension( 463 MatchExtension(
461 "chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/" 464 "chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/"
462 "french_sentence.html"))); 465 "french_sentence.html")));
463 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyExtension())); 466 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyExtension()));
464 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 467 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
465 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 468 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
466 469
467 int background_page = FindResourceIndex(MatchExtension("My extension 1")); 470 int background_page = FindResourceIndex(MatchExtension("My extension 1"));
468 ASSERT_NE(-1, background_page); 471 ASSERT_NE(-1, background_page);
469 ASSERT_TRUE(model()->GetResourceWebContents(background_page) == NULL); 472 ASSERT_EQ(-1, model()->GetTabId(background_page));
470 ASSERT_FALSE(model()->CanActivate(background_page));
471 473
472 // Kill the process via the PANEL RESOURCE (not the background page). Verify 474 // Kill the process via the PANEL RESOURCE (not the background page). Verify
473 // that both the background page and the panel go away from the task manager. 475 // that both the background page and the panel go away from the task manager.
474 int panel = FindResourceIndex(MatchExtension( 476 int panel = FindResourceIndex(MatchExtension(
475 "chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/" 477 "chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/"
476 "french_sentence.html")); 478 "french_sentence.html"));
477 ASSERT_NE(-1, panel); 479 ASSERT_NE(-1, panel);
478 ASSERT_TRUE(model()->GetResourceWebContents(panel) != NULL); 480 ASSERT_NE(-1, model()->GetTabId(panel));
479 ASSERT_TRUE(model()->CanActivate(panel)); 481 model()->Kill(panel);
480 TaskManager::GetInstance()->KillProcess(panel);
481 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension())); 482 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension()));
482 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 483 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
483 } 484 }
484 485
485 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeExtensionTabChanges) { 486 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeExtensionTabChanges) {
486 ShowTaskManager(); 487 ShowTaskManager();
487 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 488 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
488 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 489 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
489 490
490 ASSERT_TRUE(LoadExtension( 491 ASSERT_TRUE(LoadExtension(
(...skipping 15 matching lines...) Expand all
506 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED); 507 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED);
507 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchExtension("Foobar"))); 508 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchExtension("Foobar")));
508 ASSERT_NO_FATAL_FAILURE( 509 ASSERT_NO_FATAL_FAILURE(
509 WaitForTaskManagerRows(1, MatchExtension("My extension 1"))); 510 WaitForTaskManagerRows(1, MatchExtension("My extension 1")));
510 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyExtension())); 511 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyExtension()));
511 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 512 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
512 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 513 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
513 514
514 int extension_tab = FindResourceIndex(MatchExtension("Foobar")); 515 int extension_tab = FindResourceIndex(MatchExtension("Foobar"));
515 ASSERT_NE(-1, extension_tab); 516 ASSERT_NE(-1, extension_tab);
516 ASSERT_TRUE(model()->GetResourceWebContents(extension_tab) != NULL); 517 ASSERT_NE(-1, model()->GetTabId(extension_tab));
517 ASSERT_TRUE(model()->CanActivate(extension_tab));
518 518
519 int background_page = FindResourceIndex(MatchExtension("My extension 1")); 519 int background_page = FindResourceIndex(MatchExtension("My extension 1"));
520 ASSERT_NE(-1, background_page); 520 ASSERT_NE(-1, background_page);
521 ASSERT_TRUE(model()->GetResourceWebContents(background_page) == NULL); 521 ASSERT_EQ(-1, model()->GetTabId(background_page));
522 ASSERT_FALSE(model()->CanActivate(background_page));
523 } 522 }
524 523
525 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeExtensionTab) { 524 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeExtensionTab) {
526 // With the task manager closed, open a new tab to an extension URL. 525 // With the task manager closed, open a new tab to an extension URL.
527 // Afterwards, when we open the task manager, the third entry (background 526 // Afterwards, when we open the task manager, the third entry (background
528 // page) should be an extension resource whose title starts with "Extension:". 527 // page) should be an extension resource whose title starts with "Extension:".
529 // The fourth entry (page.html) is also of type extension and has both a 528 // The fourth entry (page.html) is also of type extension and has both a
530 // WebContents and an extension. The title should start with "Extension:". 529 // WebContents and an extension. The title should start with "Extension:".
531 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("good") 530 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("good")
532 .AppendASCII("Extensions") 531 .AppendASCII("Extensions")
533 .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj") 532 .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj")
534 .AppendASCII("1.0.0.0"))); 533 .AppendASCII("1.0.0.0")));
535 GURL url("chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/page.html"); 534 GURL url("chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/page.html");
536 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED); 535 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED);
537 536
538 ShowTaskManager(); 537 ShowTaskManager();
539 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchExtension("Foobar"))); 538 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchExtension("Foobar")));
540 ASSERT_NO_FATAL_FAILURE( 539 ASSERT_NO_FATAL_FAILURE(
541 WaitForTaskManagerRows(1, MatchExtension("My extension 1"))); 540 WaitForTaskManagerRows(1, MatchExtension("My extension 1")));
542 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyExtension())); 541 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyExtension()));
543 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 542 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
544 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 543 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
545 544
546 int extension_tab = FindResourceIndex(MatchExtension("Foobar")); 545 int extension_tab = FindResourceIndex(MatchExtension("Foobar"));
547 ASSERT_NE(-1, extension_tab); 546 ASSERT_NE(-1, extension_tab);
548 ASSERT_TRUE(model()->GetResourceWebContents(extension_tab) != NULL); 547 ASSERT_NE(-1, model()->GetTabId(extension_tab));
549 ASSERT_TRUE(model()->CanActivate(extension_tab));
550 548
551 int background_page = FindResourceIndex(MatchExtension("My extension 1")); 549 int background_page = FindResourceIndex(MatchExtension("My extension 1"));
552 ASSERT_NE(-1, background_page); 550 ASSERT_NE(-1, background_page);
553 ASSERT_TRUE(model()->GetResourceWebContents(background_page) == NULL); 551 ASSERT_EQ(-1, model()->GetTabId(background_page));
554 ASSERT_FALSE(model()->CanActivate(background_page));
555 } 552 }
556 553
557 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeAppTabChanges) { 554 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeAppTabChanges) {
555 // TODO(nick, afakhry): Broken on new task manager because we show
556 // "Extension: Packaged App Test" instead of "App: Packaged App Test".
557 DisableNewTaskManagerForBrokenTest();
558
558 ShowTaskManager(); 559 ShowTaskManager();
559 560
560 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("packaged_app"))); 561 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("packaged_app")));
561 ExtensionService* service = extensions::ExtensionSystem::Get( 562 ExtensionService* service = extensions::ExtensionSystem::Get(
562 browser()->profile())->extension_service(); 563 browser()->profile())->extension_service();
563 const extensions::Extension* extension = 564 const extensions::Extension* extension =
564 service->GetExtensionById(last_loaded_extension_id(), false); 565 service->GetExtensionById(last_loaded_extension_id(), false);
565 566
566 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 567 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
567 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 568 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
568 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension())); 569 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension()));
569 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyApp())); 570 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyApp()));
570 571
571 // Open a new tab to the app's launch URL and make sure we notice that. 572 // Open a new tab to the app's launch URL and make sure we notice that.
572 GURL url(extension->GetResourceURL("main.html")); 573 GURL url(extension->GetResourceURL("main.html"));
573 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED); 574 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED);
574 575
575 // There should be 1 "App: " tab and the original new tab page. 576 // There should be 1 "App: " tab and the original new tab page.
576 ASSERT_NO_FATAL_FAILURE( 577 ASSERT_NO_FATAL_FAILURE(
577 WaitForTaskManagerRows(1, MatchApp("Packaged App Test"))); 578 WaitForTaskManagerRows(1, MatchApp("Packaged App Test")));
578 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyApp())); 579 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyApp()));
579 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 580 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
580 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 581 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
581 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension())); 582 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension()));
582 583
583 // Check that the third entry (main.html) is of type extension and has both 584 // Check that the third entry (main.html) is of type extension and has both
584 // a tab contents and an extension. 585 // a tab contents and an extension.
585 int app_tab = FindResourceIndex(MatchApp("Packaged App Test")); 586 int app_tab = FindResourceIndex(MatchApp("Packaged App Test"));
586 ASSERT_NE(-1, app_tab); 587 ASSERT_NE(-1, app_tab);
587 ASSERT_TRUE(model()->GetResourceWebContents(app_tab) != NULL); 588 ASSERT_NE(-1, model()->GetTabId(app_tab));
588 ASSERT_TRUE(model()->CanActivate(app_tab));
589 ASSERT_EQ(task_manager::Resource::EXTENSION,
590 model()->GetResourceType(app_tab));
591 ASSERT_EQ(2, browser()->tab_strip_model()->count()); 589 ASSERT_EQ(2, browser()->tab_strip_model()->count());
592 590
593 // Unload extension to make sure the tab goes away. 591 // Unload extension to make sure the tab goes away.
594 UnloadExtension(last_loaded_extension_id()); 592 UnloadExtension(last_loaded_extension_id());
595 593
596 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 594 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
597 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyApp())); 595 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyApp()));
598 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension())); 596 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension()));
599 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 597 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
600 ASSERT_EQ(1, browser()->tab_strip_model()->count()); 598 ASSERT_EQ(1, browser()->tab_strip_model()->count());
601 } 599 }
602 600
603 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeAppTab) { 601 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeAppTab) {
602 // TODO(nick, afakhry): Broken on new task manager because we show
603 // "Extension: Packaged App Test" instead of "App: Packaged App Test".
604 DisableNewTaskManagerForBrokenTest();
605
604 ASSERT_TRUE(LoadExtension( 606 ASSERT_TRUE(LoadExtension(
605 test_data_dir_.AppendASCII("packaged_app"))); 607 test_data_dir_.AppendASCII("packaged_app")));
606 ExtensionService* service = extensions::ExtensionSystem::Get( 608 ExtensionService* service = extensions::ExtensionSystem::Get(
607 browser()->profile())->extension_service(); 609 browser()->profile())->extension_service();
608 const extensions::Extension* extension = 610 const extensions::Extension* extension =
609 service->GetExtensionById(last_loaded_extension_id(), false); 611 service->GetExtensionById(last_loaded_extension_id(), false);
610 612
611 // Open a new tab to the app's launch URL and make sure we notice that. 613 // Open a new tab to the app's launch URL and make sure we notice that.
612 GURL url(extension->GetResourceURL("main.html")); 614 GURL url(extension->GetResourceURL("main.html"));
613 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED); 615 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED);
614 616
615 ShowTaskManager(); 617 ShowTaskManager();
616 618
617 ASSERT_NO_FATAL_FAILURE( 619 ASSERT_NO_FATAL_FAILURE(
618 WaitForTaskManagerRows(1, MatchApp("Packaged App Test"))); 620 WaitForTaskManagerRows(1, MatchApp("Packaged App Test")));
619 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 621 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
620 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension())); 622 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension()));
621 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyApp())); 623 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyApp()));
622 624
623 // Check that the third entry (main.html) is of type extension and has both 625 // Check that the third entry (main.html) is of type extension and has both
624 // a tab contents and an extension. 626 // a tab contents and an extension.
625 int app_tab = FindResourceIndex(MatchApp("Packaged App Test")); 627 int app_tab = FindResourceIndex(MatchApp("Packaged App Test"));
626 ASSERT_NE(-1, app_tab); 628 ASSERT_NE(-1, app_tab);
627 ASSERT_TRUE(model()->GetResourceWebContents(app_tab) != NULL); 629 ASSERT_NE(-1, model()->GetTabId(app_tab));
628 ASSERT_TRUE(model()->CanActivate(app_tab));
629 ASSERT_EQ(task_manager::Resource::EXTENSION,
630 model()->GetResourceType(app_tab));
631 } 630 }
632 631
633 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeHostedAppTabChanges) { 632 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeHostedAppTabChanges) {
633 // TODO(nick, afakhry): Broken on new task manager because we show
634 // "Tab: Unmodified" instead of "App: ".
635 DisableNewTaskManagerForBrokenTest();
636
634 ShowTaskManager(); 637 ShowTaskManager();
635 638
636 // The app under test acts on URLs whose host is "localhost", 639 // The app under test acts on URLs whose host is "localhost",
637 // so the URLs we navigate to must have host "localhost". 640 // so the URLs we navigate to must have host "localhost".
638 host_resolver()->AddRule("*", "127.0.0.1"); 641 host_resolver()->AddRule("*", "127.0.0.1");
639 ASSERT_TRUE(embedded_test_server()->Start()); 642 ASSERT_TRUE(embedded_test_server()->Start());
640 GURL::Replacements replace_host; 643 GURL::Replacements replace_host;
641 replace_host.SetHostStr("localhost"); 644 replace_host.SetHostStr("localhost");
642 GURL base_url = embedded_test_server()->GetURL( 645 GURL base_url = embedded_test_server()->GetURL(
643 "/extensions/api_test/app_process/"); 646 "/extensions/api_test/app_process/");
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 693
691 // No change expected. 694 // No change expected.
692 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab())); 695 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
693 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 696 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
694 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("Unmodified"))); 697 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("Unmodified")));
695 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension())); 698 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension()));
696 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyApp())); 699 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyApp()));
697 } 700 }
698 701
699 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeHostedAppTabAfterReload) { 702 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeHostedAppTabAfterReload) {
703 // TODO(nick, afakhry): This fails on the new task manager (we never
704 // reclassify the tab as an app). Remove when fixed.
705 DisableNewTaskManagerForBrokenTest();
706
700 // The app under test acts on URLs whose host is "localhost", 707 // The app under test acts on URLs whose host is "localhost",
701 // so the URLs we navigate to must have host "localhost". 708 // so the URLs we navigate to must have host "localhost".
702 host_resolver()->AddRule("*", "127.0.0.1"); 709 host_resolver()->AddRule("*", "127.0.0.1");
703 ASSERT_TRUE(embedded_test_server()->Start()); 710 ASSERT_TRUE(embedded_test_server()->Start());
704 GURL::Replacements replace_host; 711 GURL::Replacements replace_host;
705 replace_host.SetHostStr("localhost"); 712 replace_host.SetHostStr("localhost");
706 GURL base_url = 713 GURL base_url =
707 embedded_test_server()->GetURL("/extensions/api_test/app_process/"); 714 embedded_test_server()->GetURL("/extensions/api_test/app_process/");
708 base_url = base_url.ReplaceComponents(replace_host); 715 base_url = base_url.ReplaceComponents(replace_host);
709 716
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
780 std::string extension_id = last_loaded_extension_id(); 787 std::string extension_id = last_loaded_extension_id();
781 for (int i = 1; i <= 5; i++) { 788 for (int i = 1; i <= 5; i++) {
782 SCOPED_TRACE(testing::Message() << "Reloading extension for the " << i 789 SCOPED_TRACE(testing::Message() << "Reloading extension for the " << i
783 << "th time."); 790 << "th time.");
784 ReloadExtension(extension_id); 791 ReloadExtension(extension_id);
785 ASSERT_NO_FATAL_FAILURE( 792 ASSERT_NO_FATAL_FAILURE(
786 WaitForTaskManagerRows(1, MatchExtension("background_page"))); 793 WaitForTaskManagerRows(1, MatchExtension("background_page")));
787 } 794 }
788 } 795 }
789 796
790 // Crashy, http://crbug.com/42301.
791 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest,
792 DISABLED_PopulateWebCacheFields) {
793 ShowTaskManager();
794 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
795
796 int resource_count = TaskManager::GetInstance()->model()->ResourceCount();
797
798 // Open a new tab and make sure we notice that.
799 AddTabAtIndex(0, GetTestURL(), ui::PAGE_TRANSITION_TYPED);
800 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
801
802 // Check that we get some value for the cache columns.
803 DCHECK_NE(model()->GetResourceWebCoreImageCacheSize(resource_count),
804 l10n_util::GetStringUTF16(IDS_TASK_MANAGER_NA_CELL_TEXT));
805 DCHECK_NE(model()->GetResourceWebCoreScriptsCacheSize(resource_count),
806 l10n_util::GetStringUTF16(IDS_TASK_MANAGER_NA_CELL_TEXT));
807 DCHECK_NE(model()->GetResourceWebCoreCSSCacheSize(resource_count),
808 l10n_util::GetStringUTF16(IDS_TASK_MANAGER_NA_CELL_TEXT));
809 }
810
811 // Checks that task manager counts a worker thread JS heap size. 797 // Checks that task manager counts a worker thread JS heap size.
812 // http://crbug.com/241066 798 // http://crbug.com/241066
813 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, WebWorkerJSHeapMemory) { 799 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, WebWorkerJSHeapMemory) {
814 ShowTaskManager(); 800 ShowTaskManager();
801 model()->ToggleColumnVisibility(task_manager::browsertest_util::V8_MEMORY);
815 ui_test_utils::NavigateToURL(browser(), GetTestURL()); 802 ui_test_utils::NavigateToURL(browser(), GetTestURL());
816 size_t minimal_heap_size = 4 * 1024 * 1024 * sizeof(void*); 803 size_t minimal_heap_size = 4 * 1024 * 1024 * sizeof(void*);
817 std::string test_js = base::StringPrintf( 804 std::string test_js = base::StringPrintf(
818 "var blob = new Blob([\n" 805 "var blob = new Blob([\n"
819 " 'mem = new Array(%lu);',\n" 806 " 'mem = new Array(%lu);',\n"
820 " 'for (var i = 0; i < mem.length; i += 16)'," 807 " 'for (var i = 0; i < mem.length; i += 16)',"
821 " ' mem[i] = i;',\n" 808 " ' mem[i] = i;',\n"
822 " 'postMessage(\"okay\");']);\n" 809 " 'postMessage(\"okay\");']);\n"
823 "blobURL = window.URL.createObjectURL(blob);\n" 810 "blobURL = window.URL.createObjectURL(blob);\n"
824 "var worker = new Worker(blobURL);\n" 811 "var worker = new Worker(blobURL);\n"
(...skipping 28 matching lines...) Expand all
853 "mem = new Array(%lu);\n" 840 "mem = new Array(%lu);\n"
854 "for (var i = 0; i < mem.length; i += 16)\n" 841 "for (var i = 0; i < mem.length; i += 16)\n"
855 " mem[i] = i;\n" 842 " mem[i] = i;\n"
856 "window.domAutomationController.send(\"okay\");\n", 843 "window.domAutomationController.send(\"okay\");\n",
857 static_cast<unsigned long>(minimal_heap_size)); 844 static_cast<unsigned long>(minimal_heap_size));
858 std::string ok; 845 std::string ok;
859 ASSERT_TRUE(content::ExecuteScriptAndExtractString( 846 ASSERT_TRUE(content::ExecuteScriptAndExtractString(
860 browser()->tab_strip_model()->GetActiveWebContents(), test_js, &ok)); 847 browser()->tab_strip_model()->GetActiveWebContents(), test_js, &ok));
861 ASSERT_EQ("okay", ok); 848 ASSERT_EQ("okay", ok);
862 849
850 model()->ToggleColumnVisibility(task_manager::browsertest_util::V8_MEMORY);
851
863 // The page's js has allocated objects of at least |minimal_heap_size| bytes. 852 // The page's js has allocated objects of at least |minimal_heap_size| bytes.
864 // Wait for the heap stats to reflect this. 853 // Wait for the heap stats to reflect this.
865 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed( 854 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed(
866 MatchTab("title1.html"), task_manager::browsertest_util::V8_MEMORY, 855 MatchTab("title1.html"), task_manager::browsertest_util::V8_MEMORY,
867 minimal_heap_size)); 856 minimal_heap_size));
868 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed( 857 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed(
869 MatchTab("title1.html"), task_manager::browsertest_util::V8_MEMORY_USED, 858 MatchTab("title1.html"), task_manager::browsertest_util::V8_MEMORY_USED,
870 minimal_heap_size)); 859 minimal_heap_size));
871 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 860 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
872 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("title1.html"))); 861 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("title1.html")));
873 } 862 }
874 863
875 // Checks that task manager counts utility process JS heap size. 864 // Checks that task manager counts utility process JS heap size.
876 IN_PROC_BROWSER_TEST_F(TaskManagerUtilityProcessBrowserTest, 865 IN_PROC_BROWSER_TEST_F(TaskManagerUtilityProcessBrowserTest,
877 UtilityJSHeapMemory) { 866 UtilityJSHeapMemory) {
878 ShowTaskManager(); 867 ShowTaskManager();
868 model()->ToggleColumnVisibility(task_manager::browsertest_util::V8_MEMORY);
869
870 auto proxy_resolver_name =
871 l10n_util::GetStringUTF16(IDS_UTILITY_PROCESS_PROXY_RESOLVER_NAME);
879 ui_test_utils::NavigateToURL(browser(), GetTestURL()); 872 ui_test_utils::NavigateToURL(browser(), GetTestURL());
880 // The PAC script is trivial, so don't expect a large heap. 873 // The PAC script is trivial, so don't expect a large heap.
881 size_t minimal_heap_size = 1024; 874 size_t minimal_heap_size = 1024;
882 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed( 875 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed(
883 MatchUtility( 876 MatchUtility(proxy_resolver_name),
884 l10n_util::GetStringUTF16(IDS_UTILITY_PROCESS_PROXY_RESOLVER_NAME)), 877 task_manager::browsertest_util::V8_MEMORY, minimal_heap_size));
885 task_manager::browsertest_util::V8_MEMORY,
886 minimal_heap_size));
887 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed( 878 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed(
888 MatchUtility( 879 MatchUtility(proxy_resolver_name),
889 l10n_util::GetStringUTF16(IDS_UTILITY_PROCESS_PROXY_RESOLVER_NAME)), 880 task_manager::browsertest_util::V8_MEMORY_USED, minimal_heap_size));
890 task_manager::browsertest_util::V8_MEMORY_USED,
891 minimal_heap_size));
892 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyUtility())); 881 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyUtility()));
893 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows( 882 ASSERT_NO_FATAL_FAILURE(
894 1, MatchUtility(l10n_util::GetStringUTF16( 883 WaitForTaskManagerRows(1, MatchUtility(proxy_resolver_name)));
895 IDS_UTILITY_PROCESS_PROXY_RESOLVER_NAME))));
896 } 884 }
897 885
898 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsNewDockedWindow) { 886 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsNewDockedWindow) {
887 // TODO(nick, afakhry): Broken on new task manager because we show
888 // a long chrome-devtools:// URL without a prefix (expecting "Tab: *").
889 DisableNewTaskManagerForBrokenTest();
890
899 ShowTaskManager(); // Task manager shown BEFORE dev tools window. 891 ShowTaskManager(); // Task manager shown BEFORE dev tools window.
900 892
901 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 893 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
902 DevToolsWindow* devtools = 894 DevToolsWindow* devtools =
903 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), true); 895 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), true);
904 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab())); 896 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
905 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab())); 897 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
906 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools); 898 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools);
907 } 899 }
908 900
909 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsNewUndockedWindow) { 901 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsNewUndockedWindow) {
902 // TODO(nick, afakhry): Broken on new task manager because we show
903 // a long chrome-devtools:// URL without a prefix (expecting "Tab: *").
904 DisableNewTaskManagerForBrokenTest();
905
910 ShowTaskManager(); // Task manager shown BEFORE dev tools window. 906 ShowTaskManager(); // Task manager shown BEFORE dev tools window.
911 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 907 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
912 DevToolsWindow* devtools = 908 DevToolsWindow* devtools =
913 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), false); 909 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), false);
914 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab())); 910 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab()));
915 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab())); 911 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab()));
916 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools); 912 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools);
917 } 913 }
918 914
919 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsOldDockedWindow) { 915 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsOldDockedWindow) {
916 // TODO(nick, afakhry): Broken on new task manager because we show
917 // a long chrome-devtools:// URL without a prefix (expecting "Tab: *").
918 DisableNewTaskManagerForBrokenTest();
919
920 DevToolsWindow* devtools = 920 DevToolsWindow* devtools =
921 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), true); 921 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), true);
922 ShowTaskManager(); // Task manager shown AFTER dev tools window. 922 ShowTaskManager(); // Task manager shown AFTER dev tools window.
923 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab())); 923 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
924 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab())); 924 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
925 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools); 925 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools);
926 } 926 }
927 927
928 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsOldUnockedWindow) { 928 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsOldUndockedWindow) {
929 // TODO(nick, afakhry): Broken on new task manager because we show
930 // a long chrome-devtools:// URL without a prefix (expecting "Tab: *").
931 DisableNewTaskManagerForBrokenTest();
932
929 DevToolsWindow* devtools = 933 DevToolsWindow* devtools =
930 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), false); 934 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), false);
931 ShowTaskManager(); // Task manager shown AFTER dev tools window. 935 ShowTaskManager(); // Task manager shown AFTER dev tools window.
932 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab())); 936 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab()));
933 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab())); 937 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab()));
934 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools); 938 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools);
935 } 939 }
936 940
937 IN_PROC_BROWSER_TEST_P(TaskManagerOOPIFBrowserTest, KillSubframe) { 941 IN_PROC_BROWSER_TEST_P(TaskManagerOOPIFBrowserTest, KillSubframe) {
938 ShowTaskManager(); 942 ShowTaskManager();
(...skipping 15 matching lines...) Expand all
954 if (!ShouldExpectSubframes()) { 958 if (!ShouldExpectSubframes()) {
955 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe())); 959 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe()));
956 } else { 960 } else {
957 ASSERT_NO_FATAL_FAILURE( 961 ASSERT_NO_FATAL_FAILURE(
958 WaitForTaskManagerRows(1, MatchSubframe("http://b.com/"))); 962 WaitForTaskManagerRows(1, MatchSubframe("http://b.com/")));
959 ASSERT_NO_FATAL_FAILURE( 963 ASSERT_NO_FATAL_FAILURE(
960 WaitForTaskManagerRows(1, MatchSubframe("http://c.com/"))); 964 WaitForTaskManagerRows(1, MatchSubframe("http://c.com/")));
961 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnySubframe())); 965 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnySubframe()));
962 int subframe_b = FindResourceIndex(MatchSubframe("http://b.com/")); 966 int subframe_b = FindResourceIndex(MatchSubframe("http://b.com/"));
963 ASSERT_NE(-1, subframe_b); 967 ASSERT_NE(-1, subframe_b);
964 ASSERT_TRUE(model()->GetResourceWebContents(subframe_b) != NULL); 968 ASSERT_NE(-1, model()->GetTabId(subframe_b));
965 ASSERT_TRUE(model()->CanActivate(subframe_b));
966 969
967 TaskManager::GetInstance()->KillProcess(subframe_b); 970 model()->Kill(subframe_b);
968 971
969 ASSERT_NO_FATAL_FAILURE( 972 ASSERT_NO_FATAL_FAILURE(
970 WaitForTaskManagerRows(0, MatchSubframe("http://b.com/"))); 973 WaitForTaskManagerRows(0, MatchSubframe("http://b.com/")));
971 ASSERT_NO_FATAL_FAILURE( 974 ASSERT_NO_FATAL_FAILURE(
972 WaitForTaskManagerRows(1, MatchSubframe("http://c.com/"))); 975 WaitForTaskManagerRows(1, MatchSubframe("http://c.com/")));
973 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnySubframe())); 976 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnySubframe()));
974 ASSERT_NO_FATAL_FAILURE( 977 ASSERT_NO_FATAL_FAILURE(
975 WaitForTaskManagerRows(1, MatchTab("cross-site iframe test"))); 978 WaitForTaskManagerRows(1, MatchTab("cross-site iframe test")));
976 } 979 }
977 980
978 HideTaskManager(); 981 HideTaskManager();
979 ShowTaskManager(); 982 ShowTaskManager();
980 983
981 if (!ShouldExpectSubframes()) { 984 if (!ShouldExpectSubframes()) {
982 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe())); 985 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe()));
983 } else { 986 } else {
984 ASSERT_NO_FATAL_FAILURE( 987 ASSERT_NO_FATAL_FAILURE(
985 WaitForTaskManagerRows(0, MatchSubframe("http://b.com/"))); 988 WaitForTaskManagerRows(0, MatchSubframe("http://b.com/")));
986 ASSERT_NO_FATAL_FAILURE( 989 ASSERT_NO_FATAL_FAILURE(
987 WaitForTaskManagerRows(1, MatchSubframe("http://c.com/"))); 990 WaitForTaskManagerRows(1, MatchSubframe("http://c.com/")));
988 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnySubframe())); 991 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnySubframe()));
989 ASSERT_NO_FATAL_FAILURE( 992 ASSERT_NO_FATAL_FAILURE(
990 WaitForTaskManagerRows(1, MatchTab("cross-site iframe test"))); 993 WaitForTaskManagerRows(1, MatchTab("cross-site iframe test")));
991 } 994 }
992 } 995 }
993 996
994 // Tests what happens when a tab navigates to a site (a.com) that it previously 997 // Tests what happens when a tab navigates to a site (a.com) that it previously
995 // has a cross-process subframe into (b.com). 998 // has a cross-process subframe into (b.com).
996 // 999 IN_PROC_BROWSER_TEST_P(TaskManagerOOPIFBrowserTest, NavigateToSubframeProcess) {
997 // TODO(nick): http://crbug.com/442532. Disabled because the second navigation
998 // hits an ASSERT(frame()) in WebLocalFrameImpl::loadRequest under --site-per-
999 // process.
1000 IN_PROC_BROWSER_TEST_P(TaskManagerOOPIFBrowserTest,
1001 DISABLED_NavigateToSubframeProcess) {
1002 ShowTaskManager(); 1000 ShowTaskManager();
1003 1001
1004 host_resolver()->AddRule("*", "127.0.0.1"); 1002 host_resolver()->AddRule("*", "127.0.0.1");
1005 ASSERT_TRUE(embedded_test_server()->Start()); 1003 ASSERT_TRUE(embedded_test_server()->Start());
1006 content::SetupCrossSiteRedirector(embedded_test_server()); 1004 content::SetupCrossSiteRedirector(embedded_test_server());
1007 1005
1008 // Navigate the tab to a page on a.com with cross-process subframes to 1006 // Navigate the tab to a page on a.com with cross-process subframes to
1009 // b.com and c.com. 1007 // b.com and c.com.
1010 GURL a_dotcom(embedded_test_server()->GetURL( 1008 GURL a_dotcom(embedded_test_server()->GetURL(
1011 "/cross-site/a.com/iframe_cross_site.html")); 1009 "/cross-site/a.com/iframe_cross_site.html"));
(...skipping 27 matching lines...) Expand all
1039 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("iframe test"))); 1037 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("iframe test")));
1040 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 1038 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
1041 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe())); 1039 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe()));
1042 HideTaskManager(); 1040 HideTaskManager();
1043 ShowTaskManager(); 1041 ShowTaskManager();
1044 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("iframe test"))); 1042 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("iframe test")));
1045 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 1043 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
1046 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe())); 1044 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe()));
1047 } 1045 }
1048 1046
1049 // TODO(nick): Fails flakily under OOPIF due to a ASSERT_NOT_REACHED in
1050 // WebRemoteFrame, at least under debug OSX. http://crbug.com/437956
1051 IN_PROC_BROWSER_TEST_P(TaskManagerOOPIFBrowserTest, 1047 IN_PROC_BROWSER_TEST_P(TaskManagerOOPIFBrowserTest,
1052 DISABLED_NavigateToSiteWithSubframeToOriginalSite) { 1048 NavigateToSiteWithSubframeToOriginalSite) {
1053 ShowTaskManager(); 1049 ShowTaskManager();
1054 1050
1055 host_resolver()->AddRule("*", "127.0.0.1"); 1051 host_resolver()->AddRule("*", "127.0.0.1");
1056 ASSERT_TRUE(embedded_test_server()->Start()); 1052 ASSERT_TRUE(embedded_test_server()->Start());
1057 content::SetupCrossSiteRedirector(embedded_test_server()); 1053 content::SetupCrossSiteRedirector(embedded_test_server());
1058 1054
1059 // Navigate to a page on b.com with a simple (same-site) iframe. 1055 // Navigate to a page on b.com with a simple (same-site) iframe.
1060 // This should not show any subframe resources in the task manager. 1056 // This should not show any subframe resources in the task manager.
1061 GURL b_dotcom( 1057 GURL b_dotcom(
1062 embedded_test_server()->GetURL("/cross-site/b.com/iframe.html")); 1058 embedded_test_server()->GetURL("/cross-site/b.com/iframe.html"));
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1165 ASSERT_NO_FATAL_FAILURE( 1161 ASSERT_NO_FATAL_FAILURE(
1166 WaitForTaskManagerRows(0, MatchSubframe("http://b.com/"))); 1162 WaitForTaskManagerRows(0, MatchSubframe("http://b.com/")));
1167 ASSERT_NO_FATAL_FAILURE( 1163 ASSERT_NO_FATAL_FAILURE(
1168 WaitForTaskManagerRows(1, MatchSubframe("http://c.com/"))); 1164 WaitForTaskManagerRows(1, MatchSubframe("http://c.com/")));
1169 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnySubframe())); 1165 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnySubframe()));
1170 } 1166 }
1171 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("aac"))); 1167 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("aac")));
1172 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 1168 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
1173 } 1169 }
1174 1170
1175 // Tests what happens when a tab does a same-site navigation away from a page
1176 // with cross-site iframes.
1177 // Flaky on Windows. http://crbug.com/528282.
1178 #if defined(OS_WIN)
1179 #define MAYBE_LeavePageWithCrossSiteIframes DISABLED_LeavePageWithCrossSiteIfram es
1180 #else
1181 #define MAYBE_LeavePageWithCrossSiteIframes LeavePageWithCrossSiteIframes
1182 #endif
1183 IN_PROC_BROWSER_TEST_P(TaskManagerOOPIFBrowserTest, 1171 IN_PROC_BROWSER_TEST_P(TaskManagerOOPIFBrowserTest,
1184 MAYBE_LeavePageWithCrossSiteIframes) { 1172 LeavePageWithCrossSiteIframes) {
1185 ShowTaskManager(); 1173 ShowTaskManager();
1186 1174
1187 host_resolver()->AddRule("*", "127.0.0.1"); 1175 host_resolver()->AddRule("*", "127.0.0.1");
1188 ASSERT_TRUE(embedded_test_server()->Start()); 1176 ASSERT_TRUE(embedded_test_server()->Start());
1189 content::SetupCrossSiteRedirector(embedded_test_server()); 1177 content::SetupCrossSiteRedirector(embedded_test_server());
1190 1178
1191 // Navigate the tab to a page on a.com with cross-process subframes. 1179 // Navigate the tab to a page on a.com with cross-process subframes.
1192 GURL a_dotcom_with_iframes(embedded_test_server()->GetURL( 1180 GURL a_dotcom_with_iframes(embedded_test_server()->GetURL(
1193 "/cross-site/a.com/iframe_cross_site.html")); 1181 "/cross-site/a.com/iframe_cross_site.html"));
1194 browser()->OpenURL(content::OpenURLParams(a_dotcom_with_iframes, 1182 browser()->OpenURL(content::OpenURLParams(a_dotcom_with_iframes,
(...skipping 25 matching lines...) Expand all
1220 WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness"))); 1208 WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness")));
1221 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe())); 1209 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe()));
1222 1210
1223 HideTaskManager(); 1211 HideTaskManager();
1224 ShowTaskManager(); 1212 ShowTaskManager();
1225 1213
1226 ASSERT_NO_FATAL_FAILURE( 1214 ASSERT_NO_FATAL_FAILURE(
1227 WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness"))); 1215 WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness")));
1228 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe())); 1216 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe()));
1229 } 1217 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698