chromium/ui/views/widget/unique_widget_ptr.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_VIEWS_WIDGET_UNIQUE_WIDGET_PTR_H_
#define UI_VIEWS_WIDGET_UNIQUE_WIDGET_PTR_H_

#include <memory>

#include "base/scoped_observation.h"
#include "ui/views/views_export.h"
#include "ui/views/widget/widget.h"
#include "ui/views/widget/widget_observer.h"

namespace views {

// A weak owning pointer to a Widget.
// This smart pointer acts like a unique_ptr: it ensures the Widget is
// properly closed when it goes out of scope.
// It also acts like a WeakPtr: the Widget may be deleted by its native
// widget and `get()` becomes nullptr when this happens.
// Caller may check the validity of this pointer before dereferencing it if
// the widget lifetime is in doubt.
class VIEWS_EXPORT UniqueWidgetPtr {};

}  // namespace views

#endif  // UI_VIEWS_WIDGET_UNIQUE_WIDGET_PTR_H_