blob: 5597ba5fee351ff32e5cbd0b7acad4d2aabd879a [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "weblayer/browser/safe_browsing/safe_browsing_ui_manager.h"
#include "components/safe_browsing/core/ping_manager.h"
#include "content/public/browser/browser_thread.h"
#include "weblayer/browser/safe_browsing/safe_browsing_blocking_page.h"
#include "weblayer/browser/safe_browsing/safe_browsing_service.h"
#include "weblayer/browser/safe_browsing/safe_browsing_subresource_helper.h"
using content::BrowserThread;
namespace {
std::string GetProtocolConfigClientName() {
// Return a weblayer specific client name.
return "weblayer";
}
} // namespace
namespace weblayer {
SafeBrowsingUIManager::SafeBrowsingUIManager(
SafeBrowsingService* safe_browsing_service)
: safe_browsing_service_(safe_browsing_service) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
}
SafeBrowsingUIManager::~SafeBrowsingUIManager() = default;
void SafeBrowsingUIManager::SendSerializedThreatDetails(
content::BrowserContext* browser_context,
const std::string& serialized) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
if (!ping_manager_) {
ping_manager_ =
::safe_browsing::PingManager::Create(safe_browsing::GetV4ProtocolConfig(
GetProtocolConfigClientName(), false /* auto_update */));
}
if (serialized.empty())
return;
DVLOG(1) << "Sending serialized threat details";
ping_manager_->ReportThreatDetails(
safe_browsing_service_->GetURLLoaderFactory(), serialized);
}
safe_browsing::BaseBlockingPage*
SafeBrowsingUIManager::CreateBlockingPageForSubresource(
content::WebContents* contents,
const GURL& blocked_url,
const UnsafeResource& unsafe_resource) {
SafeBrowsingSubresourceHelper::CreateForWebContents(contents, this);
SafeBrowsingBlockingPage* blocking_page =
SafeBrowsingBlockingPage::CreateBlockingPage(this, contents, blocked_url,
unsafe_resource);
return blocking_page;
}
} // namespace weblayer