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

Side by Side Diff: third_party/WebKit/Source/core/streams/ReadableStreamOperations.cpp

Issue 2200303003: Remove v8CallOrCrash (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: temp Created 4 years, 4 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "core/streams/ReadableStreamOperations.h" 5 #include "core/streams/ReadableStreamOperations.h"
6 6
7 #include "bindings/core/v8/ExceptionState.h" 7 #include "bindings/core/v8/ExceptionState.h"
8 #include "bindings/core/v8/ScriptState.h" 8 #include "bindings/core/v8/ScriptState.h"
9 #include "bindings/core/v8/ToV8.h" 9 #include "bindings/core/v8/ToV8.h"
10 #include "bindings/core/v8/V8ScriptRunner.h" 10 #include "bindings/core/v8/V8ScriptRunner.h"
(...skipping 20 matching lines...) Expand all
31 ScriptValue ReadableStreamOperations::createReadableStream(ScriptState* scriptSt ate, UnderlyingSourceBase* underlyingSource, ScriptValue strategy) 31 ScriptValue ReadableStreamOperations::createReadableStream(ScriptState* scriptSt ate, UnderlyingSourceBase* underlyingSource, ScriptValue strategy)
32 { 32 {
33 if (isTerminating(scriptState)) 33 if (isTerminating(scriptState))
34 return ScriptValue(); 34 return ScriptValue();
35 ScriptState::Scope scope(scriptState); 35 ScriptState::Scope scope(scriptState);
36 36
37 v8::Local<v8::Value> jsUnderlyingSource = toV8(underlyingSource, scriptState ); 37 v8::Local<v8::Value> jsUnderlyingSource = toV8(underlyingSource, scriptState );
38 v8::Local<v8::Value> jsStrategy = strategy.v8Value(); 38 v8::Local<v8::Value> jsStrategy = strategy.v8Value();
39 v8::Local<v8::Value> args[] = { jsUnderlyingSource, jsStrategy }; 39 v8::Local<v8::Value> args[] = { jsUnderlyingSource, jsStrategy };
40 v8::MaybeLocal<v8::Value> jsStream = V8ScriptRunner::callExtra(scriptState, "createReadableStreamWithExternalController", args); 40 v8::MaybeLocal<v8::Value> jsStream = V8ScriptRunner::callExtra(scriptState, "createReadableStreamWithExternalController", args);
41 if (isTerminating(scriptState)) 41 if (isTerminating(scriptState))
haraken 2016/08/03 09:02:12 yhirano@, nhiroki@: Now that nhiroki@ removed the
yhirano 2016/08/03 09:07:37 We don't need them. I haven't done modules/fetch a
42 return ScriptValue(); 42 return ScriptValue();
43 return ScriptValue(scriptState, v8CallOrCrash(jsStream)); 43 return ScriptValue(scriptState, jsStream.ToLocalChecked());
44 } 44 }
45 45
46 ScriptValue ReadableStreamOperations::createCountQueuingStrategy(ScriptState* sc riptState, size_t highWaterMark) 46 ScriptValue ReadableStreamOperations::createCountQueuingStrategy(ScriptState* sc riptState, size_t highWaterMark)
47 { 47 {
48 if (isTerminating(scriptState)) 48 if (isTerminating(scriptState))
49 return ScriptValue(); 49 return ScriptValue();
50 ScriptState::Scope scope(scriptState); 50 ScriptState::Scope scope(scriptState);
51 51
52 v8::Local<v8::Value> args[] = { v8::Number::New(scriptState->isolate(), high WaterMark) }; 52 v8::Local<v8::Value> args[] = { v8::Number::New(scriptState->isolate(), high WaterMark) };
53 v8::MaybeLocal<v8::Value> jsStrategy = V8ScriptRunner::callExtra(scriptState , "createBuiltInCountQueuingStrategy", args); 53 v8::MaybeLocal<v8::Value> jsStrategy = V8ScriptRunner::callExtra(scriptState , "createBuiltInCountQueuingStrategy", args);
54 if (isTerminating(scriptState)) 54 if (isTerminating(scriptState))
55 return ScriptValue(); 55 return ScriptValue();
56 56
57 return ScriptValue(scriptState, v8CallOrCrash(jsStrategy)); 57 return ScriptValue(scriptState, jsStrategy.ToLocalChecked());
58 } 58 }
59 59
60 ScriptValue ReadableStreamOperations::getReader(ScriptState* scriptState, Script Value stream, ExceptionState& es) 60 ScriptValue ReadableStreamOperations::getReader(ScriptState* scriptState, Script Value stream, ExceptionState& es)
61 { 61 {
62 if (isTerminating(scriptState)) 62 if (isTerminating(scriptState))
63 return ScriptValue(); 63 return ScriptValue();
64 ASSERT(isReadableStream(scriptState, stream)); 64 ASSERT(isReadableStream(scriptState, stream));
65 65
66 v8::TryCatch block(scriptState->isolate()); 66 v8::TryCatch block(scriptState->isolate());
67 v8::Local<v8::Value> args[] = { stream.v8Value() }; 67 v8::Local<v8::Value> args[] = { stream.v8Value() };
68 ScriptValue result(scriptState, V8ScriptRunner::callExtra(scriptState, "Acqu ireReadableStreamDefaultReader", args)); 68 ScriptValue result(scriptState, V8ScriptRunner::callExtra(scriptState, "Acqu ireReadableStreamDefaultReader", args));
69 if (block.HasCaught()) 69 if (block.HasCaught())
70 es.rethrowV8Exception(block.Exception()); 70 es.rethrowV8Exception(block.Exception());
71 return result; 71 return result;
72 } 72 }
73 73
74 bool ReadableStreamOperations::isReadableStream(ScriptState* scriptState, Script Value value) 74 bool ReadableStreamOperations::isReadableStream(ScriptState* scriptState, Script Value value)
75 { 75 {
76 if (isTerminating(scriptState)) 76 if (isTerminating(scriptState))
77 return true; 77 return true;
78 ASSERT(!value.isEmpty()); 78 ASSERT(!value.isEmpty());
79 79
80 if (!value.isObject()) 80 if (!value.isObject())
81 return false; 81 return false;
82 82
83 v8::Local<v8::Value> args[] = { value.v8Value() }; 83 v8::Local<v8::Value> args[] = { value.v8Value() };
84 v8::MaybeLocal<v8::Value> result = V8ScriptRunner::callExtra(scriptState, "I sReadableStream", args); 84 v8::MaybeLocal<v8::Value> result = V8ScriptRunner::callExtra(scriptState, "I sReadableStream", args);
85 if (isTerminating(scriptState)) 85 if (isTerminating(scriptState))
86 return true; 86 return true;
87 return v8CallOrCrash(result)->ToBoolean()->Value(); 87 return result.ToLocalChecked()->ToBoolean()->Value();
88 } 88 }
89 89
90 bool ReadableStreamOperations::isDisturbed(ScriptState* scriptState, ScriptValue stream) 90 bool ReadableStreamOperations::isDisturbed(ScriptState* scriptState, ScriptValue stream)
91 { 91 {
92 if (isTerminating(scriptState)) 92 if (isTerminating(scriptState))
93 return true; 93 return true;
94 ASSERT(isReadableStream(scriptState, stream)); 94 ASSERT(isReadableStream(scriptState, stream));
95 95
96 v8::Local<v8::Value> args[] = { stream.v8Value() }; 96 v8::Local<v8::Value> args[] = { stream.v8Value() };
97 v8::MaybeLocal<v8::Value> result = V8ScriptRunner::callExtra(scriptState, "I sReadableStreamDisturbed", args); 97 v8::MaybeLocal<v8::Value> result = V8ScriptRunner::callExtra(scriptState, "I sReadableStreamDisturbed", args);
98 if (isTerminating(scriptState)) 98 if (isTerminating(scriptState))
99 return true; 99 return true;
100 return v8CallOrCrash(result)->ToBoolean()->Value(); 100 return result.ToLocalChecked()->ToBoolean()->Value();
101 } 101 }
102 102
103 bool ReadableStreamOperations::isLocked(ScriptState* scriptState, ScriptValue st ream) 103 bool ReadableStreamOperations::isLocked(ScriptState* scriptState, ScriptValue st ream)
104 { 104 {
105 if (isTerminating(scriptState)) 105 if (isTerminating(scriptState))
106 return true; 106 return true;
107 ASSERT(isReadableStream(scriptState, stream)); 107 ASSERT(isReadableStream(scriptState, stream));
108 108
109 v8::Local<v8::Value> args[] = { stream.v8Value() }; 109 v8::Local<v8::Value> args[] = { stream.v8Value() };
110 v8::MaybeLocal<v8::Value> result = V8ScriptRunner::callExtra(scriptState, "I sReadableStreamLocked", args); 110 v8::MaybeLocal<v8::Value> result = V8ScriptRunner::callExtra(scriptState, "I sReadableStreamLocked", args);
111 if (isTerminating(scriptState)) 111 if (isTerminating(scriptState))
112 return true; 112 return true;
113 return v8CallOrCrash(result)->ToBoolean()->Value(); 113 return result.ToLocalChecked()->ToBoolean()->Value();
114 } 114 }
115 115
116 bool ReadableStreamOperations::isReadable(ScriptState* scriptState, ScriptValue stream) 116 bool ReadableStreamOperations::isReadable(ScriptState* scriptState, ScriptValue stream)
117 { 117 {
118 if (isTerminating(scriptState)) 118 if (isTerminating(scriptState))
119 return false; 119 return false;
120 ASSERT(isReadableStream(scriptState, stream)); 120 ASSERT(isReadableStream(scriptState, stream));
121 121
122 v8::Local<v8::Value> args[] = { stream.v8Value() }; 122 v8::Local<v8::Value> args[] = { stream.v8Value() };
123 v8::MaybeLocal<v8::Value> result = V8ScriptRunner::callExtraOrCrash(scriptSt ate, "IsReadableStreamReadable", args); 123 v8::MaybeLocal<v8::Value> result = V8ScriptRunner::callExtraOrCrash(scriptSt ate, "IsReadableStreamReadable", args);
124 if (isTerminating(scriptState)) 124 if (isTerminating(scriptState))
125 return false; 125 return false;
126 return v8CallOrCrash(result)->ToBoolean()->Value(); 126 return result.ToLocalChecked()->ToBoolean()->Value();
127 } 127 }
128 128
129 bool ReadableStreamOperations::isClosed(ScriptState* scriptState, ScriptValue st ream) 129 bool ReadableStreamOperations::isClosed(ScriptState* scriptState, ScriptValue st ream)
130 { 130 {
131 if (isTerminating(scriptState)) 131 if (isTerminating(scriptState))
132 return false; 132 return false;
133 ASSERT(isReadableStream(scriptState, stream)); 133 ASSERT(isReadableStream(scriptState, stream));
134 134
135 v8::Local<v8::Value> args[] = { stream.v8Value() }; 135 v8::Local<v8::Value> args[] = { stream.v8Value() };
136 v8::MaybeLocal<v8::Value> result = V8ScriptRunner::callExtra(scriptState, "I sReadableStreamClosed", args); 136 v8::MaybeLocal<v8::Value> result = V8ScriptRunner::callExtra(scriptState, "I sReadableStreamClosed", args);
137 if (isTerminating(scriptState)) 137 if (isTerminating(scriptState))
138 return false; 138 return false;
139 return v8CallOrCrash(result)->ToBoolean()->Value(); 139 return result.ToLocalChecked()->ToBoolean()->Value();
140 } 140 }
141 141
142 bool ReadableStreamOperations::isErrored(ScriptState* scriptState, ScriptValue s tream) 142 bool ReadableStreamOperations::isErrored(ScriptState* scriptState, ScriptValue s tream)
143 { 143 {
144 if (isTerminating(scriptState)) 144 if (isTerminating(scriptState))
145 return true; 145 return true;
146 ASSERT(isReadableStream(scriptState, stream)); 146 ASSERT(isReadableStream(scriptState, stream));
147 147
148 v8::Local<v8::Value> args[] = { stream.v8Value() }; 148 v8::Local<v8::Value> args[] = { stream.v8Value() };
149 v8::MaybeLocal<v8::Value> result = V8ScriptRunner::callExtra(scriptState, "I sReadableStreamErrored", args); 149 v8::MaybeLocal<v8::Value> result = V8ScriptRunner::callExtra(scriptState, "I sReadableStreamErrored", args);
150 if (isTerminating(scriptState)) 150 if (isTerminating(scriptState))
151 return true; 151 return true;
152 return v8CallOrCrash(result)->ToBoolean()->Value(); 152 return result.ToLocalChecked()->ToBoolean()->Value();
153 } 153 }
154 154
155 bool ReadableStreamOperations::isReadableStreamDefaultReader(ScriptState* script State, ScriptValue value) 155 bool ReadableStreamOperations::isReadableStreamDefaultReader(ScriptState* script State, ScriptValue value)
156 { 156 {
157 if (isTerminating(scriptState)) 157 if (isTerminating(scriptState))
158 return true; 158 return true;
159 ASSERT(!value.isEmpty()); 159 ASSERT(!value.isEmpty());
160 160
161 if (!value.isObject()) 161 if (!value.isObject())
162 return false; 162 return false;
163 163
164 v8::Local<v8::Value> args[] = { value.v8Value() }; 164 v8::Local<v8::Value> args[] = { value.v8Value() };
165 v8::MaybeLocal<v8::Value> result = V8ScriptRunner::callExtra(scriptState, "I sReadableStreamDefaultReader", args); 165 v8::MaybeLocal<v8::Value> result = V8ScriptRunner::callExtra(scriptState, "I sReadableStreamDefaultReader", args);
166 if (isTerminating(scriptState)) 166 if (isTerminating(scriptState))
167 return true; 167 return true;
168 return v8CallOrCrash(result)->ToBoolean()->Value(); 168 return result.ToLocalChecked()->ToBoolean()->Value();
169 } 169 }
170 170
171 ScriptPromise ReadableStreamOperations::defaultReaderRead(ScriptState* scriptSta te, ScriptValue reader) 171 ScriptPromise ReadableStreamOperations::defaultReaderRead(ScriptState* scriptSta te, ScriptValue reader)
172 { 172 {
173 if (isTerminating(scriptState)) 173 if (isTerminating(scriptState))
174 return ScriptPromise(); 174 return ScriptPromise();
175 ASSERT(isReadableStreamDefaultReader(scriptState, reader)); 175 ASSERT(isReadableStreamDefaultReader(scriptState, reader));
176 176
177 v8::Local<v8::Value> args[] = { reader.v8Value() }; 177 v8::Local<v8::Value> args[] = { reader.v8Value() };
178 v8::MaybeLocal<v8::Value> result = V8ScriptRunner::callExtra(scriptState, "R eadableStreamDefaultReaderRead", args); 178 v8::MaybeLocal<v8::Value> result = V8ScriptRunner::callExtra(scriptState, "R eadableStreamDefaultReaderRead", args);
179 if (isTerminating(scriptState)) 179 if (isTerminating(scriptState))
180 return ScriptPromise(); 180 return ScriptPromise();
181 return ScriptPromise::cast(scriptState, v8CallOrCrash(result)); 181 return ScriptPromise::cast(scriptState, result.ToLocalChecked());
182 } 182 }
183 183
184 void ReadableStreamOperations::tee(ScriptState* scriptState, ScriptValue stream, ScriptValue* newStream1, ScriptValue* newStream2) 184 void ReadableStreamOperations::tee(ScriptState* scriptState, ScriptValue stream, ScriptValue* newStream1, ScriptValue* newStream2)
185 { 185 {
186 if (isTerminating(scriptState)) 186 if (isTerminating(scriptState))
187 return; 187 return;
188 DCHECK(isReadableStream(scriptState, stream)); 188 DCHECK(isReadableStream(scriptState, stream));
189 DCHECK(!isLocked(scriptState, stream)); 189 DCHECK(!isLocked(scriptState, stream));
190 190
191 v8::Local<v8::Value> args[] = { stream.v8Value() }; 191 v8::Local<v8::Value> args[] = { stream.v8Value() };
192 192
193 v8::MaybeLocal<v8::Value> maybeResult = V8ScriptRunner::callExtra(scriptStat e, "ReadableStreamTee", args); 193 v8::MaybeLocal<v8::Value> maybeResult = V8ScriptRunner::callExtra(scriptStat e, "ReadableStreamTee", args);
194 if (isTerminating(scriptState)) 194 if (isTerminating(scriptState))
195 return; 195 return;
196 ScriptValue result(scriptState, v8CallOrCrash(maybeResult)); 196 ScriptValue result(scriptState, maybeResult.ToLocalChecked());
197 DCHECK(result.v8Value()->IsArray()); 197 DCHECK(result.v8Value()->IsArray());
198 v8::Local<v8::Array> branches = result.v8Value().As<v8::Array>(); 198 v8::Local<v8::Array> branches = result.v8Value().As<v8::Array>();
199 DCHECK_EQ(2u, branches->Length()); 199 DCHECK_EQ(2u, branches->Length());
200 200
201 v8::MaybeLocal<v8::Value> maybeStream1 = branches->Get(scriptState->context( ), 0); 201 v8::MaybeLocal<v8::Value> maybeStream1 = branches->Get(scriptState->context( ), 0);
202 if (isTerminating(scriptState)) 202 if (isTerminating(scriptState))
203 return; 203 return;
204 v8::MaybeLocal<v8::Value> maybeStream2 = branches->Get(scriptState->context( ), 1); 204 v8::MaybeLocal<v8::Value> maybeStream2 = branches->Get(scriptState->context( ), 1);
205 if (isTerminating(scriptState)) 205 if (isTerminating(scriptState))
206 return; 206 return;
207 207
208 *newStream1 = ScriptValue(scriptState, v8CallOrCrash(maybeStream1)); 208 *newStream1 = ScriptValue(scriptState, maybeStream1.ToLocalChecked());
209 *newStream2 = ScriptValue(scriptState, v8CallOrCrash(maybeStream2)); 209 *newStream2 = ScriptValue(scriptState, maybeStream2.ToLocalChecked());
210 210
211 DCHECK(isReadableStream(scriptState, *newStream1)); 211 DCHECK(isReadableStream(scriptState, *newStream1));
212 DCHECK(isReadableStream(scriptState, *newStream2)); 212 DCHECK(isReadableStream(scriptState, *newStream2));
213 } 213 }
214 214
215 } // namespace blink 215 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698