Index: components/dom_distiller/content/browser/distillable_page_utils.cc |
diff --git a/components/dom_distiller/content/browser/distillable_page_utils.cc b/components/dom_distiller/content/browser/distillable_page_utils.cc |
index 5487c62e87dc4e0eda1daecad009f9dd20463709..c37fa32ec2ee148c227ce4925f859d1e410e833b 100644 |
--- a/components/dom_distiller/content/browser/distillable_page_utils.cc |
+++ b/components/dom_distiller/content/browser/distillable_page_utils.cc |
@@ -10,7 +10,9 @@ |
#include "base/strings/utf_string_conversions.h" |
#include "base/thread_task_runner_handle.h" |
#include "base/values.h" |
+#include "components/dom_distiller/content/browser/distillability_driver.h" |
#include "components/dom_distiller/content/browser/distiller_javascript_utils.h" |
+#include "components/dom_distiller/content/common/distiller_messages.h" |
#include "components/dom_distiller/core/distillable_page_detector.h" |
#include "components/dom_distiller/core/experiments.h" |
#include "components/dom_distiller/core/page_features.h" |
@@ -19,83 +21,15 @@ |
#include "ui/base/resource/resource_bundle.h" |
namespace dom_distiller { |
-namespace { |
-void OnOGArticleJsResult(base::Callback<void(bool)> callback, |
- const base::Value* result) { |
- bool success = false; |
- if (result) { |
- result->GetAsBoolean(&success); |
- } |
- callback.Run(success); |
-} |
- |
-void OnExtractFeaturesJsResult(const DistillablePageDetector* detector, |
- base::Callback<void(bool)> callback, |
- const base::Value* result) { |
- callback.Run(detector->Classify(CalculateDerivedFeaturesFromJSON(result))); |
-} |
-} // namespace |
-void IsOpenGraphArticle(content::WebContents* web_contents, |
- base::Callback<void(bool)> callback) { |
- content::RenderFrameHost* main_frame = web_contents->GetMainFrame(); |
- if (!main_frame) { |
- base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, |
- base::Bind(callback, false)); |
- return; |
- } |
- std::string og_article_js = ResourceBundle::GetSharedInstance() |
- .GetRawDataResource(IDR_IS_DISTILLABLE_JS) |
- .as_string(); |
- RunIsolatedJavaScript(main_frame, og_article_js, |
- base::Bind(OnOGArticleJsResult, callback)); |
-} |
- |
-void IsDistillablePage(content::WebContents* web_contents, |
- bool is_mobile_optimized, |
- base::Callback<void(bool)> callback) { |
- switch (GetDistillerHeuristicsType()) { |
- case DistillerHeuristicsType::ALWAYS_TRUE: |
- base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, |
- base::Bind(callback, true)); |
- return; |
- case DistillerHeuristicsType::OG_ARTICLE: |
- IsOpenGraphArticle(web_contents, callback); |
- return; |
- case DistillerHeuristicsType::ADABOOST_MODEL: |
- // The adaboost model is only applied to non-mobile pages. |
- if (is_mobile_optimized) { |
- base::ThreadTaskRunnerHandle::Get()->PostTask( |
- FROM_HERE, base::Bind(callback, false)); |
- return; |
- } |
- IsDistillablePageForDetector( |
- web_contents, DistillablePageDetector::GetDefault(), callback); |
- return; |
- case DistillerHeuristicsType::NONE: |
- default: |
- base::ThreadTaskRunnerHandle::Get()->PostTask( |
- FROM_HERE, base::Bind(callback, false)); |
- return; |
- } |
-} |
+void setCallback(content::WebContents* web_contents, |
+ base::Callback<void(bool, bool)> callback) { |
+ WebContentsDistillabilityDriver::CreateForWebContents(web_contents); |
-void IsDistillablePageForDetector(content::WebContents* web_contents, |
- const DistillablePageDetector* detector, |
- base::Callback<void(bool)> callback) { |
- content::RenderFrameHost* main_frame = web_contents->GetMainFrame(); |
- if (!main_frame) { |
- base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, |
- base::Bind(callback, false)); |
- return; |
- } |
- std::string extract_features_js = |
- ResourceBundle::GetSharedInstance() |
- .GetRawDataResource(IDR_EXTRACT_PAGE_FEATURES_JS) |
- .as_string(); |
- RunIsolatedJavaScript( |
- main_frame, extract_features_js, |
- base::Bind(OnExtractFeaturesJsResult, detector, callback)); |
+ WebContentsDistillabilityDriver *driver = |
+ WebContentsDistillabilityDriver::FromWebContents(web_contents); |
+ CHECK(driver); |
+ driver->SetCallback(callback); |
} |
} // namespace dom_distiller |