chromium/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/settings/TimedCallbackDelayer.java

// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.chrome.browser.password_manager.settings;

import android.os.Handler;

/** An implementation of {@link CallbackDelayer} which runs callbacks after a fixed time delay. */
public final class TimedCallbackDelayer implements CallbackDelayer {
    /** The {@link Handler} used to delay the callbacks. */
    private final Handler mHandler = new Handler();

    /** How long to delay callbacks, in milliseconds. */
    private final long mDelayMillis;

    /**
     * Constructs a delayer which posts callbacks with a fixed time delay.
     * @param delayMillis The common delay of the callbacks, in milliseconds.
     */
    public TimedCallbackDelayer(long delayMillis) {
        assert delayMillis >= 0;
        mDelayMillis = delayMillis;
    }

    @Override
    public void delay(Runnable callback) {
        mHandler.postDelayed(callback, mDelayMillis);
    }
}