#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;
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;
}