speedreader: Add --speedreader-backend switch

Resolves https://github.com/brave/brave-browser/issues/14959
This commit is contained in:
Kevin Kuehler
2021-03-30 10:07:46 -07:00
parent 4fc7f3e765
commit 481b2c97d7
3 changed files with 22 additions and 3 deletions
@@ -8,11 +8,12 @@
#include <utility>
#include "base/bind.h"
#include "base/command_line.h"
#include "base/files/file_util.h"
#include "base/logging.h"
#include "base/task/post_task.h"
#include "brave/components/speedreader/rust/ffi/speedreader.h"
#include "brave/components/speedreader/speedreader_component.h"
#include "brave/components/speedreader/speedreader_switches.h"
#include "components/grit/brave_components_resources.h"
#include "ui/base/resource/resource_bundle.h"
#include "url/gurl.h"
@@ -40,6 +41,16 @@ SpeedreaderRewriterService::SpeedreaderRewriterService(
brave_component_updater::BraveComponent::Delegate* delegate)
: component_(new speedreader::SpeedreaderComponent(delegate)),
speedreader_(new speedreader::SpeedReader) {
const base::CommandLine& cmd_line = *base::CommandLine::ForCurrentProcess();
if (cmd_line.HasSwitch(speedreader::kSpeedreaderBackend)) {
// @pes mentioned we might want to experiment with several backends, so this
// will give us the most flexibility.
std::string backend = cmd_line.GetSwitchValueASCII(kSpeedreaderBackend);
if (backend == "heuristics") {
backend_ = RewriterType::RewriterHeuristics;
}
}
// Load the built-in stylesheet as the default
content_stylesheet_ =
"<style id=\"brave_speedreader_style\">" +
@@ -84,12 +95,14 @@ void SpeedreaderRewriterService::OnStylesheetReady(const base::FilePath& path) {
}
bool SpeedreaderRewriterService::IsWhitelisted(const GURL& url) {
return speedreader_->IsReadableURL(url.spec());
return backend_ == RewriterType::RewriterStreaming
? speedreader_->IsReadableURL(url.spec())
: true;
}
std::unique_ptr<Rewriter> SpeedreaderRewriterService::MakeRewriter(
const GURL& url) {
return speedreader_->MakeRewriter(url.spec());
return speedreader_->MakeRewriter(url.spec(), backend_);
}
const std::string& SpeedreaderRewriterService::GetContentStylesheet() {
@@ -12,6 +12,7 @@
#include "base/memory/weak_ptr.h"
#include "brave/components/brave_component_updater/browser/brave_component.h"
#include "brave/components/brave_component_updater/browser/dat_file_util.h"
#include "brave/components/speedreader/rust/ffi/speedreader.h"
#include "brave/components/speedreader/speedreader_component.h"
namespace base {
@@ -53,6 +54,10 @@ class SpeedreaderRewriterService : public SpeedreaderComponent::Observer {
void OnLoadDATFileData(GetDATFileDataResult result);
void OnLoadStylesheet(std::string stylesheet);
// This is currently the only backend reachable from browser code, so
// let's make it the default.
RewriterType backend_ = RewriterType::RewriterStreaming;
std::string content_stylesheet_;
std::unique_ptr<speedreader::SpeedreaderComponent> component_;
std::unique_ptr<speedreader::SpeedReader> speedreader_;
@@ -10,6 +10,7 @@ namespace speedreader {
constexpr char kSpeedreaderWhitelist[] = "speedreader-whitelist";
constexpr char kSpeedreaderWhitelistPath[] = "speedreader-whitelist-path";
constexpr char kSpeedreaderBackend[] = "speedreader-backend";
} // namespace speedreader