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

Side by Side Diff: content/public/android/javatests/src/org/chromium/content/browser/ChildProcessLauncherTest.java

Issue 2828793002: Refactoring ChildProcessConnection. (Closed)
Patch Set: More test fixing. Created 3 years, 7 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
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 package org.chromium.content.browser; 5 package org.chromium.content.browser;
6 6
7 import android.content.ComponentName; 7 import android.content.ComponentName;
8 import android.content.Context; 8 import android.content.Context;
9 import android.content.Intent; 9 import android.content.Intent;
10 import android.content.ServiceConnection; 10 import android.content.ServiceConnection;
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 * Tests cleanup for a connection that terminates before setup. 95 * Tests cleanup for a connection that terminates before setup.
96 */ 96 */
97 @Test 97 @Test
98 @MediumTest 98 @MediumTest
99 @Feature({"ProcessManagement"}) 99 @Feature({"ProcessManagement"})
100 public void testServiceCrashedBeforeSetup() throws RemoteException { 100 public void testServiceCrashedBeforeSetup() throws RemoteException {
101 Assert.assertEquals(0, allocatedChromeSandboxedConnectionsCount()); 101 Assert.assertEquals(0, allocatedChromeSandboxedConnectionsCount());
102 Assert.assertEquals(0, ChildProcessLauncher.connectedServicesCountForTes ting()); 102 Assert.assertEquals(0, ChildProcessLauncher.connectedServicesCountForTes ting());
103 103
104 // Start and connect to a new service. 104 // Start and connect to a new service.
105 final ChildProcessConnectionImpl connection = startConnection(); 105 final BaseChildProcessConnection connection = startConnection();
106 Assert.assertEquals(1, allocatedChromeSandboxedConnectionsCount()); 106 Assert.assertEquals(1, allocatedChromeSandboxedConnectionsCount());
107 107
108 // Verify that the service is not yet set up. 108 // Verify that the service is not yet set up.
109 Assert.assertEquals(0, connection.getPid()); 109 Assert.assertEquals(0, connection.getPid());
110 Assert.assertEquals(0, ChildProcessLauncher.connectedServicesCountForTes ting()); 110 Assert.assertEquals(0, ChildProcessLauncher.connectedServicesCountForTes ting());
111 111
112 // Crash the service. 112 // Crash the service.
113 connection.crashServiceForTesting(); 113 connection.crashServiceForTesting();
114 114
115 // Verify that the connection gets cleaned-up. 115 // Verify that the connection gets cleaned-up.
(...skipping 15 matching lines...) Expand all
131 /** 131 /**
132 * Tests cleanup for a connection that terminates after setup. 132 * Tests cleanup for a connection that terminates after setup.
133 */ 133 */
134 @Test 134 @Test
135 @MediumTest 135 @MediumTest
136 @Feature({"ProcessManagement"}) 136 @Feature({"ProcessManagement"})
137 public void testServiceCrashedAfterSetup() throws RemoteException { 137 public void testServiceCrashedAfterSetup() throws RemoteException {
138 Assert.assertEquals(0, allocatedChromeSandboxedConnectionsCount()); 138 Assert.assertEquals(0, allocatedChromeSandboxedConnectionsCount());
139 139
140 // Start and connect to a new service. 140 // Start and connect to a new service.
141 final ChildProcessConnectionImpl connection = startConnection(); 141 final BaseChildProcessConnection connection = startConnection();
142 Assert.assertEquals(1, allocatedChromeSandboxedConnectionsCount()); 142 Assert.assertEquals(1, allocatedChromeSandboxedConnectionsCount());
143 143
144 // Initiate the connection setup. 144 // Initiate the connection setup.
145 triggerConnectionSetup(connection); 145 triggerConnectionSetup(connection);
146 146
147 // Verify that the connection completes the setup. 147 // Verify that the connection completes the setup.
148 CriteriaHelper.pollInstrumentationThread(Criteria.equals(1, new Callable <Integer>() { 148 CriteriaHelper.pollInstrumentationThread(Criteria.equals(1, new Callable <Integer>() {
149 @Override 149 @Override
150 public Integer call() { 150 public Integer call() {
151 return ChildProcessLauncher.connectedServicesCountForTesting(); 151 return ChildProcessLauncher.connectedServicesCountForTesting();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 * Tests spawning a pending process from queue. 186 * Tests spawning a pending process from queue.
187 */ 187 */
188 @Test 188 @Test
189 @MediumTest 189 @MediumTest
190 @Feature({"ProcessManagement"}) 190 @Feature({"ProcessManagement"})
191 public void testPendingSpawnQueue() throws RemoteException { 191 public void testPendingSpawnQueue() throws RemoteException {
192 final Context appContext = InstrumentationRegistry.getInstrumentation(). getTargetContext(); 192 final Context appContext = InstrumentationRegistry.getInstrumentation(). getTargetContext();
193 Assert.assertEquals(0, allocatedChromeSandboxedConnectionsCount()); 193 Assert.assertEquals(0, allocatedChromeSandboxedConnectionsCount());
194 194
195 // Start and connect to a new service. 195 // Start and connect to a new service.
196 final ChildProcessConnectionImpl connection = startConnection(); 196 final BaseChildProcessConnection connection = startConnection();
197 Assert.assertEquals(1, allocatedChromeSandboxedConnectionsCount()); 197 Assert.assertEquals(1, allocatedChromeSandboxedConnectionsCount());
198 198
199 // Queue up a new spawn request. There is no way to kill the pending con nection, leak it 199 // Queue up a new spawn request. There is no way to kill the pending con nection, leak it
200 // until the browser restart. 200 // until the browser restart.
201 final String packageName = appContext.getPackageName(); 201 final String packageName = appContext.getPackageName();
202 final boolean inSandbox = true; 202 final boolean inSandbox = true;
203 enqueuePendingSpawnForTesting(appContext, sProcessWaitArguments, 203 enqueuePendingSpawnForTesting(appContext, sProcessWaitArguments,
204 getDefaultChildProcessCreationParams(packageName), inSandbox); 204 getDefaultChildProcessCreationParams(packageName), inSandbox);
205 Assert.assertEquals(1, pendingSpawnsCountForTesting(appContext, packageN ame, inSandbox)); 205 Assert.assertEquals(1, pendingSpawnsCountForTesting(appContext, packageN ame, inSandbox));
206 206
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 @ChildProcessAllocatorSettings( 262 @ChildProcessAllocatorSettings(
263 sandboxedServiceCount = 4, sandboxedServiceName = DEFAULT_SANDBOXED_ PROCESS_SERVICE) 263 sandboxedServiceCount = 4, sandboxedServiceName = DEFAULT_SANDBOXED_ PROCESS_SERVICE)
264 public void testServiceNumberAllocation() { 264 public void testServiceNumberAllocation() {
265 Context appContext = InstrumentationRegistry.getInstrumentation().getTar getContext(); 265 Context appContext = InstrumentationRegistry.getInstrumentation().getTar getContext();
266 Assert.assertEquals(0, 266 Assert.assertEquals(0,
267 allocatedSandboxedConnectionsCountForTesting( 267 allocatedSandboxedConnectionsCountForTesting(
268 appContext, EXTERNAL_APK_PACKAGE_NAME)); 268 appContext, EXTERNAL_APK_PACKAGE_NAME));
269 Assert.assertEquals(0, allocatedChromeSandboxedConnectionsCount()); 269 Assert.assertEquals(0, allocatedChromeSandboxedConnectionsCount());
270 270
271 // Start and connect to a new service of an external APK. 271 // Start and connect to a new service of an external APK.
272 ChildProcessConnectionImpl externalApkConnection = 272 BaseChildProcessConnection externalApkConnection =
273 allocateConnection(EXTERNAL_APK_PACKAGE_NAME); 273 allocateConnection(EXTERNAL_APK_PACKAGE_NAME);
274 // Start and connect to a new service for a regular tab. 274 // Start and connect to a new service for a regular tab.
275 ChildProcessConnectionImpl tabConnection = allocateConnection(appContext .getPackageName()); 275 BaseChildProcessConnection tabConnection = allocateConnection(appContext .getPackageName());
276 276
277 // Verify that one connection is allocated for an external APK and a reg ular tab 277 // Verify that one connection is allocated for an external APK and a reg ular tab
278 // respectively. 278 // respectively.
279 Assert.assertEquals(1, 279 Assert.assertEquals(1,
280 allocatedSandboxedConnectionsCountForTesting( 280 allocatedSandboxedConnectionsCountForTesting(
281 appContext, EXTERNAL_APK_PACKAGE_NAME)); 281 appContext, EXTERNAL_APK_PACKAGE_NAME));
282 Assert.assertEquals(1, allocatedChromeSandboxedConnectionsCount()); 282 Assert.assertEquals(1, allocatedChromeSandboxedConnectionsCount());
283 283
284 // Verify that connections allocated for an external APK and the regular tab are from 284 // Verify that connections allocated for an external APK and the regular tab are from
285 // different ChildConnectionAllocators, since both ChildConnectionAlloca tors start 285 // different ChildConnectionAllocators, since both ChildConnectionAlloca tors start
(...skipping 12 matching lines...) Expand all
298 @Feature({"ProcessManagement"}) 298 @Feature({"ProcessManagement"})
299 @ChildProcessAllocatorSettings( 299 @ChildProcessAllocatorSettings(
300 sandboxedServiceCount = 1, sandboxedServiceName = DEFAULT_SANDBOXED_ PROCESS_SERVICE) 300 sandboxedServiceCount = 1, sandboxedServiceName = DEFAULT_SANDBOXED_ PROCESS_SERVICE)
301 public void testExceedMaximumConnectionNumber() { 301 public void testExceedMaximumConnectionNumber() {
302 Context appContext = InstrumentationRegistry.getInstrumentation().getTar getContext(); 302 Context appContext = InstrumentationRegistry.getInstrumentation().getTar getContext();
303 Assert.assertEquals(0, 303 Assert.assertEquals(0,
304 allocatedSandboxedConnectionsCountForTesting( 304 allocatedSandboxedConnectionsCountForTesting(
305 appContext, EXTERNAL_APK_PACKAGE_NAME)); 305 appContext, EXTERNAL_APK_PACKAGE_NAME));
306 306
307 // Setup a connection for an external APK to reach the maximum allowed c onnection number. 307 // Setup a connection for an external APK to reach the maximum allowed c onnection number.
308 ChildProcessConnectionImpl externalApkConnection = 308 BaseChildProcessConnection externalApkConnection =
309 allocateConnection(EXTERNAL_APK_PACKAGE_NAME); 309 allocateConnection(EXTERNAL_APK_PACKAGE_NAME);
310 Assert.assertNotNull(externalApkConnection); 310 Assert.assertNotNull(externalApkConnection);
311 311
312 // Verify that there isn't any connection available for the external APK . 312 // Verify that there isn't any connection available for the external APK .
313 ChildProcessConnectionImpl exceedNumberExternalApkConnection = 313 BaseChildProcessConnection exceedNumberExternalApkConnection =
314 allocateConnection(EXTERNAL_APK_PACKAGE_NAME); 314 allocateConnection(EXTERNAL_APK_PACKAGE_NAME);
315 Assert.assertNull(exceedNumberExternalApkConnection); 315 Assert.assertNull(exceedNumberExternalApkConnection);
316 316
317 // Verify that we can still allocate connection for a regular tab. 317 // Verify that we can still allocate connection for a regular tab.
318 ChildProcessConnectionImpl tabConnection = allocateConnection(appContext .getPackageName()); 318 BaseChildProcessConnection tabConnection = allocateConnection(appContext .getPackageName());
319 Assert.assertNotNull(tabConnection); 319 Assert.assertNotNull(tabConnection);
320 } 320 }
321 321
322 /** 322 /**
323 * Tests binding to the same sandboxed service process from multiple process es in the 323 * Tests binding to the same sandboxed service process from multiple process es in the
324 * same package. This uses the ChildProcessLauncherTestHelperService declare d in 324 * same package. This uses the ChildProcessLauncherTestHelperService declare d in
325 * ContentShell.apk as a separate android:process to bind the first (slot 0) service. The 325 * ContentShell.apk as a separate android:process to bind the first (slot 0) service. The
326 * instrumentation test then tries to bind the same slot, which fails, so th e 326 * instrumentation test then tries to bind the same slot, which fails, so th e
327 * ChildProcessLauncher retries on a new connection. 327 * ChildProcessLauncher retries on a new connection.
328 */ 328 */
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 "Connection slot from helper service is not 0", 0, replyHandler. mMessage.arg2); 398 "Connection slot from helper service is not 0", 0, replyHandler. mMessage.arg2);
399 399
400 final int helperConnPid = replyHandler.mMessage.arg1; 400 final int helperConnPid = replyHandler.mMessage.arg1;
401 Assert.assertTrue(helperConnPid > 0); 401 Assert.assertTrue(helperConnPid > 0);
402 402
403 // Launch a service from this process. Since slot 0 is already bound by the Helper, it 403 // Launch a service from this process. Since slot 0 is already bound by the Helper, it
404 // will fail to start and the ChildProcessLauncher will retry. 404 // will fail to start and the ChildProcessLauncher will retry.
405 final ChildProcessCreationParams creationParams = new ChildProcessCreati onParams( 405 final ChildProcessCreationParams creationParams = new ChildProcessCreati onParams(
406 context.getPackageName(), false /* isExternalService */, 406 context.getPackageName(), false /* isExternalService */,
407 LibraryProcessType.PROCESS_CHILD, true /* bindToCallerCheck */); 407 LibraryProcessType.PROCESS_CHILD, true /* bindToCallerCheck */);
408 final ChildProcessConnection conn = 408 final BaseChildProcessConnection conn =
409 ChildProcessLauncherTestHelperService.startInternalForTesting( 409 ChildProcessLauncherTestHelperService.startInternalForTesting(
410 context, sProcessWaitArguments, new FileDescriptorInfo[0 ], creationParams); 410 context, sProcessWaitArguments, new FileDescriptorInfo[0 ], creationParams);
411 411
412 CriteriaHelper.pollInstrumentationThread( 412 CriteriaHelper.pollInstrumentationThread(
413 new Criteria("Failed waiting for instrumentation-bound service") { 413 new Criteria("Failed waiting for instrumentation-bound service") {
414 @Override 414 @Override
415 public boolean isSatisfied() { 415 public boolean isSatisfied() {
416 return conn.getService() != null; 416 return conn.getService() != null;
417 } 417 }
418 }); 418 });
419 419
420 Assert.assertEquals(0, conn.getServiceNumber()); 420 Assert.assertEquals(0, conn.getServiceNumber());
421 421
422 final ChildProcessConnection[] sandboxedConnections = 422 final BaseChildProcessConnection[] sandboxedConnections =
423 getSandboxedConnectionArrayForTesting(context, context.getPackag eName()); 423 getSandboxedConnectionArrayForTesting(context, context.getPackag eName());
424 424
425 // Wait for the retry to succeed. 425 // Wait for the retry to succeed.
426 CriteriaHelper.pollInstrumentationThread( 426 CriteriaHelper.pollInstrumentationThread(
427 new Criteria("Failed waiting for both child process services") { 427 new Criteria("Failed waiting for both child process services") {
428 @Override 428 @Override
429 public boolean isSatisfied() { 429 public boolean isSatisfied() {
430 boolean allChildrenConnected = true; 430 boolean allChildrenConnected = true;
431 for (int i = 0; i <= 1; ++i) { 431 for (int i = 0; i <= 1; ++i) {
432 ChildProcessConnection conn = sandboxedConnections[i ]; 432 BaseChildProcessConnection conn = sandboxedConnectio ns[i];
433 allChildrenConnected &= conn != null && conn.getServ ice() != null; 433 allChildrenConnected &= conn != null && conn.getServ ice() != null;
434 } 434 }
435 return allChildrenConnected; 435 return allChildrenConnected;
436 } 436 }
437 }); 437 });
438 438
439 // Check that only two connections are created. 439 // Check that only two connections are created.
440 for (int i = 0; i < sandboxedConnections.length; ++i) { 440 for (int i = 0; i < sandboxedConnections.length; ++i) {
441 ChildProcessConnection sandboxedConn = sandboxedConnections[i]; 441 BaseChildProcessConnection sandboxedConn = sandboxedConnections[i];
442 if (i <= 1) { 442 if (i <= 1) {
443 Assert.assertNotNull(sandboxedConn); 443 Assert.assertNotNull(sandboxedConn);
444 Assert.assertNotNull(sandboxedConn.getService()); 444 Assert.assertNotNull(sandboxedConn.getService());
445 } else { 445 } else {
446 Assert.assertNull(sandboxedConn); 446 Assert.assertNull(sandboxedConn);
447 } 447 }
448 } 448 }
449 449
450 Assert.assertTrue(conn == sandboxedConnections[0]); 450 Assert.assertTrue(conn == sandboxedConnections[0]);
451 final ChildProcessConnection retryConn = sandboxedConnections[1]; 451 final BaseChildProcessConnection retryConn = sandboxedConnections[1];
452 452
453 Assert.assertFalse(conn == retryConn); 453 Assert.assertFalse(conn == retryConn);
454 454
455 Assert.assertEquals(0, conn.getServiceNumber()); 455 Assert.assertEquals(0, conn.getServiceNumber());
456 Assert.assertEquals(0, conn.getPid()); 456 Assert.assertEquals(0, conn.getPid());
457 Assert.assertFalse(conn.getService().bindToCaller()); 457 Assert.assertFalse(conn.getService().bindToCaller());
458 458
459 Assert.assertEquals(1, retryConn.getServiceNumber()); 459 Assert.assertEquals(1, retryConn.getServiceNumber());
460 CriteriaHelper.pollInstrumentationThread( 460 CriteriaHelper.pollInstrumentationThread(
461 new Criteria("Failed waiting retry connection to get pid") { 461 new Criteria("Failed waiting retry connection to get pid") {
(...skipping 19 matching lines...) Expand all
481 @MediumTest 481 @MediumTest
482 @Feature({"ProcessManagement"}) 482 @Feature({"ProcessManagement"})
483 public void testWarmUp() { 483 public void testWarmUp() {
484 final Context context = InstrumentationRegistry.getInstrumentation().get TargetContext(); 484 final Context context = InstrumentationRegistry.getInstrumentation().get TargetContext();
485 warmUpOnUiThreadBlocking(context); 485 warmUpOnUiThreadBlocking(context);
486 ChildProcessLauncherTestHelperService.runOnLauncherThreadBlocking(new Ru nnable() { 486 ChildProcessLauncherTestHelperService.runOnLauncherThreadBlocking(new Ru nnable() {
487 @Override 487 @Override
488 public void run() { 488 public void run() {
489 Assert.assertEquals(1, allocatedChromeSandboxedConnectionsCount( )); 489 Assert.assertEquals(1, allocatedChromeSandboxedConnectionsCount( ));
490 490
491 final ChildProcessConnection conn = 491 final BaseChildProcessConnection conn =
492 ChildProcessLauncherTestHelperService.startInternalForTe sting( 492 ChildProcessLauncherTestHelperService.startInternalForTe sting(
493 context, new String[0], new FileDescriptorInfo[0 ], null); 493 context, new String[0], new FileDescriptorInfo[0 ], null);
494 Assert.assertEquals( 494 Assert.assertEquals(
495 1, allocatedChromeSandboxedConnectionsCount()); // Used warmup connection. 495 1, allocatedChromeSandboxedConnectionsCount()); // Used warmup connection.
496 496
497 ChildProcessLauncher.stop(conn.getPid()); 497 ChildProcessLauncher.stop(conn.getPid());
498 } 498 }
499 }); 499 });
500 } 500 }
501 501
(...skipping 21 matching lines...) Expand all
523 523
524 startRendererProcess( 524 startRendererProcess(
525 context, ChildProcessCreationParams.DEFAULT_ID, new File DescriptorInfo[0]); 525 context, ChildProcessCreationParams.DEFAULT_ID, new File DescriptorInfo[0]);
526 Assert.assertEquals(2, allocatedChromeSandboxedConnectionsCount( )); // Warmup used. 526 Assert.assertEquals(2, allocatedChromeSandboxedConnectionsCount( )); // Warmup used.
527 527
528 ChildProcessCreationParams.unregister(paramId); 528 ChildProcessCreationParams.unregister(paramId);
529 } 529 }
530 }); 530 });
531 } 531 }
532 532
533 private ChildProcessConnectionImpl startConnection() { 533 private BaseChildProcessConnection startConnection() {
534 // Allocate a new connection. 534 // Allocate a new connection.
535 Context context = InstrumentationRegistry.getInstrumentation().getTarget Context(); 535 Context context = InstrumentationRegistry.getInstrumentation().getTarget Context();
536 final ChildProcessConnectionImpl connection = 536 final BaseChildProcessConnection connection = allocateBoundConnectionFor Testing(
537 (ChildProcessConnectionImpl) allocateBoundConnectionForTesting( 537 context, getDefaultChildProcessCreationParams(context.getPackage Name()));
538 context, getDefaultChildProcessCreationParams(context.ge tPackageName()));
539 538
540 // Wait for the service to connect. 539 // Wait for the service to connect.
541 CriteriaHelper.pollInstrumentationThread( 540 CriteriaHelper.pollInstrumentationThread(
542 new Criteria("The connection wasn't established.") { 541 new Criteria("The connection wasn't established.") {
543 @Override 542 @Override
544 public boolean isSatisfied() { 543 public boolean isSatisfied() {
545 return connection.isConnected(); 544 return connection.isConnected();
546 } 545 }
547 }); 546 });
548 return connection; 547 return connection;
549 } 548 }
550 549
551 private static void startRendererProcess( 550 private static void startRendererProcess(
552 Context context, int paramId, FileDescriptorInfo[] filesToMap) { 551 Context context, int paramId, FileDescriptorInfo[] filesToMap) {
553 assert LauncherThread.runningOnLauncherThread(); 552 assert LauncherThread.runningOnLauncherThread();
554 ChildProcessLauncher.start(context, paramId, 553 ChildProcessLauncher.start(context, paramId,
555 new String[] {"--" + ContentSwitches.SWITCH_PROCESS_TYPE + "=" 554 new String[] {"--" + ContentSwitches.SWITCH_PROCESS_TYPE + "="
556 + ContentSwitches.SWITCH_RENDERER_PROCESS}, 555 + ContentSwitches.SWITCH_RENDERER_PROCESS},
557 0 /* childProcessId */, filesToMap, null /* launchCallback */); 556 0 /* childProcessId */, filesToMap, null /* launchCallback */);
558 } 557 }
559 558
560 private static ChildProcessConnection allocateBoundConnectionForTesting( 559 private static BaseChildProcessConnection allocateBoundConnectionForTesting(
561 final Context context, final ChildProcessCreationParams creationPara ms) { 560 final Context context, final ChildProcessCreationParams creationPara ms) {
562 return ChildProcessLauncherTestHelperService.runOnLauncherAndGetResult( 561 return ChildProcessLauncherTestHelperService.runOnLauncherAndGetResult(
563 new Callable<ChildProcessConnection>() { 562 new Callable<BaseChildProcessConnection>() {
564 @Override 563 @Override
565 public ChildProcessConnection call() { 564 public BaseChildProcessConnection call() {
566 return ChildProcessLauncher.allocateBoundConnection( 565 return ChildProcessLauncher.allocateBoundConnection(
567 new ChildSpawnData(context, null /* commandLine */, 566 new ChildSpawnData(context, null /* commandLine */,
568 0 /* childProcessId */, null /* filesToB eMapped */, 567 0 /* childProcessId */, null /* filesToB eMapped */,
569 null /* LaunchCallback */, null /* child ProcessCallback */, 568 null /* LaunchCallback */, null /* child ProcessCallback */,
570 true /* inSandbox */, false /* alwaysInF oreground */, 569 true /* inSandbox */, false /* alwaysInF oreground */,
571 creationParams), 570 creationParams),
572 null /* startCallback */, false /* forWarmUp */) ; 571 null /* startCallback */, false /* forWarmUp */) ;
573 } 572 }
574 }); 573 });
575 } 574 }
576 575
577 /** 576 /**
578 * Returns a new connection if it is allocated. Note this function only allo cates a connection 577 * Returns a new connection if it is allocated. Note this function only allo cates a connection
579 * but doesn't really start the connection to bind a service. It is for test ing whether the 578 * but doesn't really start the connection to bind a service. It is for test ing whether the
580 * connection is allocated properly for different application packages. 579 * connection is allocated properly for different application packages.
581 */ 580 */
582 private ChildProcessConnectionImpl allocateConnection(final String packageNa me) { 581 private BaseChildProcessConnection allocateConnection(final String packageNa me) {
583 return ChildProcessLauncherTestHelperService.runOnLauncherAndGetResult( 582 return ChildProcessLauncherTestHelperService.runOnLauncherAndGetResult(
584 new Callable<ChildProcessConnectionImpl>() { 583 new Callable<BaseChildProcessConnection>() {
585 @Override 584 @Override
586 public ChildProcessConnectionImpl call() { 585 public BaseChildProcessConnection call() {
587 // Allocate a new connection. 586 // Allocate a new connection.
588 Context context = InstrumentationRegistry.getTargetConte xt(); 587 Context context = InstrumentationRegistry.getTargetConte xt();
589 ChildProcessCreationParams creationParams = 588 ChildProcessCreationParams creationParams =
590 getDefaultChildProcessCreationParams(packageName ); 589 getDefaultChildProcessCreationParams(packageName );
591 return (ChildProcessConnectionImpl) ChildProcessLauncher .allocateConnection( 590 return ChildProcessLauncher.allocateConnection(
592 new ChildSpawnData(context, null /* commandLine */, 591 new ChildSpawnData(context, null /* commandLine */,
593 0 /* childProcessId */, null /* filesToB eMapped */, 592 0 /* childProcessId */, null /* filesToB eMapped */,
594 null /* launchCallback */, null /* child ProcessCallback */, 593 null /* launchCallback */, null /* child ProcessCallback */,
595 true /* inSandbox */, false /* alwaysInF oreground */, 594 true /* inSandbox */, false /* alwaysInF oreground */,
596 creationParams), 595 creationParams),
597 ChildProcessLauncher.createCommonParamsBundle(cr eationParams), 596 ChildProcessLauncher.createCommonParamsBundle(cr eationParams),
598 false /* forWarmUp */); 597 false /* forWarmUp */);
599 } 598 }
600 }); 599 });
601 } 600 }
(...skipping 22 matching lines...) Expand all
624 new Callable<Integer>() { 623 new Callable<Integer>() {
625 @Override 624 @Override
626 public Integer call() { 625 public Integer call() {
627 return ChildConnectionAllocator 626 return ChildConnectionAllocator
628 .getAllocator(context, packageName, true /*isSan dboxed */) 627 .getAllocator(context, packageName, true /*isSan dboxed */)
629 .allocatedConnectionsCountForTesting(); 628 .allocatedConnectionsCountForTesting();
630 } 629 }
631 }); 630 });
632 } 631 }
633 632
634 private static ChildProcessConnection[] getSandboxedConnectionArrayForTestin g( 633 private static BaseChildProcessConnection[] getSandboxedConnectionArrayForTe sting(
635 final Context context, final String packageName) { 634 final Context context, final String packageName) {
636 return ChildProcessLauncherTestHelperService.runOnLauncherAndGetResult( 635 return ChildProcessLauncherTestHelperService.runOnLauncherAndGetResult(
637 new Callable<ChildProcessConnection[]>() { 636 new Callable<BaseChildProcessConnection[]>() {
638 @Override 637 @Override
639 public ChildProcessConnection[] call() { 638 public BaseChildProcessConnection[] call() {
640 return ChildConnectionAllocator 639 return ChildConnectionAllocator
641 .getAllocator(context, packageName, true /*isSan dboxed */) 640 .getAllocator(context, packageName, true /*isSan dboxed */)
642 .connectionArrayForTesting(); 641 .connectionArrayForTesting();
643 } 642 }
644 }); 643 });
645 } 644 }
646 645
647 private static int pendingSpawnsCountForTesting( 646 private static int pendingSpawnsCountForTesting(
648 final Context context, final String packageName, final boolean inSan dbox) { 647 final Context context, final String packageName, final boolean inSan dbox) {
649 return ChildProcessLauncherTestHelperService.runOnLauncherAndGetResult( 648 return ChildProcessLauncherTestHelperService.runOnLauncherAndGetResult(
(...skipping 13 matching lines...) Expand all
663 private int allocatedChromeSandboxedConnectionsCount() { 662 private int allocatedChromeSandboxedConnectionsCount() {
664 Context context = InstrumentationRegistry.getInstrumentation().getTarget Context(); 663 Context context = InstrumentationRegistry.getInstrumentation().getTarget Context();
665 return allocatedSandboxedConnectionsCountForTesting(context, context.get PackageName()); 664 return allocatedSandboxedConnectionsCountForTesting(context, context.get PackageName());
666 } 665 }
667 666
668 private ChildProcessCreationParams getDefaultChildProcessCreationParams(Stri ng packageName) { 667 private ChildProcessCreationParams getDefaultChildProcessCreationParams(Stri ng packageName) {
669 return new ChildProcessCreationParams(packageName, false /* isExternalSe rvice */, 668 return new ChildProcessCreationParams(packageName, false /* isExternalSe rvice */,
670 LibraryProcessType.PROCESS_CHILD, false /* bindToCallerCheck */) ; 669 LibraryProcessType.PROCESS_CHILD, false /* bindToCallerCheck */) ;
671 } 670 }
672 671
673 private void triggerConnectionSetup(final ChildProcessConnectionImpl connect ion) { 672 private void triggerConnectionSetup(final BaseChildProcessConnection connect ion) {
674 ChildProcessLauncherTestHelperService.runOnLauncherThreadBlocking(new Ru nnable() { 673 ChildProcessLauncherTestHelperService.runOnLauncherThreadBlocking(new Ru nnable() {
675 @Override 674 @Override
676 public void run() { 675 public void run() {
677 ChildProcessLauncher.triggerConnectionSetup(connection, sProcess WaitArguments, 676 ChildProcessLauncher.triggerConnectionSetup(connection, sProcess WaitArguments,
678 1 /* childProcessId */, new FileDescriptorInfo[0], 677 1 /* childProcessId */, new FileDescriptorInfo[0],
679 null /* launchCallback */, null /* childProcessCallback */); 678 null /* launchCallback */, null /* childProcessCallback */);
680 } 679 }
681 }); 680 });
682 } 681 }
683 } 682 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698