#include "third_party/blink/renderer/core/dom/document_statistics_collector.h"
#include "base/trace_event/trace_event.h"
#include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/public/platform/web_distillability.h"
#include "third_party/blink/renderer/core/dom/element_traversal.h"
#include "third_party/blink/renderer/core/dom/node_computed_style.h"
#include "third_party/blink/renderer/core/dom/text.h"
#include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/core/frame/visual_viewport.h"
#include "third_party/blink/renderer/core/html/forms/html_input_element.h"
#include "third_party/blink/renderer/core/html/html_head_element.h"
#include "third_party/blink/renderer/core/html/html_meta_element.h"
#include "third_party/blink/renderer/core/html_names.h"
#include "third_party/blink/renderer/core/input_type_names.h"
#include "third_party/blink/renderer/core/page/page.h"
#include "third_party/blink/renderer/platform/instrumentation/histogram.h"
namespace blink {
FormControlType;
namespace {
const int kTextContentLengthSaturation = …;
const unsigned kParagraphLengthThreshold = …;
const double kMozScoreSaturation = …;
const double kMozScoreAllSqrtSaturation = …;
const double kMozScoreAllLinearSaturation = …;
unsigned TextContentLengthSaturated(const Element& root) { … }
bool IsVisible(const Element& element) { … }
bool MatchAttributes(const Element& element, const Vector<String>& words) { … }
bool IsGoodForScoring(const WebDistillabilityFeatures& features,
const Element& element) { … }
void CollectFeatures(Element& root,
WebDistillabilityFeatures& features,
bool under_list_item = false) { … }
bool HasOpenGraphArticle(const Element& head) { … }
bool IsMobileFriendly(Document& document) { … }
}
WebDistillabilityFeatures DocumentStatisticsCollector::CollectStatistics(
Document& document) { … }
}