| 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());
 | 
|  
 | 
| 
 |