blob: 326cec04c9491ea0e45b71ede3d6735002ac425c [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_IMAGE_SERVICE_IMAGE_SERVICE_HANDLER_H_
#define COMPONENTS_IMAGE_SERVICE_IMAGE_SERVICE_HANDLER_H_
#include "base/memory/weak_ptr.h"
#include "components/image_service/mojom/image_service.mojom.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver.h"
namespace image_service {
class ImageService;
// Handles ImageService related communication between C++ and WebUI in the
// renderer.
class ImageServiceHandler : public mojom::ImageServiceHandler {
public:
ImageServiceHandler(
mojo::PendingReceiver<mojom::ImageServiceHandler> pending_page_handler,
base::WeakPtr<image_service::ImageService> image_service);
ImageServiceHandler(const ImageServiceHandler&) = delete;
ImageServiceHandler& operator=(const ImageServiceHandler&) = delete;
~ImageServiceHandler() override;
// ::mojom::ImageServiceHandler:
void GetPageImageUrl(mojom::ClientId client_id,
const GURL& page_url,
mojom::OptionsPtr options,
GetPageImageUrlCallback callback) override;
private:
// Callback for `GetImageServiceUrl()`.
void OnGotImageServiceResult(GetPageImageUrlCallback callback,
const GURL& image_url);
mojo::Receiver<mojom::ImageServiceHandler> page_handler_;
const base::WeakPtr<image_service::ImageService> image_service_;
// Used to scope callbacks to the lifetime of the handler.
base::WeakPtrFactory<ImageServiceHandler> weak_factory_{this};
};
} // namespace image_service
#endif // CHROME_BROWSER_COMPONENTS_IMAGE_SERVICE_IMAGE_SERVICE_HANDLER_H_