#include "chrome/test/base/dialog_test_browser_window.h"
#include <memory>
#include <utility>
#include "build/build_config.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/browser_window/public/browser_window_interface_iterator.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "content/public/browser/web_contents.h"
#include "ui/views/widget/widget.h"
using web_modal::WebContentsModalDialogHost;
using web_modal::ModalDialogHostObserver;
DialogTestBrowserWindow::DialogTestBrowserWindow() {
#if BUILDFLAG(IS_MAC)
host_window_ = std::make_unique<views::Widget>();
views::Widget::InitParams params(
views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET,
views::Widget::InitParams::TYPE_WINDOW);
host_window_->Init(std::move(params));
#endif
}
DialogTestBrowserWindow::~DialogTestBrowserWindow() = default;
WebContentsModalDialogHost*
DialogTestBrowserWindow::GetWebContentsModalDialogHost() {
return this;
}
WebContentsModalDialogHost*
DialogTestBrowserWindow::GetWebContentsModalDialogHostFor(
content::WebContents* web_contents) {
return this;
}
gfx::NativeView DialogTestBrowserWindow::GetHostView() const {
if (host_window_)
return host_window_->GetNativeView();
return FindBrowser()
->GetTabStripModel()
->GetActiveWebContents()
->GetNativeView();
}
gfx::Point DialogTestBrowserWindow::GetDialogPosition(const gfx::Size& size) {
return gfx::Point();
}
gfx::Size DialogTestBrowserWindow::GetMaximumDialogSize() {
#if BUILDFLAG(IS_MAC)
return gfx::Size(1, 1);
#else
return gfx::Size();
#endif
}
void DialogTestBrowserWindow::AddObserver(ModalDialogHostObserver* observer) {
}
void DialogTestBrowserWindow::RemoveObserver(
ModalDialogHostObserver* observer) {
}
BrowserWindowInterface* DialogTestBrowserWindow::FindBrowser() const {
BrowserWindowInterface* result = nullptr;
ForEachCurrentBrowserWindowInterfaceOrderedByActivation(
[this, &result](BrowserWindowInterface* browser) {
if (browser->GetWindow() == this) {
result = browser;
}
return !result;
});
CHECK(result);
return result;
}