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 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_EXTENSIONS_LAZY_BACKGROUND_PAGE_TEST_UTIL_H_ 6#define CHROME_BROWSER_EXTENSIONS_LAZY_BACKGROUND_PAGE_TEST_UTIL_H_ 7 8#include "chrome/browser/chrome_notification_types.h" 9#include "content/public/browser/notification_service.h" 10#include "content/public/test/test_utils.h" 11 12// Helper class to wait for a lazy background page to load and close again. 13class LazyBackgroundObserver { 14 public: 15 LazyBackgroundObserver() 16 : page_created_(extensions::NOTIFICATION_EXTENSION_BACKGROUND_PAGE_READY, 17 content::NotificationService::AllSources()), 18 page_closed_(extensions::NOTIFICATION_EXTENSION_HOST_DESTROYED, 19 content::NotificationService::AllSources()) {} 20 explicit LazyBackgroundObserver(Profile* profile) 21 : page_created_(extensions::NOTIFICATION_EXTENSION_BACKGROUND_PAGE_READY, 22 content::NotificationService::AllSources()), 23 page_closed_(extensions::NOTIFICATION_EXTENSION_HOST_DESTROYED, 24 content::Source<Profile>(profile)) {} 25 void Wait() { 26 page_created_.Wait(); 27 page_closed_.Wait(); 28 } 29 30 void WaitUntilLoaded() { 31 page_created_.Wait(); 32 } 33 void WaitUntilClosed() { 34 page_closed_.Wait(); 35 } 36 37 private: 38 content::WindowedNotificationObserver page_created_; 39 content::WindowedNotificationObserver page_closed_; 40}; 41 42#endif // CHROME_BROWSER_EXTENSIONS_LAZY_BACKGROUND_PAGE_TEST_UTIL_H_ 43