#ifndef CHROME_BROWSER_UI_INTERACTION_BROWSER_ELEMENTS_H_
#define CHROME_BROWSER_UI_INTERACTION_BROWSER_ELEMENTS_H_
#include "chrome/browser/ui/browser_window/public/browser_window_interface.h"
#include "ui/base/interaction/element_identifier.h"
#include "ui/base/interaction/element_tracker.h"
#include "ui/base/interaction/framework_specific_implementation.h"
#include "ui/base/unowned_user_data/scoped_unowned_user_data.h"
class BrowserElements : public ui::FrameworkSpecificImplementation {
public:
DECLARE_USER_DATA(BrowserElements);
explicit BrowserElements(BrowserWindowInterface& browser);
~BrowserElements() override;
static BrowserElements* From(BrowserWindowInterface* browser);
virtual ui::ElementContext GetContext() = 0;
using ElementList = ui::ElementTracker::ElementList;
ui::TrackedElement* GetElement(ui::ElementIdentifier id);
ElementList GetAllElements(ui::ElementIdentifier id);
bool NotifyEvent(ui::ElementIdentifier id,
ui::CustomElementEventType event_type);
private:
ui::ScopedUnownedUserData<BrowserElements> scoped_data_holder_;
};
#endif