#include "ui/compositor/test/in_process_context_factory.h"
#include <limits>
#include <utility>
#include "base/command_line.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/functional/callback_helpers.h"
#include "base/memory/ptr_util.h"
#include "base/memory/raw_ptr.h"
#include "base/threading/thread.h"
#include "base/time/time.h"
#include "build/build_config.h"
#include "cc/base/switches.h"
#include "cc/trees/raster_context_provider_wrapper.h"
#include "components/viz/common/features.h"
#include "components/viz/common/frame_sinks/begin_frame_args.h"
#include "components/viz/common/frame_sinks/begin_frame_source.h"
#include "components/viz/common/frame_sinks/delay_based_time_source.h"
#include "components/viz/common/gpu/context_provider.h"
#include "components/viz/common/surfaces/parent_local_surface_id_allocator.h"
#include "components/viz/host/host_frame_sink_manager.h"
#include "components/viz/service/display/display.h"
#include "components/viz/service/display/display_scheduler.h"
#include "components/viz/service/display/output_surface_client.h"
#include "components/viz/service/display/output_surface_frame.h"
#include "components/viz/service/display/overlay_processor_stub.h"
#include "components/viz/service/display_embedder/skia_output_surface_dependency_impl.h"
#include "components/viz/service/display_embedder/skia_output_surface_impl.h"
#include "components/viz/service/frame_sinks/frame_sink_manager_impl.h"
#include "components/viz/service/gl/gpu_service_impl.h"
#include "components/viz/test/test_gpu_service_holder.h"
#include "components/viz/test/test_in_process_context_provider.h"
#include "gpu/command_buffer/client/context_support.h"
#include "gpu/command_buffer/client/gles2_interface.h"
#include "gpu/command_buffer/client/raster_interface.h"
#include "gpu/command_buffer/common/context_creation_attribs.h"
#include "services/viz/privileged/mojom/compositing/display_private.mojom.h"
#include "ui/compositor/compositor_switches.h"
#include "ui/compositor/layer.h"
#include "ui/compositor/test/direct_layer_tree_frame_sink.h"
#include "ui/display/display_switches.h"
#include "ui/display/types/display_constants.h"
#include "ui/gfx/buffer_format_util.h"
#include "ui/gfx/geometry/skia_conversions.h"
#include "ui/gfx/presentation_feedback.h"
#include "ui/gfx/switches.h"
#include "ui/gl/gl_implementation.h"
#include "ui/gl/test/gl_surface_test_support.h"
#if BUILDFLAG(IS_MAC)
#include "ui/accelerated_widget_mac/ca_transaction_observer.h"
#endif
namespace ui {
namespace {
constexpr uint32_t kDefaultClientId = …;
}
class InProcessContextFactory::PerCompositorData
: public viz::mojom::DisplayPrivate { … };
InProcessContextFactory::InProcessContextFactory(
viz::HostFrameSinkManager* host_frame_sink_manager,
viz::FrameSinkManagerImpl* frame_sink_manager,
bool output_to_window)
: … { … }
InProcessContextFactory::~InProcessContextFactory() { … }
void InProcessContextFactory::SetRefreshRateForTests(double refresh_rate) { … }
void InProcessContextFactory::CreateLayerTreeFrameSink(
base::WeakPtr<Compositor> compositor) { … }
scoped_refptr<viz::RasterContextProvider>
InProcessContextFactory::SharedMainThreadRasterContextProvider() { … }
void InProcessContextFactory::RemoveCompositor(Compositor* compositor) { … }
gpu::GpuMemoryBufferManager*
InProcessContextFactory::GetGpuMemoryBufferManager() { … }
cc::TaskGraphRunner* InProcessContextFactory::GetTaskGraphRunner() { … }
viz::FrameSinkId InProcessContextFactory::AllocateFrameSinkId() { … }
viz::SubtreeCaptureId InProcessContextFactory::AllocateSubtreeCaptureId() { … }
viz::HostFrameSinkManager* InProcessContextFactory::GetHostFrameSinkManager() { … }
SkM44 InProcessContextFactory::GetOutputColorMatrix(
Compositor* compositor) const { … }
gfx::DisplayColorSpaces InProcessContextFactory::GetDisplayColorSpaces(
Compositor* compositor) const { … }
base::TimeTicks InProcessContextFactory::GetDisplayVSyncTimeBase(
Compositor* compositor) const { … }
base::TimeDelta InProcessContextFactory::GetDisplayVSyncTimeInterval(
Compositor* compositor) const { … }
std::optional<base::TimeDelta> InProcessContextFactory::GetMaxVSyncInterval(
Compositor* compositor) const { … }
display::VariableRefreshRateState InProcessContextFactory::GetVrrState(
Compositor* compositor) const { … }
void InProcessContextFactory::ResetDisplayOutputParameters(
Compositor* compositor) { … }
InProcessContextFactory::PerCompositorData*
InProcessContextFactory::CreatePerCompositorData(Compositor* compositor) { … }
}