Chromium Code Reviews| Index: chrome/browser/extensions/extension_browsertest.cc |
| diff --git a/chrome/browser/extensions/extension_browsertest.cc b/chrome/browser/extensions/extension_browsertest.cc |
| index b3248cdfc5b1f9bf471e8788b8c2dad27f028277..009867ecdc2aad9875a5e65fb7d345df8c69f526 100644 |
| --- a/chrome/browser/extensions/extension_browsertest.cc |
| +++ b/chrome/browser/extensions/extension_browsertest.cc |
| @@ -23,10 +23,12 @@ |
| #include "chrome/browser/extensions/extension_install_prompt.h" |
| #include "chrome/browser/extensions/extension_service.h" |
| #include "chrome/browser/extensions/extension_system.h" |
| +#include "chrome/browser/extensions/shell_window_registry.h" |
| #include "chrome/browser/extensions/unpacked_installer.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/ui/browser.h" |
| #include "chrome/browser/ui/browser_window.h" |
| +#include "chrome/browser/ui/extensions/shell_window.h" |
| #include "chrome/browser/ui/omnibox/location_bar.h" |
| #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| #include "chrome/common/chrome_notification_types.h" |
| @@ -44,6 +46,7 @@ |
| using extensions::Extension; |
| using extensions::ExtensionCreator; |
| +using extensions::ShellWindowRegistry; |
| ExtensionBrowserTest::ExtensionBrowserTest() |
| : loaded_(false), |
| @@ -73,6 +76,10 @@ void ExtensionBrowserTest::SetUpCommandLine(CommandLine* command_line) { |
| command_line->AppendSwitchASCII(switches::kLoginProfile, "user"); |
| command_line->AppendSwitch(switches::kNoFirstRun); |
| #endif |
| + |
| + // Make event pages get suspended quicker. |
| + command_line->AppendSwitchASCII(switches::kEventPageIdleTime, "1"); |
| + command_line->AppendSwitchASCII(switches::kEventPageUnloadingTime, "1"); |
| } |
| const Extension* ExtensionBrowserTest::LoadExtensionWithFlags( |
| @@ -533,6 +540,30 @@ bool ExtensionBrowserTest::WaitForCrxInstallerDone() { |
| return crx_installers_done_observed_ == (before + 1); |
| } |
| +void ExtensionBrowserTest::CloseShellWindow(ShellWindow* window) { |
| + content::WindowedNotificationObserver destroyed_observer( |
| + content::NOTIFICATION_WEB_CONTENTS_DESTROYED, |
| + content::NotificationService::AllSources()); |
| + window->GetBaseWindow()->Close(); |
| + destroyed_observer.Wait(); |
| +} |
| + |
| +void ExtensionBrowserTest::CloseShellWindowsAndWaitForAppToExit() { |
| + content::WindowedNotificationObserver destroyed_observer( |
| + chrome::NOTIFICATION_EXTENSION_HOST_DESTROYED, |
| + content::NotificationService::AllSources()); |
| + |
| + ShellWindowRegistry* app_registry = |
| + ShellWindowRegistry::Get(browser()->profile()); |
| + ShellWindowRegistry::const_iterator iter; |
| + ShellWindowRegistry::ShellWindowSet shell_windows = |
| + app_registry->shell_windows(); |
| + for (iter = shell_windows.begin(); iter != shell_windows.end(); ++iter) |
| + CloseShellWindow(*iter); |
| + |
| + destroyed_observer.Wait(); |
|
Yoyo Zhou
2012/10/30 01:35:22
This looks like it's only going to wait for 1 shel
benwells
2012/10/30 02:55:23
It's waiting for the background page to exit. I'll
|
| +} |
| + |
| void ExtensionBrowserTest::OpenWindow(content::WebContents* contents, |
| const GURL& url, |
| bool newtab_process_should_equal_opener, |