#ifndef CHROME_BROWSER_UI_BLOCKED_CONTENT_FRAMEBUST_BLOCK_TAB_HELPER_H_
#define CHROME_BROWSER_UI_BLOCKED_CONTENT_FRAMEBUST_BLOCK_TAB_HELPER_H_
#include <vector>
#include "base/functional/callback.h"
#include "components/blocked_content/url_list_manager.h"
#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h"
#include "url/gurl.h"
class FramebustBlockTabHelper
: public content::WebContentsObserver,
public content::WebContentsUserData<FramebustBlockTabHelper> {
public:
using ClickCallback = base::OnceCallback<
void(const GURL&, size_t , size_t )>;
FramebustBlockTabHelper(const FramebustBlockTabHelper&) = delete;
FramebustBlockTabHelper& operator=(const FramebustBlockTabHelper&) = delete;
~FramebustBlockTabHelper() override;
void AddBlockedUrl(const GURL& blocked_url, ClickCallback click_callback);
bool HasBlockedUrls() const;
void OnBlockedUrlClicked(size_t index);
const std::vector<GURL>& blocked_urls() const { return blocked_urls_; }
blocked_content::UrlListManager* manager() { return &manager_; }
private:
friend class content::WebContentsUserData<FramebustBlockTabHelper>;
explicit FramebustBlockTabHelper(content::WebContents* web_contents);
void PrimaryPageChanged(content::Page& page) override;
blocked_content::UrlListManager manager_;
std::vector<GURL> blocked_urls_;
std::vector<ClickCallback> callbacks_;
WEB_CONTENTS_USER_DATA_KEY_DECL();
};
#endif