#ifndef CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_STATS_TAB_HELPER_H_
#define CHROME_BROWSER_UI_BOOKMARKS_BOOKMARK_STATS_TAB_HELPER_H_
#include "chrome/browser/ui/bookmarks/bookmark_stats.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h"
#include "ui/base/window_open_disposition.h"
class BookmarkStatsTabHelper
: public content::WebContentsObserver,
public content::WebContentsUserData<BookmarkStatsTabHelper> {
public:
BookmarkStatsTabHelper();
BookmarkStatsTabHelper(const BookmarkStatsTabHelper&) = delete;
BookmarkStatsTabHelper& operator=(const BookmarkStatsTabHelper&) = delete;
~BookmarkStatsTabHelper() override;
bool SetLaunchAction(const BookmarkLaunchAction& launch_action,
WindowOpenDisposition tab_disposition);
void DidStartNavigation(
content::NavigationHandle* navigation_handle) override;
void DidFinishNavigation(
content::NavigationHandle* navigation_handle) override;
void DidFirstVisuallyNonEmptyPaint() override;
const std::optional<BookmarkLaunchAction>& launch_action_for_testing() const {
return launch_action_;
}
const std::optional<WindowOpenDisposition>& tab_disposition_for_testing()
const {
return tab_disposition_;
}
private:
friend class content::WebContentsUserData<BookmarkStatsTabHelper>;
explicit BookmarkStatsTabHelper(content::WebContents* web_contents);
std::optional<BookmarkLaunchAction> launch_action_;
std::optional<WindowOpenDisposition> tab_disposition_;
bool should_reset_launch_data_ = false;
WEB_CONTENTS_USER_DATA_KEY_DECL();
};
#endif