1 // Copyright 2023 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.base.test.transit; 6 7 import org.chromium.base.test.util.CallbackHelper; 8 9 /** A {@link Condition} that checks if a single callback was received. */ 10 public class CallbackCondition extends Condition { 11 private final CallbackHelper mCallbackHelper; 12 private final String mDescription; 13 private int mStartingCount; 14 15 /** 16 * Use {@link #instrumentationThread(CallbackHelper, String) or {@link #uiThread(CallbackHelper, String)} 17 * 18 * @param callbackHelper the {@link CallbackHelper} to wait for. 19 * @param description the user-visible name for the Condition. 20 */ CallbackCondition( boolean runOnUiThread, CallbackHelper callbackHelper, String description)21 private CallbackCondition( 22 boolean runOnUiThread, CallbackHelper callbackHelper, String description) { 23 super(runOnUiThread); 24 mCallbackHelper = callbackHelper; 25 mDescription = description; 26 } 27 instrumentationThread( CallbackHelper callbackHelper, String description)28 public static CallbackCondition instrumentationThread( 29 CallbackHelper callbackHelper, String description) { 30 return new CallbackCondition(/* runOnUiThread= */ false, callbackHelper, description); 31 } 32 uiThread(CallbackHelper callbackHelper, String description)33 public static CallbackCondition uiThread(CallbackHelper callbackHelper, String description) { 34 return new CallbackCondition(/* runOnUiThread= */ true, callbackHelper, description); 35 } 36 37 @Override buildDescription()38 public String buildDescription() { 39 return mDescription; 40 } 41 42 @Override onStartMonitoring()43 public void onStartMonitoring() { 44 mStartingCount = mCallbackHelper.getCallCount(); 45 } 46 47 @Override check()48 public boolean check() { 49 return mCallbackHelper.getCallCount() > mStartingCount; 50 } 51 } 52