Commit 45df86d3 authored by Makoto Shimazu's avatar Makoto Shimazu Committed by Commit Bot

Remove pending_fetch_event map from ServiceWorkerGlobalScope

This is a follow-up CL for https://crrev.com/c/2114932.
This CL lets FetchRespondWithObserver call methods of FetchEvent
directly.

Bug: 1039558
Change-Id: I332945e4248840cfeddb66ee5599ca18f35394e0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2352296
Commit-Queue: Makoto Shimazu <shimazu@chromium.org>
Reviewed-by: default avatarKenichi Ishibashi <bashi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#797628}
parent 1738d0ae
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include "third_party/blink/renderer/core/fetch/body_stream_buffer.h" #include "third_party/blink/renderer/core/fetch/body_stream_buffer.h"
#include "third_party/blink/renderer/core/inspector/console_message.h" #include "third_party/blink/renderer/core/inspector/console_message.h"
#include "third_party/blink/renderer/modules/service_worker/cross_origin_resource_policy_checker.h" #include "third_party/blink/renderer/modules/service_worker/cross_origin_resource_policy_checker.h"
#include "third_party/blink/renderer/modules/service_worker/fetch_event.h"
#include "third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h" #include "third_party/blink/renderer/modules/service_worker/service_worker_global_scope.h"
#include "third_party/blink/renderer/modules/service_worker/wait_until_observer.h" #include "third_party/blink/renderer/modules/service_worker/wait_until_observer.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h"
...@@ -213,8 +214,7 @@ void FetchRespondWithObserver::OnResponseRejected( ...@@ -213,8 +214,7 @@ void FetchRespondWithObserver::OnResponseRejected(
service_worker_global_scope->RespondToFetchEvent( service_worker_global_scope->RespondToFetchEvent(
event_id_, request_url_, std::move(response), event_dispatch_time_, event_id_, request_url_, std::move(response), event_dispatch_time_,
base::TimeTicks::Now()); base::TimeTicks::Now());
service_worker_global_scope->RejectFetchEventHandledPromise(event_id_, event_->RejectHandledPromise(error_message);
error_message);
} }
void FetchRespondWithObserver::OnResponseFulfilled( void FetchRespondWithObserver::OnResponseFulfilled(
...@@ -337,7 +337,7 @@ void FetchRespondWithObserver::OnResponseFulfilled( ...@@ -337,7 +337,7 @@ void FetchRespondWithObserver::OnResponseFulfilled(
service_worker_global_scope->RespondToFetchEvent( service_worker_global_scope->RespondToFetchEvent(
event_id_, request_url_, std::move(fetch_api_response), event_id_, request_url_, std::move(fetch_api_response),
event_dispatch_time_, base::TimeTicks::Now()); event_dispatch_time_, base::TimeTicks::Now());
service_worker_global_scope->ResolveFetchEventHandledPromise(event_id_); event_->ResolveHandledPromise();
return; return;
} }
...@@ -364,13 +364,13 @@ void FetchRespondWithObserver::OnResponseFulfilled( ...@@ -364,13 +364,13 @@ void FetchRespondWithObserver::OnResponseFulfilled(
service_worker_global_scope->RespondToFetchEventWithResponseStream( service_worker_global_scope->RespondToFetchEventWithResponseStream(
event_id_, request_url_, std::move(fetch_api_response), event_id_, request_url_, std::move(fetch_api_response),
std::move(stream_handle), event_dispatch_time_, base::TimeTicks::Now()); std::move(stream_handle), event_dispatch_time_, base::TimeTicks::Now());
service_worker_global_scope->ResolveFetchEventHandledPromise(event_id_); event_->ResolveHandledPromise();
return; return;
} }
service_worker_global_scope->RespondToFetchEvent( service_worker_global_scope->RespondToFetchEvent(
event_id_, request_url_, std::move(fetch_api_response), event_id_, request_url_, std::move(fetch_api_response),
event_dispatch_time_, base::TimeTicks::Now()); event_dispatch_time_, base::TimeTicks::Now());
service_worker_global_scope->ResolveFetchEventHandledPromise(event_id_); event_->ResolveHandledPromise();
} }
void FetchRespondWithObserver::OnNoResponse() { void FetchRespondWithObserver::OnNoResponse() {
...@@ -379,7 +379,7 @@ void FetchRespondWithObserver::OnNoResponse() { ...@@ -379,7 +379,7 @@ void FetchRespondWithObserver::OnNoResponse() {
To<ServiceWorkerGlobalScope>(GetExecutionContext()); To<ServiceWorkerGlobalScope>(GetExecutionContext());
service_worker_global_scope->RespondToFetchEventWithNoResponse( service_worker_global_scope->RespondToFetchEventWithNoResponse(
event_id_, request_url_, event_dispatch_time_, base::TimeTicks::Now()); event_id_, request_url_, event_dispatch_time_, base::TimeTicks::Now());
service_worker_global_scope->ResolveFetchEventHandledPromise(event_id_); event_->ResolveHandledPromise();
} }
FetchRespondWithObserver::FetchRespondWithObserver( FetchRespondWithObserver::FetchRespondWithObserver(
...@@ -398,6 +398,7 @@ FetchRespondWithObserver::FetchRespondWithObserver( ...@@ -398,6 +398,7 @@ FetchRespondWithObserver::FetchRespondWithObserver(
task_runner_(context->GetTaskRunner(TaskType::kNetworking)) {} task_runner_(context->GetTaskRunner(TaskType::kNetworking)) {}
void FetchRespondWithObserver::Trace(Visitor* visitor) const { void FetchRespondWithObserver::Trace(Visitor* visitor) const {
visitor->Trace(event_);
RespondWithObserver::Trace(visitor); RespondWithObserver::Trace(visitor);
} }
......
...@@ -17,6 +17,7 @@ namespace blink { ...@@ -17,6 +17,7 @@ namespace blink {
class CrossOriginResourcePolicyChecker; class CrossOriginResourcePolicyChecker;
class ExecutionContext; class ExecutionContext;
class FetchEvent;
class ScriptValue; class ScriptValue;
class WaitUntilObserver; class WaitUntilObserver;
...@@ -46,6 +47,11 @@ class MODULES_EXPORT FetchRespondWithObserver : public RespondWithObserver { ...@@ -46,6 +47,11 @@ class MODULES_EXPORT FetchRespondWithObserver : public RespondWithObserver {
const char* property_name) override; const char* property_name) override;
void OnNoResponse() override; void OnNoResponse() override;
void SetEvent(FetchEvent* event) {
DCHECK(!event_);
event_ = event;
}
void Trace(Visitor*) const override; void Trace(Visitor*) const override;
private: private:
...@@ -54,6 +60,7 @@ class MODULES_EXPORT FetchRespondWithObserver : public RespondWithObserver { ...@@ -54,6 +60,7 @@ class MODULES_EXPORT FetchRespondWithObserver : public RespondWithObserver {
const network::mojom::RedirectMode redirect_mode_; const network::mojom::RedirectMode redirect_mode_;
const mojom::RequestContextFrameType frame_type_; const mojom::RequestContextFrameType frame_type_;
const network::mojom::RequestDestination request_destination_; const network::mojom::RequestDestination request_destination_;
Member<FetchEvent> event_;
base::WeakPtr<CrossOriginResourcePolicyChecker> corp_checker_; base::WeakPtr<CrossOriginResourcePolicyChecker> corp_checker_;
scoped_refptr<base::SingleThreadTaskRunner> task_runner_; scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
}; };
......
...@@ -808,7 +808,6 @@ void ServiceWorkerGlobalScope::Trace(Visitor* visitor) const { ...@@ -808,7 +808,6 @@ void ServiceWorkerGlobalScope::Trace(Visitor* visitor) const {
visitor->Trace(payment_response_callbacks_); visitor->Trace(payment_response_callbacks_);
visitor->Trace(fetch_response_callbacks_); visitor->Trace(fetch_response_callbacks_);
visitor->Trace(pending_preload_fetch_events_); visitor->Trace(pending_preload_fetch_events_);
visitor->Trace(pending_fetch_events_);
visitor->Trace(controller_receivers_); visitor->Trace(controller_receivers_);
WorkerGlobalScope::Trace(visitor); WorkerGlobalScope::Trace(visitor);
} }
...@@ -823,20 +822,6 @@ int ServiceWorkerGlobalScope::GetOutstandingThrottledLimit() const { ...@@ -823,20 +822,6 @@ int ServiceWorkerGlobalScope::GetOutstandingThrottledLimit() const {
return features::kInstallingServiceWorkerOutstandingThrottledLimit.Get(); return features::kInstallingServiceWorkerOutstandingThrottledLimit.Get();
} }
void ServiceWorkerGlobalScope::ResolveFetchEventHandledPromise(int event_id) {
FetchEvent* fetch_event = pending_fetch_events_.Take(event_id);
DCHECK(fetch_event);
fetch_event->ResolveHandledPromise();
}
void ServiceWorkerGlobalScope::RejectFetchEventHandledPromise(
int event_id,
const String& error_message) {
FetchEvent* fetch_event = pending_fetch_events_.Take(event_id);
DCHECK(fetch_event);
fetch_event->RejectHandledPromise(error_message);
}
void ServiceWorkerGlobalScope::importScripts(const Vector<String>& urls, void ServiceWorkerGlobalScope::importScripts(const Vector<String>& urls,
ExceptionState& exception_state) { ExceptionState& exception_state) {
for (const String& string_url : urls) { for (const String& string_url : urls) {
...@@ -1537,14 +1522,14 @@ void ServiceWorkerGlobalScope::StartFetchEvent( ...@@ -1537,14 +1522,14 @@ void ServiceWorkerGlobalScope::StartFetchEvent(
mojo::PendingRemote<mojom::blink::WorkerTimingContainer>( mojo::PendingRemote<mojom::blink::WorkerTimingContainer>(
std::move(params->worker_timing_remote)), std::move(params->worker_timing_remote)),
navigation_preload_sent); navigation_preload_sent);
respond_with_observer->SetEvent(fetch_event);
if (navigation_preload_sent) { if (navigation_preload_sent) {
// Keep |fetchEvent| until OnNavigationPreloadComplete() or // Keep |fetchEvent| until OnNavigationPreloadComplete() or
// onNavigationPreloadError() will be called. // onNavigationPreloadError() will be called.
pending_preload_fetch_events_.insert(event_id, fetch_event); pending_preload_fetch_events_.insert(event_id, fetch_event);
} }
pending_fetch_events_.insert(event_id, fetch_event);
NoteNewFetchEvent(request->url()); NoteNewFetchEvent(request->url());
DispatchExtendableEventWithRespondWith(fetch_event, wait_until_observer, DispatchExtendableEventWithRespondWith(fetch_event, wait_until_observer,
......
...@@ -316,9 +316,6 @@ class MODULES_EXPORT ServiceWorkerGlobalScope final ...@@ -316,9 +316,6 @@ class MODULES_EXPORT ServiceWorkerGlobalScope final
int GetOutstandingThrottledLimit() const override; int GetOutstandingThrottledLimit() const override;
const ServiceWorkerToken& token() const { return token_; } const ServiceWorkerToken& token() const { return token_; }
void ResolveFetchEventHandledPromise(int event_id);
void RejectFetchEventHandledPromise(int event_id,
const String& error_message);
protected: protected:
// EventTarget // EventTarget
...@@ -691,10 +688,6 @@ class MODULES_EXPORT ServiceWorkerGlobalScope final ...@@ -691,10 +688,6 @@ class MODULES_EXPORT ServiceWorkerGlobalScope final
HeapHashMap<int, Member<FetchEvent>> pending_preload_fetch_events_; HeapHashMap<int, Member<FetchEvent>> pending_preload_fetch_events_;
// Fetch events that are being handled are stored here and will be removed
// after being handled.
HeapHashMap<int, Member<FetchEvent>> pending_fetch_events_;
// Track outstanding FetchEvent objects still waiting for a response by // Track outstanding FetchEvent objects still waiting for a response by
// request URL. This information can be used as a hint that cache_storage // request URL. This information can be used as a hint that cache_storage
// or fetch requests to the same URL is likely to be used to satisfy a // or fetch requests to the same URL is likely to be used to satisfy a
......
...@@ -3709,7 +3709,6 @@ crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-taint ...@@ -3709,7 +3709,6 @@ crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-taint
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video.https.html [ Failure ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video.https.html [ Failure ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-cors-xhr.https.html [ Failure ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-cors-xhr.https.html [ Failure ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-error.https.html [ Failure ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-error.https.html [ Failure ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-handled.https.html [ Failure ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-redirect.https.html [ Failure ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-redirect.https.html [ Failure ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-referrer-policy.https.html [ Failure ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-referrer-policy.https.html [ Failure ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-respond-with-custom-response.https.html [ Failure ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-respond-with-custom-response.https.html [ Failure ]
......
...@@ -3747,7 +3747,6 @@ crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-taint ...@@ -3747,7 +3747,6 @@ crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-taint
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video-with-range-request.https.html [ Failure ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video-with-range-request.https.html [ Failure ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video.https.html [ Failure ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video.https.html [ Failure ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-error.https.html [ Failure ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-error.https.html [ Failure ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-handled.https.html [ Failure ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-redirect.https.html [ Failure ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-redirect.https.html [ Failure ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-referrer-policy.https.html [ Failure ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-referrer-policy.https.html [ Failure ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-respond-with-custom-response.https.html [ Failure ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-respond-with-custom-response.https.html [ Failure ]
......
...@@ -3984,7 +3984,6 @@ crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-taint ...@@ -3984,7 +3984,6 @@ crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-taint
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video-with-range-request.https.html [ Timeout ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video-with-range-request.https.html [ Timeout ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video.https.html [ Failure ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-canvas-tainting-video.https.html [ Failure ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-error.https.html [ Failure ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-error.https.html [ Failure ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-handled.https.html [ Failure ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-redirect.https.html [ Failure ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-redirect.https.html [ Failure ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-referrer-policy.https.html [ Failure ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-referrer-policy.https.html [ Failure ]
crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-respond-with-custom-response.https.html [ Failure ] crbug.com/1050754 external/wpt/service-workers/service-worker/fetch-event-respond-with-custom-response.https.html [ Failure ]
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment