Commit 6d1598dc authored by Leon Han's avatar Leon Han Committed by Commit Bot

[OnionSoup] Remove blink::WebServiceWorkerStreamHandle

https://chromium-review.googlesource.com/c/chromium/src/+/1631124
already made WebServiceWorkerStreamHandle used only inside Blink, this
CL removes it.

BUG=922376,879019

Change-Id: Ia9cd4f3cef9354ba64e492d3372b25ae626b64d8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1634382Reviewed-by: default avatarMatt Falkenhagen <falken@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarMakoto Shimazu <shimazu@chromium.org>
Commit-Queue: Leon Han <leon.han@intel.com>
Cr-Commit-Position: refs/heads/master@{#664737}
parent 0a70c27a
...@@ -159,7 +159,6 @@ source_set("blink_headers") { ...@@ -159,7 +159,6 @@ source_set("blink_headers") {
"platform/modules/service_worker/web_service_worker_provider.h", "platform/modules/service_worker/web_service_worker_provider.h",
"platform/modules/service_worker/web_service_worker_provider_client.h", "platform/modules/service_worker/web_service_worker_provider_client.h",
"platform/modules/service_worker/web_service_worker_registration_object_info.h", "platform/modules/service_worker/web_service_worker_registration_object_info.h",
"platform/modules/service_worker/web_service_worker_stream_handle.h",
"platform/platform.h", "platform/platform.h",
"platform/pointer_properties.h", "platform/pointer_properties.h",
"platform/scheduler/web_rail_mode_observer.h", "platform/scheduler/web_rail_mode_observer.h",
......
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef THIRD_PARTY_BLINK_PUBLIC_PLATFORM_MODULES_SERVICE_WORKER_WEB_SERVICE_WORKER_STREAM_HANDLE_H_
#define THIRD_PARTY_BLINK_PUBLIC_PLATFORM_MODULES_SERVICE_WORKER_WEB_SERVICE_WORKER_STREAM_HANDLE_H_
#include <memory>
#include "mojo/public/cpp/system/data_pipe.h"
#include "third_party/blink/public/platform/web_common.h"
namespace blink {
// Contains the info to send back a body to the page over Mojo's data pipe.
class BLINK_PLATFORM_EXPORT WebServiceWorkerStreamHandle {
public:
// Listener can observe whether the data pipe is successfully closed at the
// end of the body or it has accidentally finished.
class Listener {
public:
virtual ~Listener() = default;
virtual void OnAborted() = 0;
virtual void OnCompleted() = 0;
};
void SetListener(std::unique_ptr<Listener>);
mojo::ScopedDataPipeConsumerHandle DrainStreamDataPipe();
#if INSIDE_BLINK
WebServiceWorkerStreamHandle(mojo::ScopedDataPipeConsumerHandle stream)
: stream_(std::move(stream)) {
DCHECK(stream_.is_valid());
}
void Aborted();
void Completed();
#endif
private:
mojo::ScopedDataPipeConsumerHandle stream_;
std::unique_ptr<Listener> listener_;
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_PUBLIC_PLATFORM_MODULES_SERVICE_WORKER_WEB_SERVICE_WORKER_STREAM_HANDLE_H_
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
#include "services/network/public/mojom/fetch_api.mojom-blink.h" #include "services/network/public/mojom/fetch_api.mojom-blink.h"
#include "third_party/blink/public/mojom/devtools/console_message.mojom-shared.h" #include "third_party/blink/public/mojom/devtools/console_message.mojom-shared.h"
#include "third_party/blink/public/mojom/loader/request_context_frame_type.mojom-blink.h" #include "third_party/blink/public/mojom/loader/request_context_frame_type.mojom-blink.h"
#include "third_party/blink/public/platform/modules/service_worker/web_service_worker_stream_handle.h"
#include "third_party/blink/public/platform/task_type.h" #include "third_party/blink/public/platform/task_type.h"
#include "third_party/blink/renderer/bindings/core/v8/script_value.h" #include "third_party/blink/renderer/bindings/core/v8/script_value.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h" #include "third_party/blink/renderer/bindings/core/v8/v8_binding_for_core.h"
...@@ -121,75 +120,63 @@ bool IsClientRequest(network::mojom::RequestContextFrameType frame_type, ...@@ -121,75 +120,63 @@ bool IsClientRequest(network::mojom::RequestContextFrameType frame_type,
request_context == mojom::RequestContextType::WORKER; request_context == mojom::RequestContextType::WORKER;
} }
// Notifies the result of FetchDataLoader to |handle_|. |handle_| pass through // Notifies the result of FetchDataLoader to |callback_ptr_|, the other endpoint
// the result to its observer. // for which is passed to the browser process via
// blink.mojom.ServiceWorkerFetchResponseCallback.OnResponseStream().
class FetchLoaderClient final class FetchLoaderClient final
: public GarbageCollectedFinalized<FetchLoaderClient>, : public GarbageCollectedFinalized<FetchLoaderClient>,
public FetchDataLoader::Client { public FetchDataLoader::Client {
USING_GARBAGE_COLLECTED_MIXIN(FetchLoaderClient); USING_GARBAGE_COLLECTED_MIXIN(FetchLoaderClient);
public: public:
FetchLoaderClient() {} FetchLoaderClient(
std::unique_ptr<ServiceWorkerTimeoutTimer::StayAwakeToken> token)
: token_(std::move(token)) {
// We need to make |callback_ptr_| callable in the first place because some
// DidFetchDataLoadXXX() accessing it may be called synchronously from
// StartLoading().
callback_request_ = mojo::MakeRequest(&callback_ptr_);
}
void DidFetchDataStartedDataPipe( void DidFetchDataStartedDataPipe(
mojo::ScopedDataPipeConsumerHandle pipe) override { mojo::ScopedDataPipeConsumerHandle pipe) override {
DCHECK(!handle_); DCHECK(!body_stream_.is_valid());
handle_ = std::make_unique<WebServiceWorkerStreamHandle>(std::move(pipe)); DCHECK(pipe.is_valid());
body_stream_ = std::move(pipe);
} }
void DidFetchDataLoadedDataPipe() override { void DidFetchDataLoadedDataPipe() override {
DCHECK(handle_); callback_ptr_->OnCompleted();
// If this method is called synchronously from StartLoading() then we need token_.reset();
// to delay notifying the handle until after
// RespondToFetchEventWithResponseStream() is called.
if (!started_) {
pending_complete_ = true;
return;
}
pending_complete_ = false;
handle_->Completed();
} }
void DidFetchDataLoadFailed() override { void DidFetchDataLoadFailed() override {
// If this method is called synchronously from StartLoading() then we need callback_ptr_->OnAborted();
// to delay notifying the handle until after token_.reset();
// RespondToFetchEventWithResponseStream() is called.
if (!started_) {
pending_failure_ = true;
return;
}
pending_failure_ = false;
if (handle_)
handle_->Aborted();
} }
void Abort() override { void Abort() override {
// A fetch() aborted via AbortSignal in the ServiceWorker will just look // A fetch() aborted via AbortSignal in the ServiceWorker will just look
// like an ordinary failure to the page. // like an ordinary failure to the page.
// TODO(ricea): Should a fetch() on the page get an AbortError instead? // TODO(ricea): Should a fetch() on the page get an AbortError instead?
if (handle_) callback_ptr_->OnAborted();
handle_->Aborted(); token_.reset();
} }
void SetStarted() { mojom::blink::ServiceWorkerStreamHandlePtr CreateStreamHandle() {
DCHECK(!started_); if (!body_stream_.is_valid())
// Note that RespondToFetchEventWithResponseStream() has been called and return nullptr;
// flush any pending operation. return mojom::blink::ServiceWorkerStreamHandle::New(
started_ = true; std::move(body_stream_), std::move(callback_request_));
if (pending_complete_)
DidFetchDataLoadedDataPipe();
else if (pending_failure_)
DidFetchDataLoadFailed();
} }
WebServiceWorkerStreamHandle* Handle() const { return handle_.get(); }
void Trace(blink::Visitor* visitor) override { void Trace(blink::Visitor* visitor) override {
FetchDataLoader::Client::Trace(visitor); FetchDataLoader::Client::Trace(visitor);
} }
private: private:
std::unique_ptr<WebServiceWorkerStreamHandle> handle_; mojo::ScopedDataPipeConsumerHandle body_stream_;
bool started_ = false; mojom::blink::ServiceWorkerStreamCallbackRequest callback_request_;
bool pending_complete_ = false;
bool pending_failure_ = false; mojom::blink::ServiceWorkerStreamCallbackPtr callback_ptr_;
std::unique_ptr<ServiceWorkerTimeoutTimer::StayAwakeToken> token_;
DISALLOW_COPY_AND_ASSIGN(FetchLoaderClient); DISALLOW_COPY_AND_ASSIGN(FetchLoaderClient);
}; };
...@@ -316,6 +303,8 @@ void FetchRespondWithObserver::OnResponseFulfilled( ...@@ -316,6 +303,8 @@ void FetchRespondWithObserver::OnResponseFulfilled(
mojom::blink::FetchAPIResponsePtr fetch_api_response = mojom::blink::FetchAPIResponsePtr fetch_api_response =
response->PopulateFetchAPIResponse(); response->PopulateFetchAPIResponse();
ServiceWorkerGlobalScope* service_worker_global_scope =
To<ServiceWorkerGlobalScope>(GetExecutionContext());
BodyStreamBuffer* buffer = response->InternalBodyBuffer(); BodyStreamBuffer* buffer = response->InternalBodyBuffer();
if (buffer) { if (buffer) {
...@@ -330,16 +319,17 @@ void FetchRespondWithObserver::OnResponseFulfilled( ...@@ -330,16 +319,17 @@ void FetchRespondWithObserver::OnResponseFulfilled(
if (blob_data_handle) { if (blob_data_handle) {
// Handle the blob response body. // Handle the blob response body.
fetch_api_response->blob = blob_data_handle; fetch_api_response->blob = blob_data_handle;
To<ServiceWorkerGlobalScope>(GetExecutionContext()) service_worker_global_scope->RespondToFetchEvent(
->RespondToFetchEvent(event_id_, std::move(fetch_api_response), event_id_, std::move(fetch_api_response), event_dispatch_time_,
event_dispatch_time_, base::TimeTicks::Now()); base::TimeTicks::Now());
return; return;
} }
// Load the Response as a mojo::DataPipe. The resulting pipe consumer // Load the Response as a Mojo DataPipe. The resulting pipe consumer
// handle will be passed to the FetchLoaderClient on start. // handle will be passed to the FetchLoaderClient on start.
FetchLoaderClient* fetch_loader_client = FetchLoaderClient* fetch_loader_client =
MakeGarbageCollected<FetchLoaderClient>(); MakeGarbageCollected<FetchLoaderClient>(
service_worker_global_scope->CreateStayAwakeToken());
buffer->StartLoading(FetchDataLoader::CreateLoaderAsDataPipe(task_runner_), buffer->StartLoading(FetchDataLoader::CreateLoaderAsDataPipe(task_runner_),
fetch_loader_client, exception_state); fetch_loader_client, exception_state);
if (exception_state.HadException()) { if (exception_state.HadException()) {
...@@ -347,25 +337,22 @@ void FetchRespondWithObserver::OnResponseFulfilled( ...@@ -347,25 +337,22 @@ void FetchRespondWithObserver::OnResponseFulfilled(
return; return;
} }
// If we failed to create the WebServiceWorkerStreamHandle then we must mojom::blink::ServiceWorkerStreamHandlePtr stream_handle =
// have failed to allocate the mojo::DataPipe. fetch_loader_client->CreateStreamHandle();
if (!fetch_loader_client->Handle()) { // We failed to allocate the Mojo DataPipe.
if (!stream_handle) {
OnResponseRejected(ServiceWorkerResponseError::kDataPipeCreationFailed); OnResponseRejected(ServiceWorkerResponseError::kDataPipeCreationFailed);
return; return;
} }
To<ServiceWorkerGlobalScope>(GetExecutionContext()) service_worker_global_scope->RespondToFetchEventWithResponseStream(
->RespondToFetchEventWithResponseStream( event_id_, std::move(fetch_api_response), std::move(stream_handle),
event_id_, std::move(fetch_api_response), event_dispatch_time_, base::TimeTicks::Now());
fetch_loader_client->Handle(), event_dispatch_time_,
base::TimeTicks::Now());
fetch_loader_client->SetStarted();
return; return;
} }
To<ServiceWorkerGlobalScope>(GetExecutionContext()) service_worker_global_scope->RespondToFetchEvent(
->RespondToFetchEvent(event_id_, std::move(fetch_api_response), event_id_, std::move(fetch_api_response), event_dispatch_time_,
event_dispatch_time_, base::TimeTicks::Now()); base::TimeTicks::Now());
} }
void FetchRespondWithObserver::OnNoResponse() { void FetchRespondWithObserver::OnNoResponse() {
......
...@@ -38,7 +38,6 @@ ...@@ -38,7 +38,6 @@
#include "base/numerics/safe_conversions.h" #include "base/numerics/safe_conversions.h"
#include "third_party/blink/public/common/features.h" #include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/platform/modules/service_worker/web_service_worker_error.h" #include "third_party/blink/public/platform/modules/service_worker/web_service_worker_error.h"
#include "third_party/blink/public/platform/modules/service_worker/web_service_worker_stream_handle.h"
#include "third_party/blink/public/platform/platform.h" #include "third_party/blink/public/platform/platform.h"
#include "third_party/blink/public/platform/web_url.h" #include "third_party/blink/public/platform/web_url.h"
#include "third_party/blink/renderer/bindings/core/v8/callback_promise_adapter.h" #include "third_party/blink/renderer/bindings/core/v8/callback_promise_adapter.h"
...@@ -101,7 +100,6 @@ ...@@ -101,7 +100,6 @@
#include "third_party/blink/renderer/modules/service_worker/service_worker_registration.h" #include "third_party/blink/renderer/modules/service_worker/service_worker_registration.h"
#include "third_party/blink/renderer/modules/service_worker/service_worker_script_cached_metadata_handler.h" #include "third_party/blink/renderer/modules/service_worker/service_worker_script_cached_metadata_handler.h"
#include "third_party/blink/renderer/modules/service_worker/service_worker_thread.h" #include "third_party/blink/renderer/modules/service_worker/service_worker_thread.h"
#include "third_party/blink/renderer/modules/service_worker/service_worker_timeout_timer.h"
#include "third_party/blink/renderer/modules/service_worker/service_worker_window_client.h" #include "third_party/blink/renderer/modules/service_worker/service_worker_window_client.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/script_state.h" #include "third_party/blink/renderer/platform/bindings/script_state.h"
...@@ -124,30 +122,6 @@ namespace { ...@@ -124,30 +122,6 @@ namespace {
constexpr char kServiceWorkerGlobalScopeTraceScope[] = constexpr char kServiceWorkerGlobalScopeTraceScope[] =
"ServiceWorkerGlobalScope"; "ServiceWorkerGlobalScope";
class StreamHandleListener : public WebServiceWorkerStreamHandle::Listener {
public:
StreamHandleListener(
mojom::blink::ServiceWorkerStreamCallbackPtr callback_ptr,
std::unique_ptr<ServiceWorkerTimeoutTimer::StayAwakeToken> token)
: callback_ptr_(std::move(callback_ptr)), token_(std::move(token)) {}
~StreamHandleListener() override {}
void OnAborted() override {
callback_ptr_->OnAborted();
token_.reset();
}
void OnCompleted() override {
callback_ptr_->OnCompleted();
token_.reset();
}
private:
mojom::blink::ServiceWorkerStreamCallbackPtr callback_ptr_;
std::unique_ptr<ServiceWorkerTimeoutTimer::StayAwakeToken> token_;
};
void DidSkipWaiting(ScriptPromiseResolver* resolver, bool success) { void DidSkipWaiting(ScriptPromiseResolver* resolver, bool success) {
if (!resolver->GetExecutionContext() || if (!resolver->GetExecutionContext() ||
resolver->GetExecutionContext()->IsContextDestroyed()) resolver->GetExecutionContext()->IsContextDestroyed())
...@@ -730,6 +704,11 @@ void ServiceWorkerGlobalScope::DispatchOrQueueFetchEvent( ...@@ -730,6 +704,11 @@ void ServiceWorkerGlobalScope::DispatchOrQueueFetchEvent(
std::move(callback)); std::move(callback));
} }
std::unique_ptr<ServiceWorkerTimeoutTimer::StayAwakeToken>
ServiceWorkerGlobalScope::CreateStayAwakeToken() {
return timeout_timer_->CreateStayAwakeToken();
}
ServiceWorker* ServiceWorkerGlobalScope::GetOrCreateServiceWorker( ServiceWorker* ServiceWorkerGlobalScope::GetOrCreateServiceWorker(
WebServiceWorkerObjectInfo info) { WebServiceWorkerObjectInfo info) {
if (info.version_id == mojom::blink::kInvalidServiceWorkerVersionId) if (info.version_id == mojom::blink::kInvalidServiceWorkerVersionId)
...@@ -1018,7 +997,7 @@ void ServiceWorkerGlobalScope::RespondToFetchEvent( ...@@ -1018,7 +997,7 @@ void ServiceWorkerGlobalScope::RespondToFetchEvent(
void ServiceWorkerGlobalScope::RespondToFetchEventWithResponseStream( void ServiceWorkerGlobalScope::RespondToFetchEventWithResponseStream(
int fetch_event_id, int fetch_event_id,
mojom::blink::FetchAPIResponsePtr response, mojom::blink::FetchAPIResponsePtr response,
blink::WebServiceWorkerStreamHandle* web_body_as_stream, mojom::blink::ServiceWorkerStreamHandlePtr body_as_stream,
base::TimeTicks event_dispatch_time, base::TimeTicks event_dispatch_time,
base::TimeTicks respond_with_settled_time) { base::TimeTicks respond_with_settled_time) {
DCHECK(IsContextThread()); DCHECK(IsContextThread());
...@@ -1031,14 +1010,6 @@ void ServiceWorkerGlobalScope::RespondToFetchEventWithResponseStream( ...@@ -1031,14 +1010,6 @@ void ServiceWorkerGlobalScope::RespondToFetchEventWithResponseStream(
DCHECK(fetch_response_callbacks_.Contains(fetch_event_id)); DCHECK(fetch_response_callbacks_.Contains(fetch_event_id));
mojom::blink::ServiceWorkerFetchResponseCallbackPtr response_callback = mojom::blink::ServiceWorkerFetchResponseCallbackPtr response_callback =
fetch_response_callbacks_.Take(fetch_event_id); fetch_response_callbacks_.Take(fetch_event_id);
auto body_as_stream = mojom::blink::ServiceWorkerStreamHandle::New();
mojom::blink::ServiceWorkerStreamCallbackPtr callback_ptr;
body_as_stream->callback_request = mojo::MakeRequest(&callback_ptr);
body_as_stream->stream = web_body_as_stream->DrainStreamDataPipe();
DCHECK(body_as_stream->stream.is_valid());
web_body_as_stream->SetListener(std::make_unique<StreamHandleListener>(
std::move(callback_ptr), timeout_timer_->CreateStayAwakeToken()));
auto timing = mojom::blink::ServiceWorkerFetchEventTiming::New(); auto timing = mojom::blink::ServiceWorkerFetchEventTiming::New();
timing->dispatch_event_time = event_dispatch_time; timing->dispatch_event_time = event_dispatch_time;
......
...@@ -38,6 +38,7 @@ ...@@ -38,6 +38,7 @@
#include "third_party/blink/renderer/bindings/core/v8/request_or_usv_string.h" #include "third_party/blink/renderer/bindings/core/v8/request_or_usv_string.h"
#include "third_party/blink/renderer/core/workers/worker_global_scope.h" #include "third_party/blink/renderer/core/workers/worker_global_scope.h"
#include "third_party/blink/renderer/modules/modules_export.h" #include "third_party/blink/renderer/modules/modules_export.h"
#include "third_party/blink/renderer/modules/service_worker/service_worker_timeout_timer.h"
#include "third_party/blink/renderer/platform/heap/handle.h" #include "third_party/blink/renderer/platform/heap/handle.h"
#include "third_party/blink/renderer/platform/wtf/casting.h" #include "third_party/blink/renderer/platform/wtf/casting.h"
#include "third_party/blink/renderer/platform/wtf/forward.h" #include "third_party/blink/renderer/platform/wtf/forward.h"
...@@ -55,10 +56,8 @@ class ServiceWorker; ...@@ -55,10 +56,8 @@ class ServiceWorker;
class ServiceWorkerClients; class ServiceWorkerClients;
class ServiceWorkerRegistration; class ServiceWorkerRegistration;
class ServiceWorkerThread; class ServiceWorkerThread;
class ServiceWorkerTimeoutTimer;
class StringOrTrustedScriptURL; class StringOrTrustedScriptURL;
class WaitUntilObserver; class WaitUntilObserver;
class WebServiceWorkerStreamHandle;
class WebURLResponse; class WebURLResponse;
class WorkerClassicScriptLoader; class WorkerClassicScriptLoader;
struct GlobalScopeCreationParams; struct GlobalScopeCreationParams;
...@@ -174,6 +173,11 @@ class MODULES_EXPORT ServiceWorkerGlobalScope final ...@@ -174,6 +173,11 @@ class MODULES_EXPORT ServiceWorkerGlobalScope final
mojom::blink::ServiceWorkerFetchResponseCallbackPtr response_callback, mojom::blink::ServiceWorkerFetchResponseCallbackPtr response_callback,
DispatchFetchEventCallback callback); DispatchFetchEventCallback callback);
// Creates a ServiceWorkerTimeoutTimer::StayAwakeToken to ensure that the idle
// timer won't be triggered while any of these are alive.
std::unique_ptr<ServiceWorkerTimeoutTimer::StayAwakeToken>
CreateStayAwakeToken();
// Returns the ServiceWorker object described by the given info. Creates a new // Returns the ServiceWorker object described by the given info. Creates a new
// object if needed, or else returns the existing one. // object if needed, or else returns the existing one.
::blink::ServiceWorker* GetOrCreateServiceWorker(WebServiceWorkerObjectInfo); ::blink::ServiceWorker* GetOrCreateServiceWorker(WebServiceWorkerObjectInfo);
...@@ -229,7 +233,7 @@ class MODULES_EXPORT ServiceWorkerGlobalScope final ...@@ -229,7 +233,7 @@ class MODULES_EXPORT ServiceWorkerGlobalScope final
void RespondToFetchEventWithResponseStream( void RespondToFetchEventWithResponseStream(
int fetch_event_id, int fetch_event_id,
mojom::blink::FetchAPIResponsePtr, mojom::blink::FetchAPIResponsePtr,
WebServiceWorkerStreamHandle*, mojom::blink::ServiceWorkerStreamHandlePtr,
base::TimeTicks event_dispatch_time, base::TimeTicks event_dispatch_time,
base::TimeTicks respond_with_settled_time); base::TimeTicks respond_with_settled_time);
......
...@@ -546,7 +546,6 @@ jumbo_component("platform") { ...@@ -546,7 +546,6 @@ jumbo_component("platform") {
"exported/web_rtc_void_request.cc", "exported/web_rtc_void_request.cc",
"exported/web_runtime_features.cc", "exported/web_runtime_features.cc",
"exported/web_security_origin.cc", "exported/web_security_origin.cc",
"exported/web_service_worker_stream_handle.cc",
"exported/web_speech_synthesis_utterance.cc", "exported/web_speech_synthesis_utterance.cc",
"exported/web_speech_synthesis_voice.cc", "exported/web_speech_synthesis_voice.cc",
"exported/web_speech_synthesizer_client_impl.cc", "exported/web_speech_synthesizer_client_impl.cc",
......
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/public/platform/modules/service_worker/web_service_worker_stream_handle.h"
namespace blink {
void WebServiceWorkerStreamHandle::SetListener(
std::unique_ptr<Listener> listener) {
DCHECK(!listener_);
listener_ = std::move(listener);
}
void WebServiceWorkerStreamHandle::Aborted() {
DCHECK(listener_);
listener_->OnAborted();
}
void WebServiceWorkerStreamHandle::Completed() {
DCHECK(listener_);
listener_->OnCompleted();
}
mojo::ScopedDataPipeConsumerHandle
WebServiceWorkerStreamHandle::DrainStreamDataPipe() {
DCHECK(stream_.is_valid());
return std::move(stream_);
}
} // namespace blink
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