#include "components/constrained_window/constrained_window_views.h"
#include <algorithm>
#include <memory>
#include "base/functional/callback.h"
#include "base/memory/raw_ptr.h"
#include "base/no_destructor.h"
#include "base/scoped_observation.h"
#include "build/build_config.h"
#include "components/constrained_window/constrained_window_views_client.h"
#include "components/guest_view/browser/guest_view_base.h"
#include "components/web_modal/web_contents_modal_dialog_host.h"
#include "components/web_modal/web_contents_modal_dialog_manager.h"
#include "components/web_modal/web_contents_modal_dialog_manager_delegate.h"
#include "ui/base/mojom/ui_base_types.mojom-shared.h"
#include "ui/display/display.h"
#include "ui/display/screen.h"
#include "ui/views/bubble/bubble_dialog_model_host.h"
#include "ui/views/widget/native_widget.h"
#include "ui/views/widget/widget.h"
#include "ui/views/widget/widget_observer.h"
#include "ui/views/window/dialog_delegate.h"
#include "url/gurl.h"
#if BUILDFLAG(IS_OZONE)
#include "ui/ozone/public/ozone_platform.h"
#endif
ModalDialogHost;
ModalDialogHostObserver;
DEFINE_UI_CLASS_PROPERTY_TYPE(…)
DEFINE_OWNED_UI_CLASS_PROPERTY_KEY(…)
namespace constrained_window {
const void* kConstrainedWindowWidgetIdentifier = …;
namespace {
std::unique_ptr<ConstrainedWindowViewsClient>& CurrentBrowserModalClient() { … }
class ModalDialogHostObserverViews : public ModalDialogHostObserver { … };
gfx::Rect GetModalDialogBounds(views::Widget* widget,
web_modal::ModalDialogHost* dialog_host,
const gfx::Size& size) { … }
void UpdateModalDialogPosition(views::Widget* widget,
web_modal::ModalDialogHost* dialog_host,
const gfx::Size& size) { … }
void ConfigureDesiredBoundsDelegate(views::WidgetDelegate* dialog_delegate,
web_modal::ModalDialogHost* dialog_host) { … }
}
void SetConstrainedWindowViewsClient(
std::unique_ptr<ConstrainedWindowViewsClient> new_client) { … }
void UpdateWebContentsModalDialogPosition(
views::Widget* widget,
web_modal::WebContentsModalDialogHost* dialog_host) { … }
void UpdateWidgetModalDialogPosition(views::Widget* widget,
web_modal::ModalDialogHost* dialog_host) { … }
content::WebContents* GetTopLevelWebContents(
content::WebContents* initiator_web_contents) { … }
views::Widget* ShowWebModalDialogViews(
views::WidgetDelegate* dialog,
content::WebContents* initiator_web_contents) { … }
std::unique_ptr<views::Widget> ShowWebModalDialogViewsOwned(
views::WidgetDelegate* dialog,
content::WebContents* initiator_web_contents,
views::Widget::InitParams::Ownership expected_ownership) { … }
views::Widget* CreateWebModalDialogViews(views::WidgetDelegate* dialog,
content::WebContents* web_contents) { … }
views::Widget* CreateBrowserModalDialogViews(
std::unique_ptr<views::DialogDelegate> dialog,
gfx::NativeWindow parent) { … }
views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog,
gfx::NativeWindow parent) { … }
views::Widget* ShowBrowserModal(std::unique_ptr<ui::DialogModel> dialog_model,
gfx::NativeWindow parent) { … }
views::Widget* ShowWebModal(std::unique_ptr<ui::DialogModel> dialog_model,
content::WebContents* web_contents) { … }
bool SupportsGlobalScreenCoordinates() { … }
bool PlatformClipsChildrenToViewport() { … }
}