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

Side by Side Diff: third_party/WebKit/Source/core/dom/ModulePendingScript.h

Issue 2815453006: Introduce ModulePendingScript (Closed)
Patch Set: Created 3 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
(Empty)
1 #ifndef ModulePendingScript_h
kouhei (in TOK) 2017/04/13 02:25:24 missing the copyright 2017 comment
hiroshige 2017/04/13 17:53:56 Done.
2 #define ModulePendingScript_h
3
4 #include "bindings/core/v8/TraceWrapperMember.h"
5 #include "core/dom/Modulator.h"
6 #include "core/dom/ModuleScript.h"
7 #include "core/dom/PendingScript.h"
8
9 namespace blink {
10
11 class ModulePendingScript;
12
13 // ModulePendingScriptTreeClient is used to connect from Modulator::FetchTree()
14 // to ModulePendingScript. Because ModulePendingScript is created after
15 // Modulator::FetchTree() is called, ModulePendingScriptTreeClient is
16 // registered as ModuleTreeClient to FetchTree() first, and later
17 // ModulePendingScript is supplied to ModulePendingScriptTreeClient via
18 // SetPendingScript() and is notified of module tree load finish.
19 class ModulePendingScriptTreeClient final
20 : public GarbageCollectedFinalized<ModulePendingScriptTreeClient>,
21 public TraceWrapperBase,
kouhei (in TOK) 2017/04/13 02:25:24 This doesn't have to be a TraceWrapperBase as disc
hiroshige 2017/04/13 02:55:37 So, we can avoid TraceWrapperMember<> and TraceWra
hiroshige 2017/04/13 17:53:56 Done. Also created a separate CL for adding commen
22 public ModuleTreeClient {
23 USING_GARBAGE_COLLECTED_MIXIN(ModulePendingScriptTreeClient);
24
25 public:
26 static ModulePendingScriptTreeClient* Create() {
27 return new ModulePendingScriptTreeClient();
28 }
29 virtual ~ModulePendingScriptTreeClient() = default;
30
31 void SetPendingScript(ModulePendingScript* client);
32
33 ModuleScript* GetModuleScript() const { return module_script_; }
34
35 DECLARE_TRACE();
36 DECLARE_TRACE_WRAPPERS();
37
38 private:
39 ModulePendingScriptTreeClient();
40
41 // Implements ModuleTreeClient
42 void NotifyModuleTreeLoadFinished(ModuleScript*) override;
43
44 bool finished_ = false;
45 TraceWrapperMember<ModuleScript> module_script_;
46 TraceWrapperMember<ModulePendingScript> pending_script_;
kouhei (in TOK) 2017/04/13 02:25:24 Ditto
hiroshige 2017/04/13 17:53:56 Done.
47 };
48
49 class CORE_EXPORT ModulePendingScript : public PendingScript {
50 public:
51 static ModulePendingScript* Create(ScriptElementBase* element,
52 ModulePendingScriptTreeClient* client) {
53 return new ModulePendingScript(element, client);
54 }
55
56 ~ModulePendingScript() override;
57
58 void NotifyModuleTreeLoadFinished();
59
60 ModuleScript* GetModuleScript() const {
61 return module_tree_client_->GetModuleScript();
62 }
63
64 DECLARE_TRACE();
65 DECLARE_TRACE_WRAPPERS();
kouhei (in TOK) 2017/04/13 02:25:24 Ditto
hiroshige 2017/04/13 17:53:56 Done.
66
67 private:
68 ModulePendingScript(ScriptElementBase*, ModulePendingScriptTreeClient*);
69
70 // PendingScript
71 ScriptType GetScriptType() const override { return ScriptType::kModule; }
72 Script* GetSource(const KURL& document_url,
73 bool& error_occurred) const override;
74 bool IsReady() const override;
75 KURL Url() const override;
76 bool IsExternal() const override { return true; }
77 bool ErrorOccurred() const override;
78 bool WasCanceled() const override;
79 void StartStreamingIfPossible(Document*, ScriptStreamer::Type) override;
80 void DisposeInternal() override;
81 void RemoveFromMemoryCache() override { NOTREACHED(); }
82
83 // FOXME: state check?
84 void CheckState() const override {}
85
86 TraceWrapperMember<ModulePendingScriptTreeClient> module_tree_client_;
87 bool finished_ = false;
88 };
89
90 } // namespace blink
91
92 #endif // ModulePendingScript_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/dom/BUILD.gn ('k') | third_party/WebKit/Source/core/dom/ModulePendingScript.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698