#include "components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier_delegate.h"
#include <memory>
#include <set>
#include <utility>
#include "base/debug/stack_trace.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/lazy_instance.h"
#include "base/memory/weak_ptr.h"
#include "base/metrics/histogram_functions.h"
#include "base/metrics/histogram_macros.h"
#include "base/no_destructor.h"
#include "base/notreached.h"
#include "base/task/single_thread_task_runner.h"
#include "components/safe_browsing/content/common/safe_browsing.mojom-forward.h"
#include "components/safe_browsing/content/common/safe_browsing.mojom-shared.h"
#include "components/safe_browsing/content/renderer/phishing_classifier/features.h"
#include "components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.h"
#include "components/safe_browsing/content/renderer/phishing_classifier/scorer.h"
#include "components/safe_browsing/core/common/proto/csd.pb.h"
#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_thread.h"
#include "mojo/public/cpp/base/proto_wrapper.h"
#include "mojo/public/cpp/bindings/self_owned_receiver.h"
#include "services/service_manager/public/cpp/interface_provider.h"
#include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h"
#include "third_party/blink/public/platform/web_url.h"
#include "third_party/blink/public/web/web_document.h"
#include "third_party/blink/public/web/web_local_frame.h"
#include "third_party/blink/public/web/web_view.h"
RenderThread;
namespace safe_browsing {
namespace {
GURL StripRef(const GURL& url) { … }
void LogClassificationRetryWithinTimeout(bool success) { … }
}
PhishingClassifierDelegate::PhishingClassifierDelegate(
content::RenderFrame* render_frame,
PhishingClassifier* classifier)
: … { … }
PhishingClassifierDelegate::~PhishingClassifierDelegate() { … }
PhishingClassifierDelegate* PhishingClassifierDelegate::Create(
content::RenderFrame* render_frame,
PhishingClassifier* classifier) { … }
void PhishingClassifierDelegate::PhishingDetectorReceiver(
mojo::PendingAssociatedReceiver<mojom::PhishingDetector> receiver) { … }
void PhishingClassifierDelegate::StartPhishingDetection(
const GURL& url,
StartPhishingDetectionCallback callback) { … }
void PhishingClassifierDelegate::DidCommitProvisionalLoad(
ui::PageTransition transition) { … }
void PhishingClassifierDelegate::DidFinishSameDocumentNavigation() { … }
bool PhishingClassifierDelegate::is_ready() { … }
void PhishingClassifierDelegate::PageCaptured(
scoped_refptr<const base::RefCountedString16> page_text,
bool preliminary_capture) { … }
void PhishingClassifierDelegate::CancelPendingClassification(
CancelClassificationReason reason) { … }
void PhishingClassifierDelegate::ClassificationDone(
const ClientPhishingRequest& verdict,
PhishingClassifier::Result phishing_classifier_result) { … }
void PhishingClassifierDelegate::MaybeStartClassification() { … }
void PhishingClassifierDelegate::OnRetryTimeout() { … }
void PhishingClassifierDelegate::RecordEvent(SBPhishingClassifierEvent event) { … }
void PhishingClassifierDelegate::OnDestruct() { … }
void PhishingClassifierDelegate::OnScorerChanged() { … }
}