blob: fdafb4b5f5a6a4c55a1ddc0239c5e28557e636fb [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/enterprise/connectors/analysis/request_handler_base.h"
#include "chrome/browser/safe_browsing/cloud_content_scanning/binary_upload_service.h"
namespace enterprise_connectors {
RequestHandlerBase::RequestHandlerBase(
safe_browsing::BinaryUploadService* upload_service,
Profile* profile,
const enterprise_connectors::AnalysisSettings& analysis_settings,
GURL url,
const std::string& source,
const std::string& destination,
const std::string& user_action_id,
const std::string& tab_title,
uint64_t user_action_requests_count,
safe_browsing::DeepScanAccessPoint access_point)
: upload_service_(upload_service ? upload_service->AsWeakPtr() : nullptr),
profile_(profile),
analysis_settings_(analysis_settings),
url_(url),
source_(source),
destination_(destination),
user_action_id_(user_action_id),
tab_title_(tab_title),
user_action_requests_count_(user_action_requests_count),
access_point_(access_point) {}
RequestHandlerBase::~RequestHandlerBase() = default;
bool RequestHandlerBase::UploadData() {
upload_start_time_ = base::TimeTicks::Now();
return UploadDataImpl();
}
void RequestHandlerBase::AppendFinalActionsTo(
std::map<std::string, ContentAnalysisAcknowledgement::FinalAction>*
final_actions) {
DCHECK(final_actions);
final_actions->insert(
std::make_move_iterator(request_tokens_to_ack_final_actions_.begin()),
std::make_move_iterator(request_tokens_to_ack_final_actions_.end()));
request_tokens_to_ack_final_actions_.clear();
}
void RequestHandlerBase::PrepareRequest(
enterprise_connectors::AnalysisConnector connector,
safe_browsing::BinaryUploadService::Request* request) {
if (analysis_settings_->cloud_or_local_settings.is_cloud_analysis()) {
request->set_device_token(
analysis_settings_->cloud_or_local_settings.dm_token());
}
if (analysis_settings_->cloud_or_local_settings.is_local_analysis()) {
request->set_user_action_id(user_action_id_);
request->set_user_action_requests_count(user_action_requests_count_);
request->set_tab_title(tab_title_);
}
request->set_analysis_connector(connector);
request->set_email(safe_browsing::GetProfileEmail(profile_));
request->set_url(url_.spec());
request->set_source(source_);
request->set_destination(destination_);
request->set_tab_url(url_);
request->set_per_profile_request(analysis_settings_->per_profile);
for (const auto& tag : analysis_settings_->tags)
request->add_tag(tag.first);
if (analysis_settings_->client_metadata)
request->set_client_metadata(*analysis_settings_->client_metadata);
}
safe_browsing::BinaryUploadService*
RequestHandlerBase::GetBinaryUploadService() {
return upload_service_.get();
}
} // namespace enterprise_connectors