public interface

ControlledLooper

 androidx.test.internal.platform.os.ControlledLooper

Gradle dependencies

compile group: 'androidx.test', name: 'orchestrator', version: '1.5.0'

  • groupId: androidx.test
  • artifactId: orchestrator
  • version: 1.5.0

Artifact androidx.test:orchestrator:1.5.0 it located at Google repository (https://maven.google.com/)

Androidx artifact mapping:

androidx.test:orchestrator com.android.support.test:orchestrator

Overview

An API for advancing the looper when its in a paused or controlled state.

Implementations should be loaded via ServiceLoaderWrapper

Summary

Fields
public static final ControlledLooperNO_OP_CONTROLLED_LOOPER

Methods
public booleanareDrawCallbacksSupported()

Returns true if registerFrameCommitCallback() and addOnDrawListener callbacks are supported

public voiddrainMainThreadUntilIdle()

Executes all queued main looper tasks until its idle.

public voidsimulateWindowFocus(View decorView)

Generate window focus event for given view.

Fields

public static final ControlledLooper NO_OP_CONTROLLED_LOOPER

Methods

public void drainMainThreadUntilIdle()

Executes all queued main looper tasks until its idle.

Intended to be used in unit test environments where main thread looper is in a paused state.

public void simulateWindowFocus(View decorView)

Generate window focus event for given view.

public boolean areDrawCallbacksSupported()

Returns true if registerFrameCommitCallback() and addOnDrawListener callbacks are supported

Source

/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package androidx.test.internal.platform.os;

import android.view.View;
import androidx.annotation.RestrictTo;

/**
 * An API for advancing the looper when its in a paused or controlled state.
 *
 * <p>Implementations should be loaded via {@link
 * androidx.test.internal.platform.ServiceLoaderWrapper}
 *
 * @hide
 */
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP) // used by core and espresso
public interface ControlledLooper {

  /**
   * Executes all queued main looper tasks until its idle.
   *
   * <p>Intended to be used in unit test environments where main thread looper is in a paused state.
   */
  void drainMainThreadUntilIdle();

  /** Generate window focus event for given view. */
  void simulateWindowFocus(View decorView);

  /** Returns true if registerFrameCommitCallback() and addOnDrawListener callbacks are supported */
  default boolean areDrawCallbacksSupported() {
    return false;
  }

  public static final ControlledLooper NO_OP_CONTROLLED_LOOPER =
      new ControlledLooper() {
        @Override
        public void drainMainThreadUntilIdle() {}

        @Override
        public void simulateWindowFocus(View decorView) {}

        @Override
        public boolean areDrawCallbacksSupported() {
          return true;
        }
      };
}