Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Side by Side Diff: apps/app_shim/app_shim_interactive_uitest_mac.mm

Issue 597113003: [Mac] Re-enable AppShimInteractiveTest.Launch (again). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import <Cocoa/Cocoa.h> 5 #import <Cocoa/Cocoa.h>
6 #include <vector> 6 #include <vector>
7 7
8 #include "apps/app_shim/app_shim_handler_mac.h" 8 #include "apps/app_shim/app_shim_handler_mac.h"
9 #include "apps/app_shim/app_shim_host_manager_mac.h" 9 #include "apps/app_shim/app_shim_host_manager_mac.h"
10 #include "apps/app_shim/extension_app_shim_handler_mac.h" 10 #include "apps/app_shim/extension_app_shim_handler_mac.h"
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 219
220 @end 220 @end
221 221
222 namespace apps { 222 namespace apps {
223 223
224 // Shims require static libraries http://crbug.com/386024. 224 // Shims require static libraries http://crbug.com/386024.
225 #if defined(COMPONENT_BUILD) 225 #if defined(COMPONENT_BUILD)
226 #define MAYBE_Launch DISABLED_Launch 226 #define MAYBE_Launch DISABLED_Launch
227 #define MAYBE_RebuildShim DISABLED_RebuildShim 227 #define MAYBE_RebuildShim DISABLED_RebuildShim
228 #else 228 #else
229 // Launch is flaky http://crbug.com/415422. 229 #define MAYBE_Launch Launch
230 #define MAYBE_Launch DISABLED_Launch
231 #define MAYBE_RebuildShim RebuildShim 230 #define MAYBE_RebuildShim RebuildShim
232 #endif 231 #endif
233 232
234 // Test that launching the shim for an app starts the app, and vice versa. 233 // Test that launching the shim for an app starts the app, and vice versa.
235 // These two cases are combined because the time to run the test is dominated 234 // These two cases are combined because the time to run the test is dominated
236 // by loading the extension and creating the shim. 235 // by loading the extension and creating the shim.
237 IN_PROC_BROWSER_TEST_F(AppShimInteractiveTest, MAYBE_Launch) { 236 IN_PROC_BROWSER_TEST_F(AppShimInteractiveTest, MAYBE_Launch) {
238 // Install the app. 237 // Install the app.
239 const extensions::Extension* app = InstallPlatformApp("minimal"); 238 const extensions::Extension* app = InstallPlatformApp("minimal");
240 239
(...skipping 10 matching lines...) Expand all
251 // attempting to launch it. Since all of the file operations are done in the 250 // attempting to launch it. Since all of the file operations are done in the
252 // same event on the FILE thread, everything will be done by the time the 251 // same event on the FILE thread, everything will be done by the time the
253 // watcher's callback is executed. 252 // watcher's callback is executed.
254 scoped_refptr<WindowedFilePathWatcher> file_watcher = 253 scoped_refptr<WindowedFilePathWatcher> file_watcher =
255 new WindowedFilePathWatcher(shim_path); 254 new WindowedFilePathWatcher(shim_path);
256 web_app::UpdateAllShortcuts(base::string16(), profile(), app); 255 web_app::UpdateAllShortcuts(base::string16(), profile(), app);
257 file_watcher->Wait(); 256 file_watcher->Wait();
258 ASSERT_TRUE(base::PathExists(shim_path)); 257 ASSERT_TRUE(base::PathExists(shim_path));
259 NSString* bundle_id = GetBundleID(shim_path); 258 NSString* bundle_id = GetBundleID(shim_path);
260 259
261 // Case 1: Launch the shim, it should start the app. 260 // Case 1: Launch the app, it should start the shim.
262 {
263 ExtensionTestMessageListener launched_listener("Launched", false);
264 CommandLine shim_cmdline(CommandLine::NO_PROGRAM);
265 shim_cmdline.AppendSwitch(app_mode::kLaunchedForTest);
266 ProcessSerialNumber shim_psn;
267 ASSERT_TRUE(base::mac::OpenApplicationWithPath(
268 shim_path, shim_cmdline, kLSLaunchDefaults, &shim_psn));
269 ASSERT_TRUE(launched_listener.WaitUntilSatisfied());
270
271 ASSERT_TRUE(GetFirstAppWindow());
272 EXPECT_TRUE(HasAppShimHost(profile(), app->id()));
273
274 // If the window is closed, the shim should quit.
275 pid_t shim_pid;
276 EXPECT_EQ(noErr, GetProcessPID(&shim_psn, &shim_pid));
277 GetFirstAppWindow()->GetBaseWindow()->Close();
278 ASSERT_TRUE(
279 base::WaitForSingleProcess(shim_pid, TestTimeouts::action_timeout()));
280
281 EXPECT_FALSE(GetFirstAppWindow());
282 EXPECT_FALSE(HasAppShimHost(profile(), app->id()));
283 }
284
285 // Case 2: Launch the app, it should start the shim.
286 { 261 {
287 base::scoped_nsobject<WindowedNSNotificationObserver> ns_observer; 262 base::scoped_nsobject<WindowedNSNotificationObserver> ns_observer;
288 ns_observer.reset([[WindowedNSNotificationObserver alloc] 263 ns_observer.reset([[WindowedNSNotificationObserver alloc]
289 initForNotification:NSWorkspaceDidLaunchApplicationNotification 264 initForNotification:NSWorkspaceDidLaunchApplicationNotification
290 andBundleId:bundle_id]); 265 andBundleId:bundle_id]);
291 WindowedAppShimLaunchObserver observer(app->id()); 266 WindowedAppShimLaunchObserver observer(app->id());
292 LaunchPlatformApp(app); 267 LaunchPlatformApp(app);
293 [ns_observer wait]; 268 [ns_observer wait];
294 observer.Wait(); 269 observer.Wait();
295 270
(...skipping 12 matching lines...) Expand all
308 ns_observer.reset([[WindowedNSNotificationObserver alloc] 283 ns_observer.reset([[WindowedNSNotificationObserver alloc]
309 initForNotification:NSWorkspaceDidTerminateApplicationNotification 284 initForNotification:NSWorkspaceDidTerminateApplicationNotification
310 andBundleId:bundle_id]); 285 andBundleId:bundle_id]);
311 [base::mac::ObjCCastStrict<NSRunningApplication>( 286 [base::mac::ObjCCastStrict<NSRunningApplication>(
312 [running_shim objectAtIndex:0]) terminate]; 287 [running_shim objectAtIndex:0]) terminate];
313 [ns_observer wait]; 288 [ns_observer wait];
314 289
315 EXPECT_FALSE(GetFirstAppWindow()); 290 EXPECT_FALSE(GetFirstAppWindow());
316 EXPECT_FALSE(HasAppShimHost(profile(), app->id())); 291 EXPECT_FALSE(HasAppShimHost(profile(), app->id()));
317 } 292 }
293
294 // Case 2: Launch the shim, it should start the app.
295 {
296 ExtensionTestMessageListener launched_listener("Launched", false);
297 CommandLine shim_cmdline(CommandLine::NO_PROGRAM);
298 shim_cmdline.AppendSwitch(app_mode::kLaunchedForTest);
299 ProcessSerialNumber shim_psn;
300 ASSERT_TRUE(base::mac::OpenApplicationWithPath(
301 shim_path, shim_cmdline, kLSLaunchDefaults, &shim_psn));
302 ASSERT_TRUE(launched_listener.WaitUntilSatisfied());
303
304 ASSERT_TRUE(GetFirstAppWindow());
305 EXPECT_TRUE(HasAppShimHost(profile(), app->id()));
306
307 // If the window is closed, the shim should quit.
308 pid_t shim_pid;
309 EXPECT_EQ(noErr, GetProcessPID(&shim_psn, &shim_pid));
310 GetFirstAppWindow()->GetBaseWindow()->Close();
311 ASSERT_TRUE(
312 base::WaitForSingleProcess(shim_pid, TestTimeouts::action_timeout()));
313
314 EXPECT_FALSE(GetFirstAppWindow());
315 EXPECT_FALSE(HasAppShimHost(profile(), app->id()));
316 }
318 } 317 }
319 318
320 #if defined(ARCH_CPU_64_BITS) 319 #if defined(ARCH_CPU_64_BITS)
321 320
322 // Tests that a 32 bit shim attempting to launch 64 bit Chrome will eventually 321 // Tests that a 32 bit shim attempting to launch 64 bit Chrome will eventually
323 // be rebuilt. 322 // be rebuilt.
324 IN_PROC_BROWSER_TEST_F(AppShimInteractiveTest, MAYBE_RebuildShim) { 323 IN_PROC_BROWSER_TEST_F(AppShimInteractiveTest, MAYBE_RebuildShim) {
325 // Get the 32 bit shim. 324 // Get the 32 bit shim.
326 base::FilePath test_data_dir; 325 base::FilePath test_data_dir;
327 PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir); 326 PathService::Get(chrome::DIR_TEST_DATA, &test_data_dir);
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 // the shim is rebuilt. 398 // the shim is rebuilt.
400 WindowedAppShimLaunchObserver(app->id()).Wait(); 399 WindowedAppShimLaunchObserver(app->id()).Wait();
401 400
402 EXPECT_TRUE(GetFirstAppWindow()); 401 EXPECT_TRUE(GetFirstAppWindow());
403 EXPECT_TRUE(HasAppShimHost(profile(), app->id())); 402 EXPECT_TRUE(HasAppShimHost(profile(), app->id()));
404 } 403 }
405 404
406 #endif // defined(ARCH_CPU_64_BITS) 405 #endif // defined(ARCH_CPU_64_BITS)
407 406
408 } // namespace apps 407 } // namespace apps
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698