1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef RespondWithObserver_h
6 #define RespondWithObserver_h
8 #include "core/dom/ContextLifecycleObserver.h"
9 #include "platform/heap/Handle.h"
10 #include "wtf/Forward.h"
11 #include "wtf/RefCounted.h"
15 class ExecutionContext;
20 // This class observes the service worker's handling of a FetchEvent and
21 // notifies the client.
22 class RespondWithObserver FINAL : public ContextLifecycleObserver, public RefCounted<RespondWithObserver> {
24 static PassRefPtr<RespondWithObserver> create(ExecutionContext*, int eventID);
25 ~RespondWithObserver();
27 virtual void contextDestroyed() OVERRIDE;
29 void didDispatchEvent();
31 // Observes the promise and delays calling didHandleFetchEvent() until the
32 // given promise is resolved or rejected.
33 void respondWith(ScriptState*, const ScriptValue&);
35 void responseWasRejected();
36 void responseWasFulfilled(const ScriptValue&);
41 RespondWithObserver(ExecutionContext*, int eventID);
43 // Sends a response back to the client. The null response means to fallback
45 void sendResponse(PassRefPtrWillBeRawPtr<Response>);
49 enum State { Initial, Pending, Done };
55 #endif // RespondWithObserver_h