blob: b8dde02402a531b2768eba57abd408b11a66070c [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_ACCELERATED_WIDGET_MAC_CA_LAYER_FRAME_SINK_H_
#define UI_ACCELERATED_WIDGET_MAC_CA_LAYER_FRAME_SINK_H_
#include "base/time/time.h"
#include "ui/accelerated_widget_mac/accelerated_widget_mac_export.h"
#include "ui/gfx/ca_layer_params.h"
#include "ui/gfx/native_widget_types.h"
namespace ui {
// An interface to an NSView that will embed content described by CALayerParams
// in its heirarchy.
class ACCELERATED_WIDGET_MAC_EXPORT CALayerFrameSink {
public:
virtual ~CALayerFrameSink() {}
// Translate from a gfx::AcceleratedWidget to the gfx::CALayerFrameSink
// interface through which frames may be submitted. This may return nullptr.
static CALayerFrameSink* FromAcceleratedWidget(gfx::AcceleratedWidget widget);
// Update the embedder's CALayer tree to show the content described by
// |ca_layer_params|.
virtual void UpdateCALayerTree(const gfx::CALayerParams& ca_layer_params) = 0;
};
} // namespace ui
#endif // UI_ACCELERATED_WIDGET_MAC_CA_LAYER_FRAME_SINK_H_