chromium/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/AsyncFeedbackSource.java

// Copyright 2017 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.feedback;

/**
 * Used by various components to provide a set of feedback data that can be gathered asynchronously.
 * Note that if the owner times out, {@link #getFeedback()} might be called even if
 * this source isn't ready.  At that point this source should do it's best to provide what data it
 * can.
 */
public interface AsyncFeedbackSource extends FeedbackSource {
    /**
     * Starts the feedback collection process for this source.  This source should notify
     * {@code callback} when the collection is finished.
     * @param callback The callback to notify when the collection is finished.
     */
    void start(Runnable callback);

    /**
     * @return Whether or not this source is ready to provide feedback.
     */
    boolean isReady();
}