blob: c453bd034f972b20ab0bc0957582ad2596b9e2d3 [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef GPU_IPC_COMMON_IOS_BE_LAYER_HIERARCHY_TRANSPORT_H_
#define GPU_IPC_COMMON_IOS_BE_LAYER_HIERARCHY_TRANSPORT_H_
#include <xpc/xpc.h>
#include "gpu/ipc/common/gpu_ipc_common_export.h"
#include "gpu/ipc/common/surface_handle.h"
namespace gpu {
// Allows the BELayerHierarchy to be transported from the GPU process
// to the browser process. Since BELayerHierarchy is only serializable
// over XPC (and not mojo) it needs a hook into the XPC IPC channel.
class GPU_IPC_COMMON_EXPORT BELayerHierarchyTransport {
public:
static BELayerHierarchyTransport* GetInstance();
static void SetInstance(BELayerHierarchyTransport* instance);
// Sends the BELayerHierarchy represented as an xpc_object_t that
// is associated with `surface_handle` to the browser process.
virtual void ForwardBELayerHierarchyToBrowser(
SurfaceHandle surface_handle,
xpc_object_t ipc_representation) = 0;
protected:
virtual ~BELayerHierarchyTransport() {}
};
} // namespace gpu
#endif // GPU_IPC_COMMON_IOS_BE_LAYER_HIERARCHY_TRANSPORT_H_