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

Side by Side Diff: Source/modules/fetch/FetchManager.cpp

Issue 1233173002: Have ScriptPromiseResolver on the Oilpan heap always. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: smaller review updates Created 5 years, 5 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 "config.h" 5 #include "config.h"
6 #include "modules/fetch/FetchManager.h" 6 #include "modules/fetch/FetchManager.h"
7 7
8 #include "bindings/core/v8/ExceptionState.h" 8 #include "bindings/core/v8/ExceptionState.h"
9 #include "bindings/core/v8/ScriptPromiseResolver.h" 9 #include "bindings/core/v8/ScriptPromiseResolver.h"
10 #include "bindings/core/v8/ScriptState.h" 10 #include "bindings/core/v8/ScriptState.h"
(...skipping 21 matching lines...) Expand all
32 #include "platform/network/ResourceResponse.h" 32 #include "platform/network/ResourceResponse.h"
33 #include "platform/weborigin/SecurityOrigin.h" 33 #include "platform/weborigin/SecurityOrigin.h"
34 #include "public/platform/WebURLRequest.h" 34 #include "public/platform/WebURLRequest.h"
35 #include "wtf/HashSet.h" 35 #include "wtf/HashSet.h"
36 36
37 namespace blink { 37 namespace blink {
38 38
39 class FetchManager::Loader final : public NoBaseWillBeGarbageCollectedFinalized< FetchManager::Loader>, public ThreadableLoaderClient, public ContextLifecycleObs erver { 39 class FetchManager::Loader final : public NoBaseWillBeGarbageCollectedFinalized< FetchManager::Loader>, public ThreadableLoaderClient, public ContextLifecycleObs erver {
40 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(FetchManager::Loader); 40 WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(FetchManager::Loader);
41 public: 41 public:
42 static PassOwnPtrWillBeRawPtr<Loader> create(ExecutionContext* executionCont ext, FetchManager* fetchManager, PassRefPtrWillBeRawPtr<ScriptPromiseResolver> r esolver, FetchRequestData* request) 42 static PassOwnPtrWillBeRawPtr<Loader> create(ExecutionContext* executionCont ext, FetchManager* fetchManager, ScriptPromiseResolver* resolver, FetchRequestDa ta* request)
43 { 43 {
44 return adoptPtrWillBeNoop(new Loader(executionContext, fetchManager, res olver, request)); 44 return adoptPtrWillBeNoop(new Loader(executionContext, fetchManager, res olver, request));
45 } 45 }
46 46
47 ~Loader() override; 47 ~Loader() override;
48 DECLARE_VIRTUAL_TRACE(); 48 DECLARE_VIRTUAL_TRACE();
49 49
50 void didReceiveResponse(unsigned long, const ResourceResponse&, PassOwnPtr<W ebDataConsumerHandle>) override; 50 void didReceiveResponse(unsigned long, const ResourceResponse&, PassOwnPtr<W ebDataConsumerHandle>) override;
51 void didFinishLoading(unsigned long, double) override; 51 void didFinishLoading(unsigned long, double) override;
52 void didFail(const ResourceError&) override; 52 void didFail(const ResourceError&) override;
53 void didFailAccessControlCheck(const ResourceError&) override; 53 void didFailAccessControlCheck(const ResourceError&) override;
54 void didFailRedirectCheck() override; 54 void didFailRedirectCheck() override;
55 55
56 void start(); 56 void start();
57 void dispose(); 57 void dispose();
58 58
59 private: 59 private:
60 Loader(ExecutionContext*, FetchManager*, PassRefPtrWillBeRawPtr<ScriptPromis eResolver>, FetchRequestData*); 60 Loader(ExecutionContext*, FetchManager*, ScriptPromiseResolver*, FetchReques tData*);
61 61
62 void performBasicFetch(); 62 void performBasicFetch();
63 void performNetworkError(const String& message); 63 void performNetworkError(const String& message);
64 void performHTTPFetch(bool corsFlag, bool corsPreflightFlag); 64 void performHTTPFetch(bool corsFlag, bool corsPreflightFlag);
65 void failed(const String& message); 65 void failed(const String& message);
66 void notifyFinished(); 66 void notifyFinished();
67 Document* document() const; 67 Document* document() const;
68 68
69 RawPtrWillBeMember<FetchManager> m_fetchManager; 69 RawPtrWillBeMember<FetchManager> m_fetchManager;
70 RefPtrWillBeMember<ScriptPromiseResolver> m_resolver; 70 PersistentWillBeMember<ScriptPromiseResolver> m_resolver;
71 PersistentWillBeMember<FetchRequestData> m_request; 71 PersistentWillBeMember<FetchRequestData> m_request;
72 RefPtr<ThreadableLoader> m_loader; 72 RefPtr<ThreadableLoader> m_loader;
73 bool m_failed; 73 bool m_failed;
74 bool m_finished; 74 bool m_finished;
75 int m_responseHttpStatusCode; 75 int m_responseHttpStatusCode;
76 }; 76 };
77 77
78 FetchManager::Loader::Loader(ExecutionContext* executionContext, FetchManager* f etchManager, PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolver, FetchReques tData* request) 78 FetchManager::Loader::Loader(ExecutionContext* executionContext, FetchManager* f etchManager, ScriptPromiseResolver* resolver, FetchRequestData* request)
79 : ContextLifecycleObserver(executionContext) 79 : ContextLifecycleObserver(executionContext)
80 , m_fetchManager(fetchManager) 80 , m_fetchManager(fetchManager)
81 , m_resolver(resolver) 81 , m_resolver(resolver)
82 , m_request(request) 82 , m_request(request)
83 , m_failed(false) 83 , m_failed(false)
84 , m_finished(false) 84 , m_finished(false)
85 , m_responseHttpStatusCode(0) 85 , m_responseHttpStatusCode(0)
86 { 86 {
87 } 87 }
88 88
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 FetchManager::~FetchManager() 418 FetchManager::~FetchManager()
419 { 419 {
420 #if !ENABLE(OILPAN) 420 #if !ENABLE(OILPAN)
421 if (!m_isStopped) 421 if (!m_isStopped)
422 stop(); 422 stop();
423 #endif 423 #endif
424 } 424 }
425 425
426 ScriptPromise FetchManager::fetch(ScriptState* scriptState, FetchRequestData* re quest) 426 ScriptPromise FetchManager::fetch(ScriptState* scriptState, FetchRequestData* re quest)
427 { 427 {
428 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver:: create(scriptState); 428 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
429 ScriptPromise promise = resolver->promise(); 429 ScriptPromise promise = resolver->promise();
430 430
431 request->setContext(WebURLRequest::RequestContextFetch); 431 request->setContext(WebURLRequest::RequestContextFetch);
432 432
433 OwnPtrWillBeRawPtr<Loader> ownLoader = Loader::create(m_executionContext, th is, resolver.release(), request); 433 OwnPtrWillBeRawPtr<Loader> ownLoader = Loader::create(m_executionContext, th is, resolver, request);
434 Loader* loader = m_loaders.add(ownLoader.release()).storedValue->get(); 434 Loader* loader = m_loaders.add(ownLoader.release()).storedValue->get();
435 loader->start(); 435 loader->start();
436 return promise; 436 return promise;
437 } 437 }
438 438
439 void FetchManager::stop() 439 void FetchManager::stop()
440 { 440 {
441 ASSERT(!m_isStopped); 441 ASSERT(!m_isStopped);
442 m_isStopped = true; 442 m_isStopped = true;
443 for (auto& loader : m_loaders) 443 for (auto& loader : m_loaders)
(...skipping 10 matching lines...) Expand all
454 454
455 DEFINE_TRACE(FetchManager) 455 DEFINE_TRACE(FetchManager)
456 { 456 {
457 #if ENABLE(OILPAN) 457 #if ENABLE(OILPAN)
458 visitor->trace(m_executionContext); 458 visitor->trace(m_executionContext);
459 visitor->trace(m_loaders); 459 visitor->trace(m_loaders);
460 #endif 460 #endif
461 } 461 }
462 462
463 } // namespace blink 463 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698