chromium/ui/aura/scoped_window_capture_request.h

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_AURA_SCOPED_WINDOW_CAPTURE_REQUEST_H_
#define UI_AURA_SCOPED_WINDOW_CAPTURE_REQUEST_H_

#include "base/memory/raw_ptr.h"
#include "components/viz/common/surfaces/subtree_capture_id.h"
#include "ui/aura/aura_export.h"
#include "ui/aura/window_observer.h"

namespace aura {

class Window;

// A scoped move-only object which is associated with a request to make a
// non-root window individually capturable by a FrameSinkVideoCapturer. This
// request is tracked as long as this object lives. Once all requests are
// destroyed, the window will no longer be uniquely identifiable by a
// viz::SubtreeCaptureId, and can no longer be individually capturable by the
// FrameSinkVideoCapturer.
// Note that making a window capturable forces the layer tree root at its layer
// to be promoted to a render surface that draw into a render pass.
// See https://crbug.com/1143930 for more details.
class AURA_EXPORT ScopedWindowCaptureRequest : public WindowObserver {};

}  // namespace aura

#endif  // UI_AURA_SCOPED_WINDOW_CAPTURE_REQUEST_H_