chromium/chrome/browser/tab_ui/android/java/src/org/chromium/chrome/browser/tab_ui/TabContentManagerThumbnailProvider.java

// Copyright 2024 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.tab_ui;

import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.Size;

import org.chromium.base.Callback;

/** {@link ThumbnailProvider} adapter for {@link TabContentManager}. */
public class TabContentManagerThumbnailProvider implements ThumbnailProvider {
    private final TabContentManager mTabContentManager;

    /**
     * @param tabContentManager The {@link TabContentManager} to use.
     */
    public TabContentManagerThumbnailProvider(TabContentManager tabContentManager) {
        mTabContentManager = tabContentManager;
    }

    @Override
    public void getTabThumbnailWithCallback(
            int tabId, Size thumbnailSize, boolean isSelected, Callback<Drawable> callback) {

        mTabContentManager.getTabThumbnailWithCallback(
                tabId, thumbnailSize, adaptCallback(callback));
    }

    private static Callback<Bitmap> adaptCallback(Callback<Drawable> callback) {
        return (Bitmap bitmap) -> {
            Drawable drawable = null;
            if (bitmap != null) {
                drawable = new BitmapDrawable(bitmap);
            }
            callback.onResult(drawable);
        };
    }
}