1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
// 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.
#ifndef CHROME_BROWSER_UI_WEBUI_SIDE_PANEL_READ_ANYTHING_READ_ANYTHING_SCREENSHOTTER_H_
#define CHROME_BROWSER_UI_WEBUI_SIDE_PANEL_READ_ANYTHING_READ_ANYTHING_SCREENSHOTTER_H_
#include <memory>
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "components/paint_preview/browser/paint_preview_base_service.h"
#include "components/paint_preview/public/paint_preview_compositor_service.h"
#include "content/public/browser/web_contents.h"
// A class that helps Reading Mode (i.e. ReadAnything) to capture a full-page
// screenshot of an active WebContents. This screenshot functionality will be
// enabled only by a command-line switch and should not be used for user-facing
// features.
class ReadAnythingScreenshotter
: public paint_preview::PaintPreviewBaseService {
public:
ReadAnythingScreenshotter();
ReadAnythingScreenshotter(const ReadAnythingScreenshotter&) = delete;
ReadAnythingScreenshotter& operator=(const ReadAnythingScreenshotter&) =
delete;
~ReadAnythingScreenshotter() override;
void RequestScreenshot(const raw_ptr<content::WebContents> web_contents);
private:
void OnScreenshotCaptured(
paint_preview::PaintPreviewBaseService::CaptureStatus status,
std::unique_ptr<paint_preview::CaptureResult> result);
void OnCompositorServiceDisconnected();
paint_preview::mojom::PaintPreviewBeginCompositeRequestPtr
PrepareCompositeRequest(
std::unique_ptr<paint_preview::CaptureResult> capture_result);
void SendCompositeRequest(
paint_preview::mojom::PaintPreviewBeginCompositeRequestPtr
begin_composite_request);
void RequestBitmapForMainFrame();
void OnCompositeFinished(
paint_preview::mojom::PaintPreviewCompositor::BeginCompositeStatus status,
paint_preview::mojom::PaintPreviewBeginCompositeResponsePtr response);
void OnBitmapReceived(
paint_preview::mojom::PaintPreviewCompositor::BitmapStatus status,
const SkBitmap& bitmap);
std::unique_ptr<paint_preview::PaintPreviewCompositorService,
base::OnTaskRunnerDeleter>
paint_preview_compositor_service_;
std::unique_ptr<paint_preview::PaintPreviewCompositorClient,
base::OnTaskRunnerDeleter>
paint_preview_compositor_client_;
base::WeakPtrFactory<ReadAnythingScreenshotter> weak_ptr_factory_{this};
};
#endif // CHROME_BROWSER_UI_WEBUI_SIDE_PANEL_READ_ANYTHING_READ_ANYTHING_SCREENSHOTTER_H_
|