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 "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/inspector/InspectorInstrumentation.h" | 9 #include "core/inspector/InspectorInstrumentation.h" |
10 #include "core/workers/WorkerGlobalScope.h" | 10 #include "core/workers/WorkerGlobalScope.h" |
(...skipping 22 matching lines...) Expand all Loading... |
33 supplement = new GlobalFetchImpl(executionContext); | 33 supplement = new GlobalFetchImpl(executionContext); |
34 Supplement<T>::provideTo(supplementable, supplementName(), supplement); | 34 Supplement<T>::provideTo(supplementable, supplementName(), supplement); |
35 } | 35 } |
36 return supplement; | 36 return supplement; |
37 } | 37 } |
38 | 38 |
39 ScriptPromise fetch(ScriptState* scriptState, | 39 ScriptPromise fetch(ScriptState* scriptState, |
40 const RequestInfo& input, | 40 const RequestInfo& input, |
41 const Dictionary& init, | 41 const Dictionary& init, |
42 ExceptionState& exceptionState) override { | 42 ExceptionState& exceptionState) override { |
43 if (!scriptState->contextIsValid()) { | 43 ExecutionContext* executionContext = m_fetchManager->getExecutionContext(); |
| 44 if (!scriptState->contextIsValid() || !executionContext) { |
44 // TODO(yhirano): Should this be moved to bindings? | 45 // TODO(yhirano): Should this be moved to bindings? |
45 exceptionState.throwTypeError("The global scope is shutting down."); | 46 exceptionState.throwTypeError("The global scope is shutting down."); |
46 return ScriptPromise(); | 47 return ScriptPromise(); |
47 } | 48 } |
48 | 49 |
49 // "Let |r| be the associated request of the result of invoking the | 50 // "Let |r| be the associated request of the result of invoking the |
50 // initial value of Request as constructor with |input| and |init| as | 51 // initial value of Request as constructor with |input| and |init| as |
51 // arguments. If this throws an exception, reject |p| with it." | 52 // arguments. If this throws an exception, reject |p| with it." |
52 Request* r = Request::create(scriptState, input, init, exceptionState); | 53 Request* r = Request::create(scriptState, input, init, exceptionState); |
53 if (exceptionState.hadException()) | 54 if (exceptionState.hadException()) |
54 return ScriptPromise(); | 55 return ScriptPromise(); |
55 | 56 |
56 if (ExecutionContext* executionContext = | 57 InspectorInstrumentation::willSendXMLHttpOrFetchNetworkRequest( |
57 m_fetchManager->getExecutionContext()) | 58 executionContext, r->url()); |
58 InspectorInstrumentation::willSendXMLHttpOrFetchNetworkRequest( | |
59 executionContext, r->url()); | |
60 return m_fetchManager->fetch(scriptState, r->passRequestData(scriptState)); | 59 return m_fetchManager->fetch(scriptState, r->passRequestData(scriptState)); |
61 } | 60 } |
62 | 61 |
63 DEFINE_INLINE_VIRTUAL_TRACE() { | 62 DEFINE_INLINE_VIRTUAL_TRACE() { |
64 visitor->trace(m_fetchManager); | 63 visitor->trace(m_fetchManager); |
65 ScopedFetcher::trace(visitor); | 64 ScopedFetcher::trace(visitor); |
66 Supplement<T>::trace(visitor); | 65 Supplement<T>::trace(visitor); |
67 } | 66 } |
68 | 67 |
69 private: | 68 private: |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
108 const RequestInfo& input, | 107 const RequestInfo& input, |
109 const Dictionary& init, | 108 const Dictionary& init, |
110 ExceptionState& exceptionState) { | 109 ExceptionState& exceptionState) { |
111 // Note that UseCounter doesn't work with SharedWorker or ServiceWorker. | 110 // Note that UseCounter doesn't work with SharedWorker or ServiceWorker. |
112 UseCounter::count(worker.getExecutionContext(), UseCounter::Fetch); | 111 UseCounter::count(worker.getExecutionContext(), UseCounter::Fetch); |
113 return ScopedFetcher::from(worker)->fetch(scriptState, input, init, | 112 return ScopedFetcher::from(worker)->fetch(scriptState, input, init, |
114 exceptionState); | 113 exceptionState); |
115 } | 114 } |
116 | 115 |
117 } // namespace blink | 116 } // namespace blink |
OLD | NEW |