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

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: Fix OSX function call namespace 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, NavigateAwayFromHungRenderer) {
239 DISABLED_NavigateAwayFromHungRenderer) {
240 host_resolver()->AddRule("*", "127.0.0.1"); 242 host_resolver()->AddRule("*", "127.0.0.1");
241 ASSERT_TRUE(embedded_test_server()->Start()); 243 ASSERT_TRUE(embedded_test_server()->Start());
242 ShowTaskManager(); 244 ShowTaskManager();
243 245
244 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 246 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
245 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 247 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
246 248
247 GURL url1(embedded_test_server()->GetURL("/title2.html")); 249 GURL url1(embedded_test_server()->GetURL("/title2.html"));
248 GURL url3(embedded_test_server()->GetURL("a.com", "/iframe.html")); 250 GURL url3(embedded_test_server()->GetURL("a.com", "/iframe.html"));
249 251
250 // Open a new tab and make sure the task manager notices it. 252 // Open a new tab and make sure the task manager notices it.
251 AddTabAtIndex(0, url1, ui::PAGE_TRANSITION_TYPED); 253 AddTabAtIndex(0, url1, ui::PAGE_TRANSITION_TYPED);
252 ASSERT_NO_FATAL_FAILURE( 254 ASSERT_NO_FATAL_FAILURE(
253 WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness"))); 255 WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness")));
254 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 256 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
255 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab())); 257 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
256 WebContents* tab1 = browser()->tab_strip_model()->GetActiveWebContents(); 258 WebContents* tab1 = browser()->tab_strip_model()->GetActiveWebContents();
257 259
258 // Initiate a navigation that will create a new WebContents in the same 260 // Initiate a navigation that will create a new WebContents in the same
259 // SiteInstace... 261 // SiteInstance. Then immediately hang the renderer so that title3.html can't
262 // load in this process.
260 content::WebContentsAddedObserver web_contents_added_observer; 263 content::WebContentsAddedObserver web_contents_added_observer;
261 tab1->GetMainFrame()->ExecuteJavaScriptWithUserGestureForTests( 264 int dummy_value = 0;
262 base::ASCIIToUTF16("window.open('title3.html', '_blank');")); 265 ASSERT_TRUE(content::ExecuteScriptAndExtractInt(
263 // ... then immediately hang the renderer so that title3.html can't load. 266 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);",
270 &dummy_value));
266 271
267 // Blocks until a new WebContents appears. 272 // Blocks until a new WebContents appears as a result of window.open().
268 WebContents* tab2 = web_contents_added_observer.GetWebContents(); 273 WebContents* tab2 = web_contents_added_observer.GetWebContents();
269 274
270 // Make sure the new WebContents is in tab1's hung renderer process. 275 // Make sure the new WebContents is in tab1's hung renderer process.
271 ASSERT_NE(nullptr, tab2); 276 ASSERT_NE(nullptr, tab2);
272 ASSERT_NE(tab1, tab2); 277 ASSERT_NE(tab1, tab2);
273 ASSERT_EQ(tab1->GetMainFrame()->GetProcess(), 278 ASSERT_EQ(tab1->GetMainFrame()->GetProcess(),
274 tab2->GetMainFrame()->GetProcess()) 279 tab2->GetMainFrame()->GetProcess())
275 << "New WebContents must be in the same process as the old WebContents, " 280 << "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 " 281 << "so that the new tab doesn't finish loading (what this test is all "
277 << "about)"; 282 << "about)";
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
416 "chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/" 421 "chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/"
417 "french_sentence.html"))); 422 "french_sentence.html")));
418 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyExtension())); 423 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyExtension()));
419 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 424 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
420 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 425 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
421 426
422 // Kill the process via the BACKGROUND PAGE (not the panel). Verify that both 427 // 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. 428 // the background page and the panel go away from the task manager.
424 int background_page = FindResourceIndex(MatchExtension("My extension 1")); 429 int background_page = FindResourceIndex(MatchExtension("My extension 1"));
425 ASSERT_NE(-1, background_page); 430 ASSERT_NE(-1, background_page);
426 ASSERT_TRUE(model()->GetResourceWebContents(background_page) == NULL); 431 ASSERT_EQ(-1, model()->GetTabId(background_page));
427 ASSERT_FALSE(model()->CanActivate(background_page)); 432 model()->Kill(background_page);
428 TaskManager::GetInstance()->KillProcess(background_page);
429 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension())); 433 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension()));
430 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 434 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
431 } 435 }
432 436
433 // Kills a process that has more than one task manager entry. This test is the 437 // 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 438 // same as KillPanelViaExtensionResource except it does the kill via the other
435 // entry. 439 // entry.
436 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, KillPanelViaPanelResource) { 440 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, KillPanelViaPanelResource) {
437 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("good") 441 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("good")
438 .AppendASCII("Extensions") 442 .AppendASCII("Extensions")
(...skipping 20 matching lines...) Expand all
459 1, 463 1,
460 MatchExtension( 464 MatchExtension(
461 "chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/" 465 "chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/"
462 "french_sentence.html"))); 466 "french_sentence.html")));
463 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyExtension())); 467 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyExtension()));
464 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 468 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
465 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 469 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
466 470
467 int background_page = FindResourceIndex(MatchExtension("My extension 1")); 471 int background_page = FindResourceIndex(MatchExtension("My extension 1"));
468 ASSERT_NE(-1, background_page); 472 ASSERT_NE(-1, background_page);
469 ASSERT_TRUE(model()->GetResourceWebContents(background_page) == NULL); 473 ASSERT_EQ(-1, model()->GetTabId(background_page));
470 ASSERT_FALSE(model()->CanActivate(background_page));
471 474
472 // Kill the process via the PANEL RESOURCE (not the background page). Verify 475 // 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. 476 // that both the background page and the panel go away from the task manager.
474 int panel = FindResourceIndex(MatchExtension( 477 int panel = FindResourceIndex(MatchExtension(
475 "chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/" 478 "chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/"
476 "french_sentence.html")); 479 "french_sentence.html"));
477 ASSERT_NE(-1, panel); 480 ASSERT_NE(-1, panel);
478 ASSERT_TRUE(model()->GetResourceWebContents(panel) != NULL); 481 ASSERT_NE(-1, model()->GetTabId(panel));
479 ASSERT_TRUE(model()->CanActivate(panel)); 482 model()->Kill(panel);
480 TaskManager::GetInstance()->KillProcess(panel);
481 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension())); 483 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension()));
482 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 484 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
483 } 485 }
484 486
485 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeExtensionTabChanges) { 487 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeExtensionTabChanges) {
486 ShowTaskManager(); 488 ShowTaskManager();
487 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 489 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
488 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 490 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
489 491
490 ASSERT_TRUE(LoadExtension( 492 ASSERT_TRUE(LoadExtension(
(...skipping 15 matching lines...) Expand all
506 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED); 508 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED);
507 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchExtension("Foobar"))); 509 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchExtension("Foobar")));
508 ASSERT_NO_FATAL_FAILURE( 510 ASSERT_NO_FATAL_FAILURE(
509 WaitForTaskManagerRows(1, MatchExtension("My extension 1"))); 511 WaitForTaskManagerRows(1, MatchExtension("My extension 1")));
510 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyExtension())); 512 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyExtension()));
511 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 513 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
512 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 514 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
513 515
514 int extension_tab = FindResourceIndex(MatchExtension("Foobar")); 516 int extension_tab = FindResourceIndex(MatchExtension("Foobar"));
515 ASSERT_NE(-1, extension_tab); 517 ASSERT_NE(-1, extension_tab);
516 ASSERT_TRUE(model()->GetResourceWebContents(extension_tab) != NULL); 518 ASSERT_NE(-1, model()->GetTabId(extension_tab));
517 ASSERT_TRUE(model()->CanActivate(extension_tab));
518 519
519 int background_page = FindResourceIndex(MatchExtension("My extension 1")); 520 int background_page = FindResourceIndex(MatchExtension("My extension 1"));
520 ASSERT_NE(-1, background_page); 521 ASSERT_NE(-1, background_page);
521 ASSERT_TRUE(model()->GetResourceWebContents(background_page) == NULL); 522 ASSERT_EQ(-1, model()->GetTabId(background_page));
522 ASSERT_FALSE(model()->CanActivate(background_page));
523 } 523 }
524 524
525 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeExtensionTab) { 525 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeExtensionTab) {
526 // With the task manager closed, open a new tab to an extension URL. 526 // 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 527 // Afterwards, when we open the task manager, the third entry (background
528 // page) should be an extension resource whose title starts with "Extension:". 528 // 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 529 // 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:". 530 // WebContents and an extension. The title should start with "Extension:".
531 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("good") 531 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("good")
532 .AppendASCII("Extensions") 532 .AppendASCII("Extensions")
533 .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj") 533 .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj")
534 .AppendASCII("1.0.0.0"))); 534 .AppendASCII("1.0.0.0")));
535 GURL url("chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/page.html"); 535 GURL url("chrome-extension://behllobkkfkfnphdnhnkndlbkcpglgmj/page.html");
536 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED); 536 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED);
537 537
538 ShowTaskManager(); 538 ShowTaskManager();
539 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchExtension("Foobar"))); 539 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchExtension("Foobar")));
540 ASSERT_NO_FATAL_FAILURE( 540 ASSERT_NO_FATAL_FAILURE(
541 WaitForTaskManagerRows(1, MatchExtension("My extension 1"))); 541 WaitForTaskManagerRows(1, MatchExtension("My extension 1")));
542 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyExtension())); 542 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyExtension()));
543 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 543 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
544 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 544 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
545 545
546 int extension_tab = FindResourceIndex(MatchExtension("Foobar")); 546 int extension_tab = FindResourceIndex(MatchExtension("Foobar"));
547 ASSERT_NE(-1, extension_tab); 547 ASSERT_NE(-1, extension_tab);
548 ASSERT_TRUE(model()->GetResourceWebContents(extension_tab) != NULL); 548 ASSERT_NE(-1, model()->GetTabId(extension_tab));
549 ASSERT_TRUE(model()->CanActivate(extension_tab));
550 549
551 int background_page = FindResourceIndex(MatchExtension("My extension 1")); 550 int background_page = FindResourceIndex(MatchExtension("My extension 1"));
552 ASSERT_NE(-1, background_page); 551 ASSERT_NE(-1, background_page);
553 ASSERT_TRUE(model()->GetResourceWebContents(background_page) == NULL); 552 ASSERT_EQ(-1, model()->GetTabId(background_page));
554 ASSERT_FALSE(model()->CanActivate(background_page));
555 } 553 }
556 554
557 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeAppTabChanges) { 555 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeAppTabChanges) {
556 // TODO(nick, afakhry): Broken on new task manager because we show
557 // "Extension: Packaged App Test" instead of "App: Packaged App Test".
558 DisableNewTaskManagerForBrokenTest();
559
558 ShowTaskManager(); 560 ShowTaskManager();
559 561
560 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("packaged_app"))); 562 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("packaged_app")));
561 ExtensionService* service = extensions::ExtensionSystem::Get( 563 ExtensionService* service = extensions::ExtensionSystem::Get(
562 browser()->profile())->extension_service(); 564 browser()->profile())->extension_service();
563 const extensions::Extension* extension = 565 const extensions::Extension* extension =
564 service->GetExtensionById(last_loaded_extension_id(), false); 566 service->GetExtensionById(last_loaded_extension_id(), false);
565 567
566 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 568 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
567 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 569 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
568 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension())); 570 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension()));
569 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyApp())); 571 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyApp()));
570 572
571 // Open a new tab to the app's launch URL and make sure we notice that. 573 // Open a new tab to the app's launch URL and make sure we notice that.
572 GURL url(extension->GetResourceURL("main.html")); 574 GURL url(extension->GetResourceURL("main.html"));
573 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED); 575 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED);
574 576
575 // There should be 1 "App: " tab and the original new tab page. 577 // There should be 1 "App: " tab and the original new tab page.
576 ASSERT_NO_FATAL_FAILURE( 578 ASSERT_NO_FATAL_FAILURE(
577 WaitForTaskManagerRows(1, MatchApp("Packaged App Test"))); 579 WaitForTaskManagerRows(1, MatchApp("Packaged App Test")));
578 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyApp())); 580 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyApp()));
579 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 581 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
580 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 582 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
581 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension())); 583 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension()));
582 584
583 // Check that the third entry (main.html) is of type extension and has both 585 // Check that the third entry (main.html) is of type extension and has both
584 // a tab contents and an extension. 586 // a tab contents and an extension.
585 int app_tab = FindResourceIndex(MatchApp("Packaged App Test")); 587 int app_tab = FindResourceIndex(MatchApp("Packaged App Test"));
586 ASSERT_NE(-1, app_tab); 588 ASSERT_NE(-1, app_tab);
587 ASSERT_TRUE(model()->GetResourceWebContents(app_tab) != NULL); 589 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()); 590 ASSERT_EQ(2, browser()->tab_strip_model()->count());
592 591
593 // Unload extension to make sure the tab goes away. 592 // Unload extension to make sure the tab goes away.
594 UnloadExtension(last_loaded_extension_id()); 593 UnloadExtension(last_loaded_extension_id());
595 594
596 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 595 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
597 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyApp())); 596 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyApp()));
598 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension())); 597 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension()));
599 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 598 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
600 ASSERT_EQ(1, browser()->tab_strip_model()->count()); 599 ASSERT_EQ(1, browser()->tab_strip_model()->count());
601 } 600 }
602 601
603 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeAppTab) { 602 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeAppTab) {
603 // TODO(nick, afakhry): Broken on new task manager because we show
604 // "Extension: Packaged App Test" instead of "App: Packaged App Test".
605 DisableNewTaskManagerForBrokenTest();
606
604 ASSERT_TRUE(LoadExtension( 607 ASSERT_TRUE(LoadExtension(
605 test_data_dir_.AppendASCII("packaged_app"))); 608 test_data_dir_.AppendASCII("packaged_app")));
606 ExtensionService* service = extensions::ExtensionSystem::Get( 609 ExtensionService* service = extensions::ExtensionSystem::Get(
607 browser()->profile())->extension_service(); 610 browser()->profile())->extension_service();
608 const extensions::Extension* extension = 611 const extensions::Extension* extension =
609 service->GetExtensionById(last_loaded_extension_id(), false); 612 service->GetExtensionById(last_loaded_extension_id(), false);
610 613
611 // Open a new tab to the app's launch URL and make sure we notice that. 614 // Open a new tab to the app's launch URL and make sure we notice that.
612 GURL url(extension->GetResourceURL("main.html")); 615 GURL url(extension->GetResourceURL("main.html"));
613 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED); 616 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_TYPED);
614 617
615 ShowTaskManager(); 618 ShowTaskManager();
616 619
617 ASSERT_NO_FATAL_FAILURE( 620 ASSERT_NO_FATAL_FAILURE(
618 WaitForTaskManagerRows(1, MatchApp("Packaged App Test"))); 621 WaitForTaskManagerRows(1, MatchApp("Packaged App Test")));
619 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 622 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
620 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension())); 623 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension()));
621 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyApp())); 624 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyApp()));
622 625
623 // Check that the third entry (main.html) is of type extension and has both 626 // Check that the third entry (main.html) is of type extension and has both
624 // a tab contents and an extension. 627 // a tab contents and an extension.
625 int app_tab = FindResourceIndex(MatchApp("Packaged App Test")); 628 int app_tab = FindResourceIndex(MatchApp("Packaged App Test"));
626 ASSERT_NE(-1, app_tab); 629 ASSERT_NE(-1, app_tab);
627 ASSERT_TRUE(model()->GetResourceWebContents(app_tab) != NULL); 630 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 } 631 }
632 632
633 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeHostedAppTabChanges) { 633 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeHostedAppTabChanges) {
634 // TODO(nick, afakhry): Broken on new task manager because we show
635 // "Tab: Unmodified" instead of "App: ".
636 DisableNewTaskManagerForBrokenTest();
637
634 ShowTaskManager(); 638 ShowTaskManager();
635 639
636 // The app under test acts on URLs whose host is "localhost", 640 // The app under test acts on URLs whose host is "localhost",
637 // so the URLs we navigate to must have host "localhost". 641 // so the URLs we navigate to must have host "localhost".
638 host_resolver()->AddRule("*", "127.0.0.1"); 642 host_resolver()->AddRule("*", "127.0.0.1");
639 ASSERT_TRUE(embedded_test_server()->Start()); 643 ASSERT_TRUE(embedded_test_server()->Start());
640 GURL::Replacements replace_host; 644 GURL::Replacements replace_host;
641 replace_host.SetHostStr("localhost"); 645 replace_host.SetHostStr("localhost");
642 GURL base_url = embedded_test_server()->GetURL( 646 GURL base_url = embedded_test_server()->GetURL(
643 "/extensions/api_test/app_process/"); 647 "/extensions/api_test/app_process/");
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 694
691 // No change expected. 695 // No change expected.
692 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab())); 696 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
693 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab())); 697 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
694 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("Unmodified"))); 698 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("Unmodified")));
695 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension())); 699 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyExtension()));
696 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyApp())); 700 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnyApp()));
697 } 701 }
698 702
699 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeHostedAppTabAfterReload) { 703 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeHostedAppTabAfterReload) {
704 // TODO(nick, afakhry): This fails on the new task manager (we never
705 // reclassify the tab as an app). Remove when fixed.
706 DisableNewTaskManagerForBrokenTest();
707
700 // The app under test acts on URLs whose host is "localhost", 708 // The app under test acts on URLs whose host is "localhost",
701 // so the URLs we navigate to must have host "localhost". 709 // so the URLs we navigate to must have host "localhost".
702 host_resolver()->AddRule("*", "127.0.0.1"); 710 host_resolver()->AddRule("*", "127.0.0.1");
703 ASSERT_TRUE(embedded_test_server()->Start()); 711 ASSERT_TRUE(embedded_test_server()->Start());
704 GURL::Replacements replace_host; 712 GURL::Replacements replace_host;
705 replace_host.SetHostStr("localhost"); 713 replace_host.SetHostStr("localhost");
706 GURL base_url = 714 GURL base_url =
707 embedded_test_server()->GetURL("/extensions/api_test/app_process/"); 715 embedded_test_server()->GetURL("/extensions/api_test/app_process/");
708 base_url = base_url.ReplaceComponents(replace_host); 716 base_url = base_url.ReplaceComponents(replace_host);
709 717
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
780 std::string extension_id = last_loaded_extension_id(); 788 std::string extension_id = last_loaded_extension_id();
781 for (int i = 1; i <= 5; i++) { 789 for (int i = 1; i <= 5; i++) {
782 SCOPED_TRACE(testing::Message() << "Reloading extension for the " << i 790 SCOPED_TRACE(testing::Message() << "Reloading extension for the " << i
783 << "th time."); 791 << "th time.");
784 ReloadExtension(extension_id); 792 ReloadExtension(extension_id);
785 ASSERT_NO_FATAL_FAILURE( 793 ASSERT_NO_FATAL_FAILURE(
786 WaitForTaskManagerRows(1, MatchExtension("background_page"))); 794 WaitForTaskManagerRows(1, MatchExtension("background_page")));
787 } 795 }
788 } 796 }
789 797
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. 798 // Checks that task manager counts a worker thread JS heap size.
812 // http://crbug.com/241066 799 // http://crbug.com/241066
813 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, WebWorkerJSHeapMemory) { 800 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, WebWorkerJSHeapMemory) {
814 ShowTaskManager(); 801 ShowTaskManager();
802 model()->ToggleColumnVisibility(task_manager::browsertest_util::V8_MEMORY);
815 ui_test_utils::NavigateToURL(browser(), GetTestURL()); 803 ui_test_utils::NavigateToURL(browser(), GetTestURL());
816 size_t minimal_heap_size = 4 * 1024 * 1024 * sizeof(void*); 804 size_t minimal_heap_size = 4 * 1024 * 1024 * sizeof(void*);
817 std::string test_js = base::StringPrintf( 805 std::string test_js = base::StringPrintf(
818 "var blob = new Blob([\n" 806 "var blob = new Blob([\n"
819 " 'mem = new Array(%lu);',\n" 807 " 'mem = new Array(%lu);',\n"
820 " 'for (var i = 0; i < mem.length; i += 16)'," 808 " 'for (var i = 0; i < mem.length; i += 16)',"
821 " ' mem[i] = i;',\n" 809 " ' mem[i] = i;',\n"
822 " 'postMessage(\"okay\");']);\n" 810 " 'postMessage(\"okay\");']);\n"
823 "blobURL = window.URL.createObjectURL(blob);\n" 811 "blobURL = window.URL.createObjectURL(blob);\n"
824 "var worker = new Worker(blobURL);\n" 812 "var worker = new Worker(blobURL);\n"
(...skipping 28 matching lines...) Expand all
853 "mem = new Array(%lu);\n" 841 "mem = new Array(%lu);\n"
854 "for (var i = 0; i < mem.length; i += 16)\n" 842 "for (var i = 0; i < mem.length; i += 16)\n"
855 " mem[i] = i;\n" 843 " mem[i] = i;\n"
856 "window.domAutomationController.send(\"okay\");\n", 844 "window.domAutomationController.send(\"okay\");\n",
857 static_cast<unsigned long>(minimal_heap_size)); 845 static_cast<unsigned long>(minimal_heap_size));
858 std::string ok; 846 std::string ok;
859 ASSERT_TRUE(content::ExecuteScriptAndExtractString( 847 ASSERT_TRUE(content::ExecuteScriptAndExtractString(
860 browser()->tab_strip_model()->GetActiveWebContents(), test_js, &ok)); 848 browser()->tab_strip_model()->GetActiveWebContents(), test_js, &ok));
861 ASSERT_EQ("okay", ok); 849 ASSERT_EQ("okay", ok);
862 850
851 model()->ToggleColumnVisibility(task_manager::browsertest_util::V8_MEMORY);
852
863 // The page's js has allocated objects of at least |minimal_heap_size| bytes. 853 // The page's js has allocated objects of at least |minimal_heap_size| bytes.
864 // Wait for the heap stats to reflect this. 854 // Wait for the heap stats to reflect this.
865 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed( 855 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed(
866 MatchTab("title1.html"), task_manager::browsertest_util::V8_MEMORY, 856 MatchTab("title1.html"), task_manager::browsertest_util::V8_MEMORY,
867 minimal_heap_size)); 857 minimal_heap_size));
868 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed( 858 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed(
869 MatchTab("title1.html"), task_manager::browsertest_util::V8_MEMORY_USED, 859 MatchTab("title1.html"), task_manager::browsertest_util::V8_MEMORY_USED,
870 minimal_heap_size)); 860 minimal_heap_size));
871 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 861 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
872 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("title1.html"))); 862 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("title1.html")));
873 } 863 }
874 864
875 // Checks that task manager counts utility process JS heap size. 865 // Checks that task manager counts utility process JS heap size.
876 IN_PROC_BROWSER_TEST_F(TaskManagerUtilityProcessBrowserTest, 866 IN_PROC_BROWSER_TEST_F(TaskManagerUtilityProcessBrowserTest,
877 UtilityJSHeapMemory) { 867 UtilityJSHeapMemory) {
878 ShowTaskManager(); 868 ShowTaskManager();
869 model()->ToggleColumnVisibility(task_manager::browsertest_util::V8_MEMORY);
870
871 auto proxy_resolver_name =
872 l10n_util::GetStringUTF16(IDS_UTILITY_PROCESS_PROXY_RESOLVER_NAME);
879 ui_test_utils::NavigateToURL(browser(), GetTestURL()); 873 ui_test_utils::NavigateToURL(browser(), GetTestURL());
880 // The PAC script is trivial, so don't expect a large heap. 874 // The PAC script is trivial, so don't expect a large heap.
881 size_t minimal_heap_size = 1024; 875 size_t minimal_heap_size = 1024;
882 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed( 876 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed(
883 MatchUtility( 877 MatchUtility(proxy_resolver_name),
884 l10n_util::GetStringUTF16(IDS_UTILITY_PROCESS_PROXY_RESOLVER_NAME)), 878 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( 879 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerStatToExceed(
888 MatchUtility( 880 MatchUtility(proxy_resolver_name),
889 l10n_util::GetStringUTF16(IDS_UTILITY_PROCESS_PROXY_RESOLVER_NAME)), 881 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())); 882 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyUtility()));
893 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows( 883 ASSERT_NO_FATAL_FAILURE(
894 1, MatchUtility(l10n_util::GetStringUTF16( 884 WaitForTaskManagerRows(1, MatchUtility(proxy_resolver_name)));
895 IDS_UTILITY_PROCESS_PROXY_RESOLVER_NAME))));
896 } 885 }
897 886
898 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsNewDockedWindow) { 887 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsNewDockedWindow) {
888 // TODO(nick, afakhry): Broken on new task manager because we show
889 // a long chrome-devtools:// URL without a prefix (expecting "Tab: *").
890 DisableNewTaskManagerForBrokenTest();
891
899 ShowTaskManager(); // Task manager shown BEFORE dev tools window. 892 ShowTaskManager(); // Task manager shown BEFORE dev tools window.
900 893
901 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 894 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
902 DevToolsWindow* devtools = 895 DevToolsWindow* devtools =
903 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), true); 896 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), true);
904 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab())); 897 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
905 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab())); 898 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
906 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools); 899 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools);
907 } 900 }
908 901
909 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsNewUndockedWindow) { 902 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsNewUndockedWindow) {
903 // TODO(nick, afakhry): Broken on new task manager because we show
904 // a long chrome-devtools:// URL without a prefix (expecting "Tab: *").
905 DisableNewTaskManagerForBrokenTest();
906
910 ShowTaskManager(); // Task manager shown BEFORE dev tools window. 907 ShowTaskManager(); // Task manager shown BEFORE dev tools window.
911 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 908 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
912 DevToolsWindow* devtools = 909 DevToolsWindow* devtools =
913 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), false); 910 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), false);
914 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab())); 911 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab()));
915 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab())); 912 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab()));
916 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools); 913 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools);
917 } 914 }
918 915
919 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsOldDockedWindow) { 916 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsOldDockedWindow) {
917 // TODO(nick, afakhry): Broken on new task manager because we show
918 // a long chrome-devtools:// URL without a prefix (expecting "Tab: *").
919 DisableNewTaskManagerForBrokenTest();
920
920 DevToolsWindow* devtools = 921 DevToolsWindow* devtools =
921 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), true); 922 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), true);
922 ShowTaskManager(); // Task manager shown AFTER dev tools window. 923 ShowTaskManager(); // Task manager shown AFTER dev tools window.
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 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
925 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools); 926 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools);
926 } 927 }
927 928
928 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsOldUnockedWindow) { 929 IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, DevToolsOldUndockedWindow) {
930 // TODO(nick, afakhry): Broken on new task manager because we show
931 // a long chrome-devtools:// URL without a prefix (expecting "Tab: *").
932 DisableNewTaskManagerForBrokenTest();
933
929 DevToolsWindow* devtools = 934 DevToolsWindow* devtools =
930 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), false); 935 DevToolsWindowTesting::OpenDevToolsWindowSync(browser(), false);
931 ShowTaskManager(); // Task manager shown AFTER dev tools window. 936 ShowTaskManager(); // Task manager shown AFTER dev tools window.
932 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab())); 937 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab()));
933 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab())); 938 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(3, MatchAnyTab()));
934 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools); 939 DevToolsWindowTesting::CloseDevToolsWindowSync(devtools);
935 } 940 }
936 941
937 IN_PROC_BROWSER_TEST_P(TaskManagerOOPIFBrowserTest, KillSubframe) { 942 IN_PROC_BROWSER_TEST_P(TaskManagerOOPIFBrowserTest, KillSubframe) {
938 ShowTaskManager(); 943 ShowTaskManager();
(...skipping 15 matching lines...) Expand all
954 if (!ShouldExpectSubframes()) { 959 if (!ShouldExpectSubframes()) {
955 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe())); 960 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe()));
956 } else { 961 } else {
957 ASSERT_NO_FATAL_FAILURE( 962 ASSERT_NO_FATAL_FAILURE(
958 WaitForTaskManagerRows(1, MatchSubframe("http://b.com/"))); 963 WaitForTaskManagerRows(1, MatchSubframe("http://b.com/")));
959 ASSERT_NO_FATAL_FAILURE( 964 ASSERT_NO_FATAL_FAILURE(
960 WaitForTaskManagerRows(1, MatchSubframe("http://c.com/"))); 965 WaitForTaskManagerRows(1, MatchSubframe("http://c.com/")));
961 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnySubframe())); 966 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnySubframe()));
962 int subframe_b = FindResourceIndex(MatchSubframe("http://b.com/")); 967 int subframe_b = FindResourceIndex(MatchSubframe("http://b.com/"));
963 ASSERT_NE(-1, subframe_b); 968 ASSERT_NE(-1, subframe_b);
964 ASSERT_TRUE(model()->GetResourceWebContents(subframe_b) != NULL); 969 ASSERT_NE(-1, model()->GetTabId(subframe_b));
965 ASSERT_TRUE(model()->CanActivate(subframe_b));
966 970
967 TaskManager::GetInstance()->KillProcess(subframe_b); 971 model()->Kill(subframe_b);
968 972
969 ASSERT_NO_FATAL_FAILURE( 973 ASSERT_NO_FATAL_FAILURE(
970 WaitForTaskManagerRows(0, MatchSubframe("http://b.com/"))); 974 WaitForTaskManagerRows(0, MatchSubframe("http://b.com/")));
971 ASSERT_NO_FATAL_FAILURE( 975 ASSERT_NO_FATAL_FAILURE(
972 WaitForTaskManagerRows(1, MatchSubframe("http://c.com/"))); 976 WaitForTaskManagerRows(1, MatchSubframe("http://c.com/")));
973 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnySubframe())); 977 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnySubframe()));
974 ASSERT_NO_FATAL_FAILURE( 978 ASSERT_NO_FATAL_FAILURE(
975 WaitForTaskManagerRows(1, MatchTab("cross-site iframe test"))); 979 WaitForTaskManagerRows(1, MatchTab("cross-site iframe test")));
976 } 980 }
977 981
978 HideTaskManager(); 982 HideTaskManager();
979 ShowTaskManager(); 983 ShowTaskManager();
980 984
981 if (!ShouldExpectSubframes()) { 985 if (!ShouldExpectSubframes()) {
982 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe())); 986 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe()));
983 } else { 987 } else {
984 ASSERT_NO_FATAL_FAILURE( 988 ASSERT_NO_FATAL_FAILURE(
985 WaitForTaskManagerRows(0, MatchSubframe("http://b.com/"))); 989 WaitForTaskManagerRows(0, MatchSubframe("http://b.com/")));
986 ASSERT_NO_FATAL_FAILURE( 990 ASSERT_NO_FATAL_FAILURE(
987 WaitForTaskManagerRows(1, MatchSubframe("http://c.com/"))); 991 WaitForTaskManagerRows(1, MatchSubframe("http://c.com/")));
988 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnySubframe())); 992 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnySubframe()));
989 ASSERT_NO_FATAL_FAILURE( 993 ASSERT_NO_FATAL_FAILURE(
990 WaitForTaskManagerRows(1, MatchTab("cross-site iframe test"))); 994 WaitForTaskManagerRows(1, MatchTab("cross-site iframe test")));
991 } 995 }
992 } 996 }
993 997
994 // Tests what happens when a tab navigates to a site (a.com) that it previously 998 // Tests what happens when a tab navigates to a site (a.com) that it previously
995 // has a cross-process subframe into (b.com). 999 // has a cross-process subframe into (b.com).
996 // 1000 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(); 1001 ShowTaskManager();
1003 1002
1004 host_resolver()->AddRule("*", "127.0.0.1"); 1003 host_resolver()->AddRule("*", "127.0.0.1");
1005 ASSERT_TRUE(embedded_test_server()->Start()); 1004 ASSERT_TRUE(embedded_test_server()->Start());
1006 content::SetupCrossSiteRedirector(embedded_test_server()); 1005 content::SetupCrossSiteRedirector(embedded_test_server());
1007 1006
1008 // Navigate the tab to a page on a.com with cross-process subframes to 1007 // Navigate the tab to a page on a.com with cross-process subframes to
1009 // b.com and c.com. 1008 // b.com and c.com.
1010 GURL a_dotcom(embedded_test_server()->GetURL( 1009 GURL a_dotcom(embedded_test_server()->GetURL(
1011 "/cross-site/a.com/iframe_cross_site.html")); 1010 "/cross-site/a.com/iframe_cross_site.html"));
(...skipping 27 matching lines...) Expand all
1039 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("iframe test"))); 1038 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("iframe test")));
1040 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 1039 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
1041 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe())); 1040 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe()));
1042 HideTaskManager(); 1041 HideTaskManager();
1043 ShowTaskManager(); 1042 ShowTaskManager();
1044 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("iframe test"))); 1043 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("iframe test")));
1045 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 1044 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
1046 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe())); 1045 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe()));
1047 } 1046 }
1048 1047
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, 1048 IN_PROC_BROWSER_TEST_P(TaskManagerOOPIFBrowserTest,
1052 DISABLED_NavigateToSiteWithSubframeToOriginalSite) { 1049 NavigateToSiteWithSubframeToOriginalSite) {
1053 ShowTaskManager(); 1050 ShowTaskManager();
1054 1051
1055 host_resolver()->AddRule("*", "127.0.0.1"); 1052 host_resolver()->AddRule("*", "127.0.0.1");
1056 ASSERT_TRUE(embedded_test_server()->Start()); 1053 ASSERT_TRUE(embedded_test_server()->Start());
1057 content::SetupCrossSiteRedirector(embedded_test_server()); 1054 content::SetupCrossSiteRedirector(embedded_test_server());
1058 1055
1059 // Navigate to a page on b.com with a simple (same-site) iframe. 1056 // 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. 1057 // This should not show any subframe resources in the task manager.
1061 GURL b_dotcom( 1058 GURL b_dotcom(
1062 embedded_test_server()->GetURL("/cross-site/b.com/iframe.html")); 1059 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( 1162 ASSERT_NO_FATAL_FAILURE(
1166 WaitForTaskManagerRows(0, MatchSubframe("http://b.com/"))); 1163 WaitForTaskManagerRows(0, MatchSubframe("http://b.com/")));
1167 ASSERT_NO_FATAL_FAILURE( 1164 ASSERT_NO_FATAL_FAILURE(
1168 WaitForTaskManagerRows(1, MatchSubframe("http://c.com/"))); 1165 WaitForTaskManagerRows(1, MatchSubframe("http://c.com/")));
1169 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnySubframe())); 1166 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnySubframe()));
1170 } 1167 }
1171 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("aac"))); 1168 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("aac")));
1172 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab())); 1169 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
1173 } 1170 }
1174 1171
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, 1172 IN_PROC_BROWSER_TEST_P(TaskManagerOOPIFBrowserTest,
1184 MAYBE_LeavePageWithCrossSiteIframes) { 1173 LeavePageWithCrossSiteIframes) {
1185 ShowTaskManager(); 1174 ShowTaskManager();
1186 1175
1187 host_resolver()->AddRule("*", "127.0.0.1"); 1176 host_resolver()->AddRule("*", "127.0.0.1");
1188 ASSERT_TRUE(embedded_test_server()->Start()); 1177 ASSERT_TRUE(embedded_test_server()->Start());
1189 content::SetupCrossSiteRedirector(embedded_test_server()); 1178 content::SetupCrossSiteRedirector(embedded_test_server());
1190 1179
1191 // Navigate the tab to a page on a.com with cross-process subframes. 1180 // Navigate the tab to a page on a.com with cross-process subframes.
1192 GURL a_dotcom_with_iframes(embedded_test_server()->GetURL( 1181 GURL a_dotcom_with_iframes(embedded_test_server()->GetURL(
1193 "/cross-site/a.com/iframe_cross_site.html")); 1182 "/cross-site/a.com/iframe_cross_site.html"));
1194 browser()->OpenURL(content::OpenURLParams(a_dotcom_with_iframes, 1183 browser()->OpenURL(content::OpenURLParams(a_dotcom_with_iframes,
(...skipping 25 matching lines...) Expand all
1220 WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness"))); 1209 WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness")));
1221 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe())); 1210 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe()));
1222 1211
1223 HideTaskManager(); 1212 HideTaskManager();
1224 ShowTaskManager(); 1213 ShowTaskManager();
1225 1214
1226 ASSERT_NO_FATAL_FAILURE( 1215 ASSERT_NO_FATAL_FAILURE(
1227 WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness"))); 1216 WaitForTaskManagerRows(1, MatchTab("Title Of Awesomeness")));
1228 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe())); 1217 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchAnySubframe()));
1229 } 1218 }
OLDNEW
« no previous file with comments | « chrome/browser/task_manager/task_manager.cc ('k') | chrome/browser/task_manager/task_manager_browsertest_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698