Commit 8fb0e4a1 authored by nick@chromium.org's avatar nick@chromium.org

Fix task manager behavior for tabs that are killed/restarted.

BUG=359550
TEST=browser_tests

Review URL: https://codereview.chromium.org/231853005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@263096 0039d316-1c4b-4281-b951-d872f2087c98
parent 60030fdf
......@@ -22,6 +22,7 @@
#include "chrome/browser/task_manager/resource_provider.h"
#include "chrome/browser/task_manager/task_manager_browsertest_util.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_dialogs.h"
#include "chrome/browser/ui/browser_navigator.h"
#include "chrome/browser/ui/browser_window.h"
......@@ -141,6 +142,33 @@ IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeTabContentsChanges) {
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
}
IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, KillTab) {
ShowTaskManager();
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAboutBlankTab()));
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchTab("title1.html")));
// Open a new tab and make sure the task manager notices it.
AddTabAtIndex(0, GetTestURL(), content::PAGE_TRANSITION_TYPED);
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("title1.html")));
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
// Killing the tab via task manager should remove the row.
int tab = FindResourceIndex(MatchTab("title1.html"));
ASSERT_NE(-1, tab);
ASSERT_TRUE(model()->GetResourceWebContents(tab) != NULL);
ASSERT_TRUE(model()->CanActivate(tab));
TaskManager::GetInstance()->KillProcess(tab);
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, MatchTab("title1.html")));
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchAnyTab()));
// Tab should reappear in task manager upon reload.
chrome::Reload(browser(), CURRENT_TAB);
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, MatchTab("title1.html")));
ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(2, MatchAnyTab()));
}
IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticePanel) {
ASSERT_TRUE(LoadExtension(
test_data_dir_.AppendASCII("good").AppendASCII("Extensions")
......
......@@ -42,6 +42,15 @@ class TaskManagerWebContentsObserver : public content::WebContentsObserver {
provider_->AddToTaskManager(web_contents());
}
virtual void RenderViewReady() OVERRIDE {
provider_->RemoveFromTaskManager(web_contents());
provider_->AddToTaskManager(web_contents());
}
virtual void RenderProcessGone(base::TerminationStatus status) OVERRIDE {
provider_->RemoveFromTaskManager(web_contents());
}
virtual void WebContentsDestroyed(WebContents* web_contents) OVERRIDE {
provider_->RemoveFromTaskManager(web_contents);
provider_->DeleteObserver(this); // Deletes |this|.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment