Index: chrome/browser/apps/app_shim/app_shim_interactive_uitest_mac.mm |
diff --git a/chrome/browser/apps/app_shim/app_shim_interactive_uitest_mac.mm b/chrome/browser/apps/app_shim/app_shim_interactive_uitest_mac.mm |
index 4c1b143935cc5ceb876c35868bb39946595ce267..1373dbd2ed6945ee375d516f2aafd35c4d8516e6 100644 |
--- a/chrome/browser/apps/app_shim/app_shim_interactive_uitest_mac.mm |
+++ b/chrome/browser/apps/app_shim/app_shim_interactive_uitest_mac.mm |
@@ -35,6 +35,7 @@ |
#include "extensions/browser/app_window/native_app_window.h" |
#include "extensions/browser/extension_prefs.h" |
#include "extensions/test/extension_test_message_listener.h" |
+#import "ui/base/test/windowed_nsnotification_observer.h" |
#import "ui/events/test/cocoa_test_event_utils.h" |
namespace { |
@@ -301,59 +302,6 @@ Browser* GetFirstHostedAppWindow() { |
} // namespace |
-// Watches for NSNotifications from the shared workspace. |
-@interface WindowedNSNotificationObserver : NSObject { |
- @private |
- base::scoped_nsobject<NSString> bundleId_; |
- BOOL notificationReceived_; |
- scoped_ptr<base::RunLoop> runLoop_; |
-} |
- |
-- (id)initForNotification:(NSString*)name |
- andBundleId:(NSString*)bundleId; |
-- (void)observe:(NSNotification*)notification; |
-- (void)wait; |
-@end |
- |
-@implementation WindowedNSNotificationObserver |
- |
-- (id)initForNotification:(NSString*)name |
- andBundleId:(NSString*)bundleId { |
- if (self = [super init]) { |
- bundleId_.reset([[bundleId copy] retain]); |
- [[[NSWorkspace sharedWorkspace] notificationCenter] |
- addObserver:self |
- selector:@selector(observe:) |
- name:name |
- object:nil]; |
- } |
- return self; |
-} |
- |
-- (void)observe:(NSNotification*)notification { |
- DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
- |
- NSRunningApplication* application = |
- [[notification userInfo] objectForKey:NSWorkspaceApplicationKey]; |
- if (![[application bundleIdentifier] isEqualToString:bundleId_]) |
- return; |
- |
- [[[NSWorkspace sharedWorkspace] notificationCenter] removeObserver:self]; |
- notificationReceived_ = YES; |
- if (runLoop_.get()) |
- runLoop_->Quit(); |
-} |
- |
-- (void)wait { |
- if (notificationReceived_) |
- return; |
- |
- runLoop_.reset(new base::RunLoop); |
- runLoop_->Run(); |
-} |
- |
-@end |
- |
namespace apps { |
// Shims require static libraries http://crbug.com/386024. |
@@ -387,8 +335,8 @@ IN_PROC_BROWSER_TEST_F(AppShimInteractiveTest, MAYBE_HostedAppLaunch) { |
{ |
base::scoped_nsobject<WindowedNSNotificationObserver> ns_observer; |
ns_observer.reset([[WindowedNSNotificationObserver alloc] |
- initForNotification:NSWorkspaceDidLaunchApplicationNotification |
- andBundleId:bundle_id]); |
+ initForWorkspaceNotification:NSWorkspaceDidLaunchApplicationNotification |
+ bundleId:bundle_id]); |
WindowedAppShimLaunchObserver observer(app->id()); |
LaunchHostedApp(app); |
[ns_observer wait]; |
@@ -402,8 +350,9 @@ IN_PROC_BROWSER_TEST_F(AppShimInteractiveTest, MAYBE_HostedAppLaunch) { |
ASSERT_EQ(1u, [running_shim count]); |
ns_observer.reset([[WindowedNSNotificationObserver alloc] |
- initForNotification:NSWorkspaceDidTerminateApplicationNotification |
- andBundleId:bundle_id]); |
+ initForWorkspaceNotification: |
+ NSWorkspaceDidTerminateApplicationNotification |
+ bundleId:bundle_id]); |
[base::mac::ObjCCastStrict<NSRunningApplication>( |
[running_shim objectAtIndex:0]) terminate]; |
[ns_observer wait]; |
@@ -458,8 +407,8 @@ IN_PROC_BROWSER_TEST_F(AppShimInteractiveTest, MAYBE_Launch) { |
{ |
base::scoped_nsobject<WindowedNSNotificationObserver> ns_observer; |
ns_observer.reset([[WindowedNSNotificationObserver alloc] |
- initForNotification:NSWorkspaceDidLaunchApplicationNotification |
- andBundleId:bundle_id]); |
+ initForWorkspaceNotification:NSWorkspaceDidLaunchApplicationNotification |
+ bundleId:bundle_id]); |
WindowedAppShimLaunchObserver observer(app->id()); |
LaunchPlatformApp(app); |
[ns_observer wait]; |
@@ -478,8 +427,9 @@ IN_PROC_BROWSER_TEST_F(AppShimInteractiveTest, MAYBE_Launch) { |
ASSERT_EQ(1u, [running_shim count]); |
ns_observer.reset([[WindowedNSNotificationObserver alloc] |
- initForNotification:NSWorkspaceDidTerminateApplicationNotification |
- andBundleId:bundle_id]); |
+ initForWorkspaceNotification: |
+ NSWorkspaceDidTerminateApplicationNotification |
+ bundleId:bundle_id]); |
[base::mac::ObjCCastStrict<NSRunningApplication>( |
[running_shim objectAtIndex:0]) terminate]; |
[ns_observer wait]; |
@@ -546,10 +496,10 @@ IN_PROC_BROWSER_TEST_F(AppShimInteractiveTest, MAYBE_ShowWindow) { |
// Showing the window causes the shim to launch. |
{ |
- base::scoped_nsobject<WindowedNSNotificationObserver> ns_observer( |
- [[WindowedNSNotificationObserver alloc] |
- initForNotification:NSWorkspaceDidLaunchApplicationNotification |
- andBundleId:bundle_id]); |
+ base::scoped_nsobject<WindowedNSNotificationObserver> |
+ ns_observer([[WindowedNSNotificationObserver alloc] |
+ initForWorkspaceNotification:NSWorkspaceDidLaunchApplicationNotification |
+ bundleId:bundle_id]); |
WindowedAppShimLaunchObserver observer(app->id()); |
window_1->Show(extensions::AppWindow::SHOW_INACTIVE); |
[ns_observer wait]; |
@@ -562,8 +512,9 @@ IN_PROC_BROWSER_TEST_F(AppShimInteractiveTest, MAYBE_ShowWindow) { |
{ |
base::scoped_nsobject<WindowedNSNotificationObserver> ns_observer( |
[[WindowedNSNotificationObserver alloc] |
- initForNotification:NSWorkspaceDidTerminateApplicationNotification |
- andBundleId:bundle_id]); |
+ initForWorkspaceNotification: |
+ NSWorkspaceDidTerminateApplicationNotification |
+ bundleId:bundle_id]); |
window_1->Hide(); |
[ns_observer wait]; |
EXPECT_FALSE(HasAppShimHost(profile(), app->id())); |
@@ -587,10 +538,10 @@ IN_PROC_BROWSER_TEST_F(AppShimInteractiveTest, MAYBE_ShowWindow) { |
// Showing one of the windows should launch the shim. |
{ |
- base::scoped_nsobject<WindowedNSNotificationObserver> ns_observer( |
- [[WindowedNSNotificationObserver alloc] |
- initForNotification:NSWorkspaceDidLaunchApplicationNotification |
- andBundleId:bundle_id]); |
+ base::scoped_nsobject<WindowedNSNotificationObserver> |
+ ns_observer([[WindowedNSNotificationObserver alloc] |
+ initForWorkspaceNotification:NSWorkspaceDidLaunchApplicationNotification |
+ bundleId:bundle_id]); |
WindowedAppShimLaunchObserver observer(app->id()); |
window_1->Show(extensions::AppWindow::SHOW_INACTIVE); |
[ns_observer wait]; |
@@ -625,8 +576,9 @@ IN_PROC_BROWSER_TEST_F(AppShimInteractiveTest, MAYBE_ShowWindow) { |
EXPECT_TRUE(HasAppShimHost(profile(), app->id())); |
base::scoped_nsobject<WindowedNSNotificationObserver> ns_observer( |
[[WindowedNSNotificationObserver alloc] |
- initForNotification:NSWorkspaceDidTerminateApplicationNotification |
- andBundleId:bundle_id]); |
+ initForWorkspaceNotification: |
+ NSWorkspaceDidTerminateApplicationNotification |
+ bundleId:bundle_id]); |
window_2->Hide(); |
[ns_observer wait]; |
EXPECT_EQ(1, deactivate_observer.deactivated_count()); |