#include "content/browser/renderer_host/navigation_transitions/navigation_entry_screenshot.h"
#include "content/browser/renderer_host/navigation_transitions/navigation_entry_screenshot_cache.h"
#include "content/browser/renderer_host/navigation_transitions/navigation_transition_config.h"
#if BUILDFLAG(IS_ANDROID)
#include "base/functional/callback.h"
#include "base/task/bind_post_task.h"
#include "base/task/thread_pool.h"
#include "ui/android/resources/ui_resource_provider.h"
#endif
namespace content {
#if BUILDFLAG(IS_ANDROID)
namespace {
BASE_FEATURE(kNavigationEntryScreenshotCompression,
"NavigationEntryScreenshotCompression",
base::FEATURE_ENABLED_BY_DEFAULT);
static bool g_disable_compression_for_testing = false;
using CompressionDoneCallback = base::OnceCallback<void(sk_sp<SkPixelRef>)>;
void CompressNavigationScreenshotOnWorkerThread(
SkBitmap bitmap,
bool supports_etc_non_power_of_two,
CompressionDoneCallback done_callback) {
TRACE_EVENT0("navigation", "CompressNavigationScreenshotOnWorkerThread");
if (auto compressed_bitmap = ui::UIResourceProvider::CompressBitmap(
bitmap, supports_etc_non_power_of_two)) {
std::move(done_callback).Run(std::move(compressed_bitmap));
}
}
}
#endif
const void* const NavigationEntryScreenshot::kUserDataKey = …;
void NavigationEntryScreenshot::SetDisableCompressionForTesting(bool disable) { … }
NavigationEntryScreenshot::NavigationEntryScreenshot(
const SkBitmap& bitmap,
int navigation_entry_id,
bool supports_etc_non_power_of_two)
: … { … }
NavigationEntryScreenshot::~NavigationEntryScreenshot() { … }
cc::UIResourceBitmap NavigationEntryScreenshot::GetBitmap(cc::UIResourceId uid,
bool resource_lost) { … }
size_t NavigationEntryScreenshot::SetCache(
NavigationEntryScreenshotCache* cache) { … }
SkBitmap NavigationEntryScreenshot::GetBitmapForTesting() const { … }
size_t NavigationEntryScreenshot::CompressedSizeForTesting() const { … }
void NavigationEntryScreenshot::StartCompression(
const SkBitmap& bitmap,
bool supports_etc_non_power_of_two) { … }
void NavigationEntryScreenshot::OnCompressionFinished(
sk_sp<SkPixelRef> compressed_bitmap) { … }
const cc::UIResourceBitmap& NavigationEntryScreenshot::GetBitmap() const { … }
}