#ifndef CHROME_BROWSER_ENTERPRISE_CONNECTORS_ANALYSIS_CONTENT_ANALYSIS_INFO_H_
#define CHROME_BROWSER_ENTERPRISE_CONNECTORS_ANALYSIS_CONTENT_ANALYSIS_INFO_H_
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"
#include "chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.h"
#include "components/enterprise/connectors/core/content_analysis_info_base.h"
#include "components/safe_browsing/core/common/proto/csd.pb.h"
#include "content/public/browser/clipboard_types.h"
namespace download {
class DownloadItem;
}
namespace enterprise_connectors {
class ContentAnalysisInfo : public ContentAnalysisInfoBase {
public:
virtual content::WebContents* web_contents() const = 0;
void InitializeRequest(safe_browsing::BinaryUploadService::Request* request,
bool include_enterprise_only_fields = true);
std::string GetContentAreaAccountEmail() const;
};
class ContentAreaUserProvider : public ContentAnalysisInfo {
public:
static std::string GetUser(Profile* profile,
content::WebContents* web_contents,
const GURL& tab_url);
static std::string GetUser(const content::ClipboardEndpoint& endpoint);
~ContentAreaUserProvider();
private:
const AnalysisSettings& settings() const override;
signin::IdentityManager* identity_manager() const override;
int user_action_requests_count() const override;
std::string tab_title() const override;
std::string user_action_id() const override;
std::string email() const override;
const GURL& url() const override;
const GURL& tab_url() const override;
ContentAnalysisRequest::Reason reason() const override;
google::protobuf::RepeatedPtrField<::safe_browsing::ReferrerChainEntry>
referrer_chain() const override;
google::protobuf::RepeatedPtrField<std::string> frame_url_chain()
const override;
content::WebContents* web_contents() const override;
explicit ContentAreaUserProvider(
signin::IdentityManager* im,
content::WebContents* web_contents,
const GURL& tab_url);
raw_ptr<signin::IdentityManager> im_;
base::WeakPtr<content::WebContents> web_contents_;
raw_ref<const GURL> tab_url_;
google::protobuf::RepeatedPtrField<::safe_browsing::ReferrerChainEntry>
referrer_chain_;
};
class DownloadContentAreaUserProvider : public ContentAnalysisInfo {
public:
explicit DownloadContentAreaUserProvider(
download::DownloadItem& download_item);
~DownloadContentAreaUserProvider();
const GURL& url() const override;
const GURL& tab_url() const override;
signin::IdentityManager* identity_manager() const override;
content::WebContents* web_contents() const override;
google::protobuf::RepeatedPtrField<::safe_browsing::ReferrerChainEntry>
referrer_chain() const override;
google::protobuf::RepeatedPtrField<std::string> frame_url_chain()
const override;
private:
const AnalysisSettings& settings() const override;
int user_action_requests_count() const override;
std::string tab_title() const override;
std::string user_action_id() const override;
std::string email() const override;
ContentAnalysisRequest::Reason reason() const override;
GURL url_;
GURL tab_url_;
raw_ptr<signin::IdentityManager> im_;
google::protobuf::RepeatedPtrField<::safe_browsing::ReferrerChainEntry>
referrer_chain_;
google::protobuf::RepeatedPtrField<std::string> frame_url_chain_;
base::WeakPtr<content::WebContents> web_contents_;
};
}
#endif