Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(376)

Side by Side Diff: third_party/WebKit/Source/modules/fetch/GlobalFetch.cpp

Issue 1846913009: HeapSupplements are now just Supplements. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "modules/fetch/GlobalFetch.h" 5 #include "modules/fetch/GlobalFetch.h"
6 6
7 #include "core/frame/LocalDOMWindow.h" 7 #include "core/frame/LocalDOMWindow.h"
8 #include "core/frame/UseCounter.h" 8 #include "core/frame/UseCounter.h"
9 #include "core/workers/WorkerGlobalScope.h" 9 #include "core/workers/WorkerGlobalScope.h"
10 #include "modules/fetch/FetchManager.h" 10 #include "modules/fetch/FetchManager.h"
11 #include "modules/fetch/Request.h" 11 #include "modules/fetch/Request.h"
12 #include "platform/Supplementable.h" 12 #include "platform/Supplementable.h"
13 #include "platform/heap/Handle.h" 13 #include "platform/heap/Handle.h"
14 #include "wtf/OwnPtr.h" 14 #include "wtf/OwnPtr.h"
15 15
16 namespace blink { 16 namespace blink {
17 17
18 namespace { 18 namespace {
19 19
20 template <typename T> 20 template <typename T>
21 class GlobalFetchImpl final : public GarbageCollectedFinalized<GlobalFetchImpl<T >>, public GlobalFetch::ScopedFetcher, public HeapSupplement<T> { 21 class GlobalFetchImpl final : public GarbageCollectedFinalized<GlobalFetchImpl<T >>, public GlobalFetch::ScopedFetcher, public Supplement<T> {
22 USING_GARBAGE_COLLECTED_MIXIN(GlobalFetchImpl); 22 USING_GARBAGE_COLLECTED_MIXIN(GlobalFetchImpl);
23 public: 23 public:
24 static RawPtr<ScopedFetcher> from(T& supplementable, ExecutionContext* execu tionContext) 24 static RawPtr<ScopedFetcher> from(T& supplementable, ExecutionContext* execu tionContext)
25 { 25 {
26 GlobalFetchImpl* supplement = static_cast<GlobalFetchImpl*>(HeapSuppleme nt<T>::from(supplementable, supplementName())); 26 GlobalFetchImpl* supplement = static_cast<GlobalFetchImpl*>(Supplement<T >::from(supplementable, supplementName()));
27 if (!supplement) { 27 if (!supplement) {
28 supplement = new GlobalFetchImpl(executionContext); 28 supplement = new GlobalFetchImpl(executionContext);
29 HeapSupplement<T>::provideTo(supplementable, supplementName(), suppl ement); 29 Supplement<T>::provideTo(supplementable, supplementName(), supplemen t);
30 } 30 }
31 #if ENABLE(OILPAN)
32 return supplement; 31 return supplement;
33 #else
34 return supplement->m_weakFactory.createWeakPtr();
35 #endif
36 } 32 }
37 33
38 ScriptPromise fetch(ScriptState* scriptState, const RequestInfo& input, cons t Dictionary& init, ExceptionState& exceptionState) override 34 ScriptPromise fetch(ScriptState* scriptState, const RequestInfo& input, cons t Dictionary& init, ExceptionState& exceptionState) override
39 { 35 {
40 if (m_fetchManager->isStopped()) { 36 if (m_fetchManager->isStopped()) {
41 exceptionState.throwTypeError("The global scope is shutting down."); 37 exceptionState.throwTypeError("The global scope is shutting down.");
42 return ScriptPromise(); 38 return ScriptPromise();
43 } 39 }
44 40
45 // "Let |r| be the associated request of the result of invoking the 41 // "Let |r| be the associated request of the result of invoking the
46 // initial value of Request as constructor with |input| and |init| as 42 // initial value of Request as constructor with |input| and |init| as
47 // arguments. If this throws an exception, reject |p| with it." 43 // arguments. If this throws an exception, reject |p| with it."
48 Request* r = Request::create(scriptState, input, init, exceptionState); 44 Request* r = Request::create(scriptState, input, init, exceptionState);
49 if (exceptionState.hadException()) 45 if (exceptionState.hadException())
50 return ScriptPromise(); 46 return ScriptPromise();
51 return m_fetchManager->fetch(scriptState, r->passRequestData()); 47 return m_fetchManager->fetch(scriptState, r->passRequestData());
52 } 48 }
53 49
54 DEFINE_INLINE_VIRTUAL_TRACE() 50 DEFINE_INLINE_VIRTUAL_TRACE()
55 { 51 {
56 visitor->trace(m_fetchManager); 52 visitor->trace(m_fetchManager);
57 ScopedFetcher::trace(visitor); 53 ScopedFetcher::trace(visitor);
58 HeapSupplement<T>::trace(visitor); 54 Supplement<T>::trace(visitor);
59 } 55 }
60 56
61 private: 57 private:
62 explicit GlobalFetchImpl(ExecutionContext* executionContext) 58 explicit GlobalFetchImpl(ExecutionContext* executionContext)
63 : m_fetchManager(FetchManager::create(executionContext)) 59 : m_fetchManager(FetchManager::create(executionContext))
64 #if !ENABLE(OILPAN)
65 , m_weakFactory(this)
66 #endif
67 { 60 {
68 } 61 }
62
69 static const char* supplementName() { return "GlobalFetch"; } 63 static const char* supplementName() { return "GlobalFetch"; }
70 64
71 Member<FetchManager> m_fetchManager; 65 Member<FetchManager> m_fetchManager;
72 #if !ENABLE(OILPAN)
73 WeakPtrFactory<ScopedFetcher> m_weakFactory;
74 #endif
75 }; 66 };
76 67
77 } // namespace 68 } // namespace
78 69
79 GlobalFetch::ScopedFetcher::~ScopedFetcher() 70 GlobalFetch::ScopedFetcher::~ScopedFetcher()
80 { 71 {
81 } 72 }
82 73
83 RawPtr<GlobalFetch::ScopedFetcher> GlobalFetch::ScopedFetcher::from(DOMWindow& w indow) 74 RawPtr<GlobalFetch::ScopedFetcher> GlobalFetch::ScopedFetcher::from(DOMWindow& w indow)
84 { 75 {
(...skipping 16 matching lines...) Expand all
101 } 92 }
102 93
103 ScriptPromise GlobalFetch::fetch(ScriptState* scriptState, WorkerGlobalScope& wo rker, const RequestInfo& input, const Dictionary& init, ExceptionState& exceptio nState) 94 ScriptPromise GlobalFetch::fetch(ScriptState* scriptState, WorkerGlobalScope& wo rker, const RequestInfo& input, const Dictionary& init, ExceptionState& exceptio nState)
104 { 95 {
105 // Note that UseCounter doesn't work with SharedWorker or ServiceWorker. 96 // Note that UseCounter doesn't work with SharedWorker or ServiceWorker.
106 UseCounter::count(worker.getExecutionContext(), UseCounter::Fetch); 97 UseCounter::count(worker.getExecutionContext(), UseCounter::Fetch);
107 return ScopedFetcher::from(worker)->fetch(scriptState, input, init, exceptio nState); 98 return ScopedFetcher::from(worker)->fetch(scriptState, input, init, exceptio nState);
108 } 99 }
109 100
110 } // namespace blink 101 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698