Index: Source/modules/fetch/GlobalFetch.cpp |
diff --git a/Source/modules/fetch/GlobalFetch.cpp b/Source/modules/fetch/GlobalFetch.cpp |
index 4e9f9530fd66782aaace923fbf743dd680f06034..9fa26560b9ad73b97dc40488a2662a86d826a23c 100644 |
--- a/Source/modules/fetch/GlobalFetch.cpp |
+++ b/Source/modules/fetch/GlobalFetch.cpp |
@@ -17,109 +17,72 @@ |
namespace blink { |
-namespace { |
- |
-class GlobalFetchImpl final : public NoBaseWillBeGarbageCollectedFinalized<GlobalFetchImpl>, public WillBeHeapSupplement<LocalDOMWindow>, public WillBeHeapSupplement<WorkerGlobalScope> { |
- WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(GlobalFetchImpl); |
-public: |
- static GlobalFetchImpl& from(LocalDOMWindow& supplementable, ExecutionContext* executionContext) |
- { |
- GlobalFetchImpl* supplement = static_cast<GlobalFetchImpl*>(WillBeHeapSupplement<LocalDOMWindow>::from(supplementable, name())); |
- if (!supplement) { |
- supplement = new GlobalFetchImpl(executionContext); |
- WillBeHeapSupplement<LocalDOMWindow>::provideTo(supplementable, name(), adoptPtrWillBeNoop(supplement)); |
- } |
- return *supplement; |
- } |
- |
- static GlobalFetchImpl& from(WorkerGlobalScope& supplementable, ExecutionContext* executionContext) |
- { |
- GlobalFetchImpl* supplement = static_cast<GlobalFetchImpl*>(WillBeHeapSupplement<WorkerGlobalScope>::from(supplementable, name())); |
- if (!supplement) { |
- supplement = new GlobalFetchImpl(executionContext); |
- WillBeHeapSupplement<WorkerGlobalScope>::provideTo(supplementable, name(), adoptPtrWillBeNoop(supplement)); |
- } |
- return *supplement; |
- } |
- |
- ScriptPromise fetch(ScriptState* scriptState, const RequestInfo& input, const Dictionary& init, ExceptionState& exceptionState) |
- { |
- if (m_fetchManager->isStopped()) { |
- exceptionState.throwTypeError("The global scope is shutting down."); |
- return ScriptPromise(); |
- } |
- |
- // "Let |r| be the associated request of the result of invoking the |
- // initial value of Request as constructor with |input| and |init| as |
- // arguments. If this throws an exception, reject |p| with it." |
- Request* r = Request::create(m_stopDetector->executionContext(), input, init, exceptionState); |
- if (exceptionState.hadException()) |
- return ScriptPromise(); |
- return m_fetchManager->fetch(scriptState, r->passRequestData()); |
+GlobalFetch& GlobalFetch::from(LocalDOMWindow& supplementable, ExecutionContext* executionContext) |
+{ |
+ GlobalFetch* supplement = static_cast<GlobalFetch*>(WillBeHeapSupplement<LocalDOMWindow>::from(supplementable, name())); |
+ if (!supplement) { |
+ supplement = new GlobalFetch(executionContext); |
+ WillBeHeapSupplement<LocalDOMWindow>::provideTo(supplementable, name(), adoptPtrWillBeNoop(supplement)); |
} |
+ return *supplement; |
+} |
- DEFINE_INLINE_VIRTUAL_TRACE() |
- { |
- visitor->trace(m_fetchManager); |
- visitor->trace(m_stopDetector); |
- WillBeHeapSupplement<LocalDOMWindow>::trace(visitor); |
- WillBeHeapSupplement<WorkerGlobalScope>::trace(visitor); |
+GlobalFetch& GlobalFetch::from(WorkerGlobalScope& supplementable, ExecutionContext* executionContext) |
+{ |
+ GlobalFetch* supplement = static_cast<GlobalFetch*>(WillBeHeapSupplement<WorkerGlobalScope>::from(supplementable, name())); |
+ if (!supplement) { |
+ supplement = new GlobalFetch(executionContext); |
+ WillBeHeapSupplement<WorkerGlobalScope>::provideTo(supplementable, name(), adoptPtrWillBeNoop(supplement)); |
} |
+ return *supplement; |
+} |
-private: |
- class StopDetector final : public NoBaseWillBeGarbageCollectedFinalized<StopDetector>, public ActiveDOMObject { |
- WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(StopDetector); |
- public: |
- static PassOwnPtrWillBeRawPtr<StopDetector> create(ExecutionContext* executionContext, FetchManager* fetchManager) |
- { |
- return adoptPtrWillBeNoop(new StopDetector(executionContext, fetchManager)); |
- } |
- |
- void stop() override { m_fetchManager->stop(); } |
- |
- DEFINE_INLINE_TRACE() |
- { |
- visitor->trace(m_fetchManager); |
- ActiveDOMObject::trace(visitor); |
- } |
- |
- private: |
- StopDetector(ExecutionContext* executionContext, FetchManager* fetchManager) |
- : ActiveDOMObject(executionContext) |
- , m_fetchManager(fetchManager) |
- { |
- suspendIfNeeded(); |
- } |
- |
- // Having a raw pointer is safe, because |m_fetchManager| is owned by |
- // the owner of this object. |
- RawPtrWillBeMember<FetchManager> m_fetchManager; |
- }; |
- |
- explicit GlobalFetchImpl(ExecutionContext* executionContext) |
- : m_fetchManager(FetchManager::create(executionContext)) |
- , m_stopDetector(StopDetector::create(executionContext, m_fetchManager.get())) |
- { |
+ScriptPromise GlobalFetch::fetch(ScriptState* scriptState, const RequestInfo& input, const Dictionary& init, ExceptionState& exceptionState) |
+{ |
+ if (m_fetchManager->isStopped()) { |
+ exceptionState.throwTypeError("The global scope is shutting down."); |
+ return ScriptPromise(); |
} |
- static const char* name() { return "GlobalFetch"; } |
- OwnPtrWillBeMember<FetchManager> m_fetchManager; |
- OwnPtrWillBeMember<StopDetector> m_stopDetector; |
-}; |
- |
-} // namespace |
+ // "Let |r| be the associated request of the result of invoking the |
+ // initial value of Request as constructor with |input| and |init| as |
+ // arguments. If this throws an exception, reject |p| with it." |
+ Request* r = Request::create(m_stopDetector->executionContext(), input, init, exceptionState); |
+ if (exceptionState.hadException()) |
+ return ScriptPromise(); |
+ return m_fetchManager->fetch(scriptState, r->passRequestData()); |
+} |
ScriptPromise GlobalFetch::fetch(ScriptState* scriptState, DOMWindow& window, const RequestInfo& input, const Dictionary& init, ExceptionState& exceptionState) |
{ |
UseCounter::count(window.executionContext(), UseCounter::Fetch); |
- return GlobalFetchImpl::from(toLocalDOMWindow(window), window.executionContext()).fetch(scriptState, input, init, exceptionState); |
+ return GlobalFetch::from(toLocalDOMWindow(window), window.executionContext()).fetch(scriptState, input, init, exceptionState); |
} |
ScriptPromise GlobalFetch::fetch(ScriptState* scriptState, WorkerGlobalScope& worker, const RequestInfo& input, const Dictionary& init, ExceptionState& exceptionState) |
{ |
// Note that UseCounter doesn't work with SharedWorker or ServiceWorker. |
UseCounter::count(worker.executionContext(), UseCounter::Fetch); |
- return GlobalFetchImpl::from(worker, worker.executionContext()).fetch(scriptState, input, init, exceptionState); |
+ return GlobalFetch::from(worker, worker.executionContext()).fetch(scriptState, input, init, exceptionState); |
+} |
+ |
+GlobalFetch::GlobalFetch(ExecutionContext* executionContext) |
+ : m_fetchManager(FetchManager::create(executionContext)), m_stopDetector(StopDetector::create(executionContext, m_fetchManager.get())) { } |
+ |
+PassOwnPtrWillBeRawPtr<GlobalFetch::StopDetector> GlobalFetch::StopDetector::create(ExecutionContext* executionContext, FetchManager* fetchManager) |
+{ |
+ return adoptPtrWillBeNoop(new StopDetector(executionContext, fetchManager)); |
+} |
+ |
+void GlobalFetch::StopDetector::stop() |
+{ |
+ m_fetchManager->stop(); |
+} |
+ |
+GlobalFetch::StopDetector::StopDetector(ExecutionContext* executionContext, FetchManager* fetchManager) |
+ : ActiveDOMObject(executionContext), m_fetchManager(fetchManager) |
+{ |
+ suspendIfNeeded(); |
} |
} // namespace blink |