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. 13 class LazyBackgroundObserver { 14 public: 15 LazyBackgroundObserver() 16 : page_created_(chrome::NOTIFICATION_EXTENSION_BACKGROUND_PAGE_READY, 17 content::NotificationService::AllSources()), 18 page_closed_(chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED, 19 content::NotificationService::AllSources()) { 20 } 21 explicit LazyBackgroundObserver(Profile* profile) 22 : page_created_(chrome::NOTIFICATION_EXTENSION_BACKGROUND_PAGE_READY, 23 content::NotificationService::AllSources()), 24 page_closed_(chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED, 25 content::Source<Profile>(profile)) { 26 } 27 void Wait() { 28 page_created_.Wait(); 29 page_closed_.Wait(); 30 } 31 32 void WaitUntilLoaded() { 33 page_created_.Wait(); 34 } 35 void WaitUntilClosed() { 36 page_closed_.Wait(); 37 } 38 39 private: 40 content::WindowedNotificationObserver page_created_; 41 content::WindowedNotificationObserver page_closed_; 42 }; 43 44 #endif // CHROME_BROWSER_EXTENSIONS_LAZY_BACKGROUND_PAGE_TEST_UTIL_H_ 45