Refactors SpeedReader to separate component updater hooks from business logic. Splits SpeedreaderWhitelist into SpeedreaderComponent (for component management) and SpeedreaderRewriterService for the rewriter.
54 lines
2.2 KiB
C++
54 lines
2.2 KiB
C++
/* Copyright 2020 The Brave Authors. All rights reserved.
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#include "brave/components/speedreader/speedreader_throttle.h"
|
|
|
|
#include <utility>
|
|
|
|
#include "brave/components/speedreader/speedreader_rewriter_service.h"
|
|
#include "brave/components/speedreader/speedreader_url_loader.h"
|
|
#include "mojo/public/cpp/bindings/pending_receiver.h"
|
|
#include "mojo/public/cpp/bindings/pending_remote.h"
|
|
#include "services/network/public/mojom/url_response_head.mojom.h"
|
|
|
|
namespace speedreader {
|
|
|
|
SpeedReaderThrottle::SpeedReaderThrottle(
|
|
SpeedreaderRewriterService* rewriter_service,
|
|
scoped_refptr<base::SingleThreadTaskRunner> task_runner)
|
|
: rewriter_service_(rewriter_service),
|
|
task_runner_(std::move(task_runner)) {}
|
|
|
|
SpeedReaderThrottle::~SpeedReaderThrottle() = default;
|
|
|
|
void SpeedReaderThrottle::WillProcessResponse(
|
|
const GURL& response_url,
|
|
network::mojom::URLResponseHead* response_head,
|
|
bool* defer) {
|
|
VLOG(2) << "Speedreader throttling: " << response_url;
|
|
// Pause the response until Speedreader has done its job.
|
|
*defer = true;
|
|
|
|
mojo::PendingRemote<network::mojom::URLLoader> new_remote;
|
|
mojo::PendingReceiver<network::mojom::URLLoaderClient> new_receiver;
|
|
mojo::PendingRemote<network::mojom::URLLoader> source_loader;
|
|
mojo::PendingReceiver<network::mojom::URLLoaderClient> source_client_receiver;
|
|
SpeedReaderURLLoader* speedreader_loader;
|
|
std::tie(new_remote, new_receiver, speedreader_loader) =
|
|
SpeedReaderURLLoader::CreateLoader(weak_factory_.GetWeakPtr(),
|
|
response_url, task_runner_,
|
|
rewriter_service_);
|
|
delegate_->InterceptResponse(std::move(new_remote), std::move(new_receiver),
|
|
&source_loader, &source_client_receiver);
|
|
speedreader_loader->Start(std::move(source_loader),
|
|
std::move(source_client_receiver));
|
|
}
|
|
|
|
void SpeedReaderThrottle::Resume() {
|
|
delegate_->Resume();
|
|
}
|
|
|
|
} // namespace speedreader
|