| Index: chrome/browser/task_manager/task_manager_browsertest.cc
|
| ===================================================================
|
| --- chrome/browser/task_manager/task_manager_browsertest.cc (revision 71535)
|
| +++ chrome/browser/task_manager/task_manager_browsertest.cc (working copy)
|
| @@ -34,15 +34,12 @@
|
|
|
| const FilePath::CharType* kTitle1File = FILE_PATH_LITERAL("title1.html");
|
|
|
| -class ResourceChangeObserver
|
| - : public TaskManagerModelObserver,
|
| - public base::RefCountedThreadSafe<ResourceChangeObserver> {
|
| +class ResourceChangeObserver : public TaskManagerModelObserver {
|
| public:
|
| ResourceChangeObserver(const TaskManagerModel* model,
|
| int target_resource_count)
|
| : model_(model),
|
| - target_resource_count_(target_resource_count),
|
| - check_pending_(false) {
|
| + target_resource_count_(target_resource_count) {
|
| }
|
|
|
| virtual void OnModelChanged() {
|
| @@ -62,48 +59,15 @@
|
| }
|
|
|
| private:
|
| - friend class base::RefCountedThreadSafe<ResourceChangeObserver>;
|
| void OnResourceChange() {
|
| - // The task manager can churn resources (for example, when a
|
| - // BackgroundContents navigates, we remove and re-add the resource to
|
| - // allow the UI to update properly). So check the resource count via
|
| - // a task to make sure we aren't triggered by a transient change.
|
| - if (check_pending_)
|
| - return;
|
| - check_pending_ = true;
|
| - MessageLoopForUI::current()->PostTask(
|
| - FROM_HERE,
|
| - NewRunnableMethod(this, &ResourceChangeObserver::CheckResourceCount));
|
| - }
|
| -
|
| - void CheckResourceCount() {
|
| if (model_->ResourceCount() == target_resource_count_)
|
| MessageLoopForUI::current()->Quit();
|
| }
|
|
|
| const TaskManagerModel* model_;
|
| const int target_resource_count_;
|
| - bool check_pending_;
|
| };
|
|
|
| -// Helper class used to wait for a BackgroundContents to finish loading.
|
| -class BackgroundContentsListener : public NotificationObserver {
|
| - public:
|
| - explicit BackgroundContentsListener(Profile* profile) {
|
| - registrar_.Add(this, NotificationType::BACKGROUND_CONTENTS_NAVIGATED,
|
| - Source<Profile>(profile));
|
| - }
|
| - virtual void Observe(NotificationType type,
|
| - const NotificationSource& source,
|
| - const NotificationDetails& details) {
|
| - // Quit once the BackgroundContents has been loaded.
|
| - if (type.value == NotificationType::BACKGROUND_CONTENTS_NAVIGATED)
|
| - MessageLoopForUI::current()->Quit();
|
| - }
|
| - private:
|
| - NotificationRegistrar registrar_;
|
| -};
|
| -
|
| } // namespace
|
|
|
| class TaskManagerBrowserTest : public ExtensionBrowserTest {
|
| @@ -115,18 +79,11 @@
|
| void WaitForResourceChange(int target_count) {
|
| if (model()->ResourceCount() == target_count)
|
| return;
|
| - scoped_refptr<ResourceChangeObserver> observer(
|
| - new ResourceChangeObserver(model(), target_count));
|
| - model()->AddObserver(observer.get());
|
| + ResourceChangeObserver observer(model(), target_count);
|
| + model()->AddObserver(&observer);
|
| ui_test_utils::RunMessageLoop();
|
| - model()->RemoveObserver(observer.get());
|
| + model()->RemoveObserver(&observer);
|
| }
|
| -
|
| - // Wait for any pending BackgroundContents to finish starting up.
|
| - void WaitForBackgroundContents() {
|
| - BackgroundContentsListener listener(browser()->profile());
|
| - ui_test_utils::RunMessageLoop();
|
| - }
|
| };
|
|
|
| // Regression test for http://crbug.com/13361
|
| @@ -192,45 +149,6 @@
|
| WaitForResourceChange(2);
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, KillBGContents) {
|
| - EXPECT_EQ(0, model()->ResourceCount());
|
| -
|
| - // Show the task manager. This populates the model, and helps with debugging
|
| - // (you see the task manager).
|
| - browser()->window()->ShowTaskManager();
|
| -
|
| - // Browser and the New Tab Page.
|
| - WaitForResourceChange(2);
|
| -
|
| - // Open a new background contents and make sure we notice that.
|
| - GURL url(ui_test_utils::GetTestUrl(FilePath(FilePath::kCurrentDirectory),
|
| - FilePath(kTitle1File)));
|
| -
|
| - BackgroundContentsService* service =
|
| - browser()->profile()->GetBackgroundContentsService();
|
| - string16 application_id(ASCIIToUTF16("test_app_id"));
|
| - service->LoadBackgroundContents(browser()->profile(),
|
| - url,
|
| - ASCIIToUTF16("background_page"),
|
| - application_id);
|
| - // Wait for the background contents process to finish loading.
|
| - WaitForBackgroundContents();
|
| - EXPECT_EQ(3, model()->ResourceCount());
|
| -
|
| - // Kill the background contents process and verify that it disappears from the
|
| - // model.
|
| - bool found = false;
|
| - for (int i = 0; i < model()->ResourceCount(); ++i) {
|
| - if (model()->IsBackgroundResource(i)) {
|
| - TaskManager::GetInstance()->KillProcess(i);
|
| - found = true;
|
| - break;
|
| - }
|
| - }
|
| - ASSERT_TRUE(found);
|
| - WaitForResourceChange(2);
|
| -}
|
| -
|
| IN_PROC_BROWSER_TEST_F(TaskManagerBrowserTest, NoticeExtensionChanges) {
|
| EXPECT_EQ(0, model()->ResourceCount());
|
|
|
|
|