blob: eca8ed4ab30460efad362ccd5f8afd606c70aadf [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/webui_browser/browser_elements_webui_browser.h"
#include "chrome/browser/ui/browser_window/public/browser_window_interface.h"
#include "ui/base/interaction/framework_specific_implementation.h"
#include "ui/views/interaction/element_tracker_views.h"
DEFINE_FRAMEWORK_SPECIFIC_METADATA_SUBCLASS(BrowserElementsWebUiBrowser,
BrowserElementsViews)
BrowserElementsWebUiBrowser::BrowserElementsWebUiBrowser(
BrowserWindowInterface& browser)
: BrowserElementsViews(browser) {}
BrowserElementsWebUiBrowser::~BrowserElementsWebUiBrowser() = default;
// static
BrowserElementsWebUiBrowser* BrowserElementsWebUiBrowser::From(
BrowserWindowInterface* browser) {
auto* const base = BrowserElements::From(browser);
return base ? base->AsA<BrowserElementsWebUiBrowser>() : nullptr;
}
void BrowserElementsWebUiBrowser::Init(views::Widget* browser_widget) {
// TODO(webium): Fix ChromeOS. On ChromeOS, browser_widget is null because of
// a memory issue in WebUIBrowserWindow::GetNativeWindow(). See the comment
// there.
#if !BUILDFLAG(IS_CHROMEOS)
CHECK(browser_widget);
#endif
browser_widget_ = browser_widget;
}
void BrowserElementsWebUiBrowser::TearDown() {
browser_widget_ = nullptr;
}
ui::ElementContext BrowserElementsWebUiBrowser::GetContext() {
// TODO(webium): Remove this after fixing ChromeOS.
#if BUILDFLAG(IS_CHROMEOS)
if (!browser_widget_) {
return ui::ElementContext();
}
#endif
return views::ElementTrackerViews::GetContextForWidget(browser_widget_);
}
views::Widget* BrowserElementsWebUiBrowser::GetPrimaryWindowWidget() {
return browser_widget_;
}
bool BrowserElementsWebUiBrowser::IsInitialized() const {
return browser_widget_ != nullptr;
}