blob: 9f36333b5dc830f666e519765fe514da6e9d274a [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/interaction/browser_elements.h"
#include "chrome/browser/ui/browser_window/public/browser_window_interface.h"
#include "ui/base/interaction/element_tracker.h"
#include "ui/base/unowned_user_data/scoped_unowned_user_data.h"
DEFINE_USER_DATA(BrowserElements);
BrowserElements::BrowserElements(BrowserWindowInterface& browser)
: scoped_data_holder_(browser.GetUnownedUserDataHost(), *this) {}
BrowserElements::~BrowserElements() = default;
// static
BrowserElements* BrowserElements::From(BrowserWindowInterface* browser) {
return Get(browser->GetUnownedUserDataHost());
}
ui::TrackedElement* BrowserElements::GetElement(ui::ElementIdentifier id) {
return ui::ElementTracker::GetElementTracker()->GetFirstMatchingElement(
id, GetContext());
}
BrowserElements::ElementList BrowserElements::GetAllElements(
ui::ElementIdentifier id) {
return ui::ElementTracker::GetElementTracker()->GetAllMatchingElements(
id, GetContext());
}
bool BrowserElements::NotifyEvent(ui::ElementIdentifier id,
ui::CustomElementEventType event_type) {
auto* const element = GetElement(id);
if (!element) {
return false;
}
ui::ElementTracker::GetFrameworkDelegate()->NotifyCustomEvent(element,
event_type);
return true;
}