#include "components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.h"
#include <memory>
#include <string>
#include <utility>
#include "base/compiler_specific.h"
#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/location.h"
#include "base/metrics/histogram_functions.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/string_util.h"
#include "base/task/single_thread_task_runner.h"
#include "base/task/task_traits.h"
#include "base/task/thread_pool.h"
#include "base/trace_event/trace_event.h"
#include "build/build_config.h"
#include "cc/paint/paint_recorder.h"
#include "cc/paint/skia_paint_canvas.h"
#include "components/paint_preview/common/paint_preview_tracker.h"
#include "components/safe_browsing/buildflags.h"
#include "components/safe_browsing/content/common/visual_utils.h"
#include "components/safe_browsing/content/renderer/phishing_classifier/features.h"
#include "components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier_delegate.h"
#include "components/safe_browsing/content/renderer/phishing_classifier/phishing_dom_feature_extractor.h"
#include "components/safe_browsing/content/renderer/phishing_classifier/phishing_term_feature_extractor.h"
#include "components/safe_browsing/content/renderer/phishing_classifier/phishing_url_feature_extractor.h"
#include "components/safe_browsing/content/renderer/phishing_classifier/phishing_visual_feature_extractor.h"
#include "components/safe_browsing/content/renderer/phishing_classifier/scorer.h"
#include "components/safe_browsing/core/common/features.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 "crypto/sha2.h"
#include "skia/ext/legacy_display_globals.h"
#include "third_party/blink/public/platform/web_url.h"
#include "third_party/blink/public/platform/web_url_request.h"
#include "third_party/blink/public/web/web_document.h"
#include "third_party/blink/public/web/web_document_loader.h"
#include "third_party/blink/public/web/web_local_frame.h"
#include "third_party/blink/public/web/web_view.h"
#include "ui/gfx/geometry/rect_conversions.h"
#include "url/gurl.h"
namespace safe_browsing {
const int PhishingClassifier::kClassifierFailed = …;
const float PhishingClassifier::kPhishyThreshold = …;
PhishingClassifier::PhishingClassifier(content::RenderFrame* render_frame)
: … { … }
PhishingClassifier::~PhishingClassifier() { … }
bool PhishingClassifier::is_ready() const { … }
void PhishingClassifier::BeginClassification(
scoped_refptr<const base::RefCountedString16> page_text,
DoneCallback done_callback) { … }
void PhishingClassifier::BeginFeatureExtraction() { … }
void PhishingClassifier::CancelPendingClassification() { … }
void PhishingClassifier::DOMExtractionFinished(bool success) { … }
void PhishingClassifier::TermExtractionFinished(bool success) { … }
void PhishingClassifier::OnPlaybackDone(std::unique_ptr<SkBitmap> bitmap) { … }
void PhishingClassifier::OnVisualFeaturesExtracted(
std::unique_ptr<VisualFeatures> visual_features) { … }
void PhishingClassifier::VisualExtractionFinished(bool success) { … }
void PhishingClassifier::OnVisualTfLiteModelDone(
std::unique_ptr<ClientPhishingRequest> verdict,
std::vector<double> result) { … }
void PhishingClassifier::RunCallback(const ClientPhishingRequest& verdict,
Result phishing_classifier_result) { … }
void PhishingClassifier::RunFailureCallback(Result failure_event) { … }
void PhishingClassifier::Clear() { … }
}