OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "config.h" | 5 #include "config.h" |
6 #include "modules/serviceworkers/WaitUntilObserver.h" | 6 #include "modules/serviceworkers/WaitUntilObserver.h" |
7 | 7 |
8 #include "bindings/v8/ScriptFunction.h" | 8 #include "bindings/v8/ScriptFunction.h" |
9 #include "bindings/v8/ScriptPromise.h" | 9 #include "bindings/v8/ScriptPromise.h" |
10 #include "bindings/v8/ScriptValue.h" | 10 #include "bindings/v8/ScriptValue.h" |
11 #include "core/dom/ExecutionContext.h" | 11 #include "core/dom/ExecutionContext.h" |
12 #include "platform/NotImplemented.h" | 12 #include "platform/NotImplemented.h" |
| 13 #include "public/platform/WebServiceWorkerEventResult.h" |
13 #include "wtf/Assertions.h" | 14 #include "wtf/Assertions.h" |
14 #include "wtf/RefCounted.h" | 15 #include "wtf/RefCounted.h" |
15 #include "wtf/RefPtr.h" | 16 #include "wtf/RefPtr.h" |
16 | 17 |
17 namespace WebCore { | 18 namespace WebCore { |
18 | 19 |
19 class WaitUntilObserver::ThenFunction FINAL : public ScriptFunction { | 20 class WaitUntilObserver::ThenFunction FINAL : public ScriptFunction { |
20 public: | 21 public: |
21 enum ResolveType { | 22 enum ResolveType { |
22 Fulfilled, | 23 Fulfilled, |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
77 incrementPendingActivity(); | 78 incrementPendingActivity(); |
78 ScriptPromise::cast(value).then( | 79 ScriptPromise::cast(value).then( |
79 ThenFunction::create(this, ThenFunction::Fulfilled), | 80 ThenFunction::create(this, ThenFunction::Fulfilled), |
80 ThenFunction::create(this, ThenFunction::Rejected)); | 81 ThenFunction::create(this, ThenFunction::Rejected)); |
81 } | 82 } |
82 | 83 |
83 WaitUntilObserver::WaitUntilObserver(ExecutionContext* context, int eventID) | 84 WaitUntilObserver::WaitUntilObserver(ExecutionContext* context, int eventID) |
84 : ContextLifecycleObserver(context) | 85 : ContextLifecycleObserver(context) |
85 , m_eventID(eventID) | 86 , m_eventID(eventID) |
86 , m_pendingActivity(0) | 87 , m_pendingActivity(0) |
| 88 , m_hasError(false) |
87 { | 89 { |
88 } | 90 } |
89 | 91 |
90 void WaitUntilObserver::reportError(const ScriptValue& value) | 92 void WaitUntilObserver::reportError(const ScriptValue& value) |
91 { | 93 { |
92 // FIXME: Propagate error message to the client for onerror handling. | 94 // FIXME: Propagate error message to the client for onerror handling. |
93 notImplemented(); | 95 notImplemented(); |
| 96 |
| 97 m_hasError = true; |
94 } | 98 } |
95 | 99 |
96 void WaitUntilObserver::incrementPendingActivity() | 100 void WaitUntilObserver::incrementPendingActivity() |
97 { | 101 { |
98 ++m_pendingActivity; | 102 ++m_pendingActivity; |
99 } | 103 } |
100 | 104 |
101 void WaitUntilObserver::decrementPendingActivity() | 105 void WaitUntilObserver::decrementPendingActivity() |
102 { | 106 { |
103 ASSERT(m_pendingActivity > 0); | 107 ASSERT(m_pendingActivity > 0); |
104 if (--m_pendingActivity || !executionContext()) | 108 if (--m_pendingActivity || !executionContext()) |
105 return; | 109 return; |
106 | 110 |
107 ServiceWorkerGlobalScopeClient::from(executionContext())->didHandleInstallEv
ent(m_eventID); | 111 blink::WebServiceWorkerEventResult result = m_hasError ? blink::WebServiceWo
rkerEventResultRejected : blink::WebServiceWorkerEventResultCompleted; |
| 112 ServiceWorkerGlobalScopeClient::from(executionContext())->didHandleInstallEv
ent(m_eventID, result); |
108 observeContext(0); | 113 observeContext(0); |
109 } | 114 } |
110 | 115 |
111 } // namespace WebCore | 116 } // namespace WebCore |
OLD | NEW |