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 #ifndef ScriptStreamer_h | 5 #ifndef ScriptStreamer_h |
6 #define ScriptStreamer_h | 6 #define ScriptStreamer_h |
7 | 7 |
8 #include "core/CoreExport.h" | 8 #include "core/CoreExport.h" |
9 #include "platform/heap/Handle.h" | 9 #include "platform/heap/Handle.h" |
10 #include "wtf/Noncopyable.h" | 10 #include "wtf/Noncopyable.h" |
(...skipping 27 matching lines...) Expand all Loading... |
38 | 38 |
39 ~ScriptStreamer(); | 39 ~ScriptStreamer(); |
40 DECLARE_TRACE(); | 40 DECLARE_TRACE(); |
41 | 41 |
42 // Launches a task (on a background thread) which will stream the given | 42 // Launches a task (on a background thread) which will stream the given |
43 // PendingScript into V8 as it loads. | 43 // PendingScript into V8 as it loads. |
44 static void startStreaming(PendingScript*, | 44 static void startStreaming(PendingScript*, |
45 Type, | 45 Type, |
46 Settings*, | 46 Settings*, |
47 ScriptState*, | 47 ScriptState*, |
48 WebTaskRunner*); | 48 RefPtr<WebTaskRunner>); |
49 | 49 |
50 // Returns false if we cannot stream the given encoding. | 50 // Returns false if we cannot stream the given encoding. |
51 static bool convertEncoding(const char* encodingName, | 51 static bool convertEncoding(const char* encodingName, |
52 v8::ScriptCompiler::StreamedSource::Encoding*); | 52 v8::ScriptCompiler::StreamedSource::Encoding*); |
53 | 53 |
54 bool isFinished() const; | 54 bool isFinished() const; |
55 | 55 |
56 v8::ScriptCompiler::StreamedSource* source() { return m_source.get(); } | 56 v8::ScriptCompiler::StreamedSource* source() { return m_source.get(); } |
57 ScriptResource* resource() const { return m_resource; } | 57 ScriptResource* resource() const { return m_resource; } |
58 | 58 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 private: | 101 private: |
102 // Scripts whose first data chunk is smaller than this constant won't be | 102 // Scripts whose first data chunk is smaller than this constant won't be |
103 // streamed. Non-const for testing. | 103 // streamed. Non-const for testing. |
104 static size_t s_smallScriptThreshold; | 104 static size_t s_smallScriptThreshold; |
105 | 105 |
106 static ScriptStreamer* create( | 106 static ScriptStreamer* create( |
107 PendingScript* script, | 107 PendingScript* script, |
108 Type scriptType, | 108 Type scriptType, |
109 ScriptState* scriptState, | 109 ScriptState* scriptState, |
110 v8::ScriptCompiler::CompileOptions compileOptions, | 110 v8::ScriptCompiler::CompileOptions compileOptions, |
111 WebTaskRunner* loadingTaskRunner) { | 111 RefPtr<WebTaskRunner> loadingTaskRunner) { |
112 return new ScriptStreamer(script, scriptType, scriptState, compileOptions, | 112 return new ScriptStreamer(script, scriptType, scriptState, compileOptions, |
113 loadingTaskRunner); | 113 std::move(loadingTaskRunner)); |
114 } | 114 } |
115 ScriptStreamer(PendingScript*, | 115 ScriptStreamer(PendingScript*, |
116 Type, | 116 Type, |
117 ScriptState*, | 117 ScriptState*, |
118 v8::ScriptCompiler::CompileOptions, | 118 v8::ScriptCompiler::CompileOptions, |
119 WebTaskRunner*); | 119 RefPtr<WebTaskRunner>); |
120 | 120 |
121 void streamingComplete(); | 121 void streamingComplete(); |
122 void notifyFinishedToClient(); | 122 void notifyFinishedToClient(); |
123 | 123 |
124 static bool startStreamingInternal(PendingScript*, | 124 static bool startStreamingInternal(PendingScript*, |
125 Type, | 125 Type, |
126 Settings*, | 126 Settings*, |
127 ScriptState*, | 127 ScriptState*, |
128 WebTaskRunner*); | 128 RefPtr<WebTaskRunner>); |
129 | 129 |
130 Member<PendingScript> m_pendingScript; | 130 Member<PendingScript> m_pendingScript; |
131 // This pointer is weak. If PendingScript and its Resource are deleted | 131 // This pointer is weak. If PendingScript and its Resource are deleted |
132 // before ScriptStreamer, PendingScript will notify ScriptStreamer of its | 132 // before ScriptStreamer, PendingScript will notify ScriptStreamer of its |
133 // deletion by calling cancel(). | 133 // deletion by calling cancel(). |
134 Member<ScriptResource> m_resource; | 134 Member<ScriptResource> m_resource; |
135 // Whether ScriptStreamer is detached from the Resource. In those cases, the | 135 // Whether ScriptStreamer is detached from the Resource. In those cases, the |
136 // script data is not needed any more, and the client won't get notified | 136 // script data is not needed any more, and the client won't get notified |
137 // when the loading and streaming are done. | 137 // when the loading and streaming are done. |
138 bool m_detached; | 138 bool m_detached; |
(...skipping 23 matching lines...) Expand all Loading... |
162 const String m_scriptURLString; | 162 const String m_scriptURLString; |
163 | 163 |
164 // Keep the script resource dentifier for event tracing. | 164 // Keep the script resource dentifier for event tracing. |
165 const unsigned long m_scriptResourceIdentifier; | 165 const unsigned long m_scriptResourceIdentifier; |
166 | 166 |
167 mutable Mutex m_mutex; | 167 mutable Mutex m_mutex; |
168 | 168 |
169 // Encoding of the streamed script. Saved for sanity checking purposes. | 169 // Encoding of the streamed script. Saved for sanity checking purposes. |
170 v8::ScriptCompiler::StreamedSource::Encoding m_encoding; | 170 v8::ScriptCompiler::StreamedSource::Encoding m_encoding; |
171 | 171 |
172 std::unique_ptr<WebTaskRunner> m_loadingTaskRunner; | 172 RefPtr<WebTaskRunner> m_loadingTaskRunner; |
173 }; | 173 }; |
174 | 174 |
175 } // namespace blink | 175 } // namespace blink |
176 | 176 |
177 #endif // ScriptStreamer_h | 177 #endif // ScriptStreamer_h |
OLD | NEW |