| Index: trunk/src/chrome/browser/content_settings/permission_queue_controller_unittest.cc
|
| ===================================================================
|
| --- trunk/src/chrome/browser/content_settings/permission_queue_controller_unittest.cc (revision 238401)
|
| +++ trunk/src/chrome/browser/content_settings/permission_queue_controller_unittest.cc (working copy)
|
| @@ -7,10 +7,13 @@
|
| #include "base/synchronization/waitable_event.h"
|
| #include "chrome/browser/chrome_notification_types.h"
|
| #include "chrome/browser/content_settings/permission_request_id.h"
|
| +#include "chrome/browser/infobars/infobar.h"
|
| #include "chrome/browser/infobars/infobar_service.h"
|
| #include "chrome/common/content_settings_types.h"
|
| #include "chrome/test/base/chrome_render_view_host_test_harness.h"
|
| #include "chrome/test/base/testing_profile.h"
|
| +#include "content/public/browser/notification_details.h"
|
| +#include "content/public/browser/notification_service.h"
|
| #include "content/public/browser/web_contents.h"
|
| #include "content/public/test/mock_render_process_host.h"
|
| #include "content/public/test/test_browser_thread.h"
|
| @@ -19,9 +22,14 @@
|
|
|
| // PermissionQueueControllerTests ---------------------------------------------
|
|
|
| -class PermissionQueueControllerTests : public ChromeRenderViewHostTestHarness {
|
| +class PermissionQueueControllerTests : public ChromeRenderViewHostTestHarness,
|
| + public content::NotificationObserver {
|
| protected:
|
| - PermissionQueueControllerTests() {}
|
| + PermissionQueueControllerTests() {
|
| + registrar_.Add(this,
|
| + chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED,
|
| + content::NotificationService::AllSources());
|
| + }
|
| virtual ~PermissionQueueControllerTests() {}
|
|
|
| PermissionRequestID RequestID(int bridge_id) {
|
| @@ -38,6 +46,22 @@
|
| InfoBarService::CreateForWebContents(web_contents());
|
| }
|
|
|
| + // content::NotificationObserver:
|
| + virtual void Observe(int type,
|
| + const content::NotificationSource& source,
|
| + const content::NotificationDetails& details) OVERRIDE {
|
| + DCHECK_EQ(chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, type);
|
| + // Delete the removed infobar. In normal Chrome code, this would be handled
|
| + // by the InfoBarContainer. It's safe to do this even if the queue
|
| + // controller Observe() function has not yet been called; see comments in
|
| + // PermissionQueueController::Observe().
|
| + // TODO(pkasting): This will no longer be necessary once the InfoBarService
|
| + // truly owns infobars.
|
| + delete content::Details<InfoBar::RemovedDetails>(details)->first;
|
| + }
|
| +
|
| + content::NotificationRegistrar registrar_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(PermissionQueueControllerTests);
|
| };
|
|
|
|
|