mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
ServiceWorker: Make Extension WebRequestAPI aware of service worker update check script requests
https://chromium-review.googlesource.com/c/chromium/src/+/1782230
This commit is contained in:
@@ -1000,7 +1000,7 @@ bool AtomBrowserClient::WillCreateURLLoaderFactory(
|
||||
new ProxyingURLLoaderFactory(
|
||||
web_request.get(), protocol->intercept_handlers(), render_process_id,
|
||||
std::move(proxied_receiver), std::move(target_factory_info),
|
||||
std::move(header_client_receiver));
|
||||
std::move(header_client_receiver), type);
|
||||
|
||||
if (bypass_redirect_checks)
|
||||
*bypass_redirect_checks = true;
|
||||
|
||||
@@ -77,7 +77,8 @@ void ProxyingURLLoaderFactory::InProgressRequest::UpdateRequestInfo() {
|
||||
info_.emplace(extensions::WebRequestInfoInitParams(
|
||||
request_id_, factory_->render_process_id_, request_.render_frame_id,
|
||||
nullptr, routing_id_, request_for_info, false,
|
||||
!(options_ & network::mojom::kURLLoadOptionSynchronous)));
|
||||
!(options_ & network::mojom::kURLLoadOptionSynchronous),
|
||||
factory_->IsForServiceWorkerScript()));
|
||||
|
||||
current_request_uses_header_client_ =
|
||||
factory_->url_loader_header_client_receiver_.is_bound() &&
|
||||
@@ -654,10 +655,12 @@ ProxyingURLLoaderFactory::ProxyingURLLoaderFactory(
|
||||
network::mojom::URLLoaderFactoryRequest loader_request,
|
||||
network::mojom::URLLoaderFactoryPtrInfo target_factory_info,
|
||||
mojo::PendingReceiver<network::mojom::TrustedURLLoaderHeaderClient>
|
||||
header_client_receiver)
|
||||
header_client_receiver,
|
||||
content::ContentBrowserClient::URLLoaderFactoryType loader_factory_type)
|
||||
: web_request_api_(web_request_api),
|
||||
intercepted_handlers_(intercepted_handlers),
|
||||
render_process_id_(render_process_id) {
|
||||
render_process_id_(render_process_id),
|
||||
loader_factory_type_(loader_factory_type) {
|
||||
target_factory_.Bind(std::move(target_factory_info));
|
||||
target_factory_.set_connection_error_handler(base::BindOnce(
|
||||
&ProxyingURLLoaderFactory::OnTargetFactoryError, base::Unretained(this)));
|
||||
@@ -740,6 +743,11 @@ void ProxyingURLLoaderFactory::OnLoaderCreated(
|
||||
request_it->second->OnLoaderCreated(std::move(receiver));
|
||||
}
|
||||
|
||||
bool ProxyingURLLoaderFactory::IsForServiceWorkerScript() const {
|
||||
return loader_factory_type_ == content::ContentBrowserClient::
|
||||
URLLoaderFactoryType::kServiceWorkerScript;
|
||||
}
|
||||
|
||||
void ProxyingURLLoaderFactory::OnTargetFactoryError() {
|
||||
target_factory_.reset();
|
||||
proxy_bindings_.CloseAllBindings();
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include <vector>
|
||||
|
||||
#include "base/optional.h"
|
||||
#include "content/public/browser/content_browser_client.h"
|
||||
#include "extensions/browser/api/web_request/web_request_info.h"
|
||||
#include "mojo/public/cpp/bindings/receiver.h"
|
||||
#include "services/network/public/cpp/resource_request.h"
|
||||
@@ -204,7 +205,8 @@ class ProxyingURLLoaderFactory
|
||||
network::mojom::URLLoaderFactoryRequest loader_request,
|
||||
network::mojom::URLLoaderFactoryPtrInfo target_factory_info,
|
||||
mojo::PendingReceiver<network::mojom::TrustedURLLoaderHeaderClient>
|
||||
header_client_receiver);
|
||||
header_client_receiver,
|
||||
content::ContentBrowserClient::URLLoaderFactoryType loader_factory_type);
|
||||
~ProxyingURLLoaderFactory() override;
|
||||
|
||||
// network::mojom::URLLoaderFactory:
|
||||
@@ -226,6 +228,8 @@ class ProxyingURLLoaderFactory
|
||||
|
||||
WebRequestAPI* web_request_api() { return web_request_api_; }
|
||||
|
||||
bool IsForServiceWorkerScript() const;
|
||||
|
||||
private:
|
||||
void OnTargetFactoryError();
|
||||
void OnProxyBindingError();
|
||||
@@ -249,6 +253,8 @@ class ProxyingURLLoaderFactory
|
||||
network::mojom::URLLoaderFactoryPtr target_factory_;
|
||||
mojo::Receiver<network::mojom::TrustedURLLoaderHeaderClient>
|
||||
url_loader_header_client_receiver_{this};
|
||||
const content::ContentBrowserClient::URLLoaderFactoryType
|
||||
loader_factory_type_;
|
||||
|
||||
// Mapping from our own internally generated request ID to an
|
||||
// InProgressRequest instance.
|
||||
|
||||
Reference in New Issue
Block a user