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

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

Issue 1305183009: CREDENTIAL: Extend FormData opacity to created Request objects (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Initializing variables is a good idea. Created 5 years, 3 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
« no previous file with comments | « Source/modules/fetch/Body.h ('k') | Source/modules/fetch/Request.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/Body.h" 6 #include "modules/fetch/Body.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 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 resolver()->resolve(parsed); 97 resolver()->resolve(parsed);
98 else 98 else
99 resolver()->reject(trycatch.Exception()); 99 resolver()->reject(trycatch.Exception());
100 } 100 }
101 }; 101 };
102 102
103 } // namespace 103 } // namespace
104 104
105 ScriptPromise Body::arrayBuffer(ScriptState* scriptState) 105 ScriptPromise Body::arrayBuffer(ScriptState* scriptState)
106 { 106 {
107 if (m_opaque)
108 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "The body is opaque."));
109
107 if (bodyUsed()) 110 if (bodyUsed())
108 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Already read")); 111 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Already read"));
109 112
110 // When the main thread sends a V8::TerminateExecution() signal to a worker 113 // When the main thread sends a V8::TerminateExecution() signal to a worker
111 // thread, any V8 API on the worker thread starts returning an empty 114 // thread, any V8 API on the worker thread starts returning an empty
112 // handle. This can happen in Body::readAsync. To avoid the situation, we 115 // handle. This can happen in Body::readAsync. To avoid the situation, we
113 // first check the ExecutionContext and return immediately if it's already 116 // first check the ExecutionContext and return immediately if it's already
114 // gone (which means that the V8::TerminateExecution() signal has been sent 117 // gone (which means that the V8::TerminateExecution() signal has been sent
115 // to this worker thread). 118 // to this worker thread).
116 if (!scriptState->executionContext()) 119 if (!scriptState->executionContext())
117 return ScriptPromise(); 120 return ScriptPromise();
118 121
119 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 122 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
120 ScriptPromise promise = resolver->promise(); 123 ScriptPromise promise = resolver->promise();
121 bodyBuffer()->startLoading(scriptState->executionContext(), FetchDataLoader: :createLoaderAsArrayBuffer(), new BodyArrayBufferConsumer(resolver)); 124 bodyBuffer()->startLoading(scriptState->executionContext(), FetchDataLoader: :createLoaderAsArrayBuffer(), new BodyArrayBufferConsumer(resolver));
122 return promise; 125 return promise;
123 } 126 }
124 127
125 ScriptPromise Body::blob(ScriptState* scriptState) 128 ScriptPromise Body::blob(ScriptState* scriptState)
126 { 129 {
130 if (m_opaque)
131 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "The body is opaque."));
132
127 if (bodyUsed()) 133 if (bodyUsed())
128 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Already read")); 134 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Already read"));
129 135
130 // See above comment. 136 // See above comment.
131 if (!scriptState->executionContext()) 137 if (!scriptState->executionContext())
132 return ScriptPromise(); 138 return ScriptPromise();
133 139
134 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 140 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
135 ScriptPromise promise = resolver->promise(); 141 ScriptPromise promise = resolver->promise();
136 bodyBuffer()->startLoading(scriptState->executionContext(), FetchDataLoader: :createLoaderAsBlobHandle(mimeType()), new BodyBlobConsumer(resolver)); 142 bodyBuffer()->startLoading(scriptState->executionContext(), FetchDataLoader: :createLoaderAsBlobHandle(mimeType()), new BodyBlobConsumer(resolver));
137 return promise; 143 return promise;
138 144
139 } 145 }
140 146
141 ScriptPromise Body::json(ScriptState* scriptState) 147 ScriptPromise Body::json(ScriptState* scriptState)
142 { 148 {
149 if (m_opaque)
150 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "The body is opaque."));
151
143 if (bodyUsed()) 152 if (bodyUsed())
144 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Already read")); 153 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Already read"));
145 154
146 // See above comment. 155 // See above comment.
147 if (!scriptState->executionContext()) 156 if (!scriptState->executionContext())
148 return ScriptPromise(); 157 return ScriptPromise();
149 158
150 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 159 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
151 ScriptPromise promise = resolver->promise(); 160 ScriptPromise promise = resolver->promise();
152 bodyBuffer()->startLoading(scriptState->executionContext(), FetchDataLoader: :createLoaderAsString(), new BodyJsonConsumer(resolver)); 161 bodyBuffer()->startLoading(scriptState->executionContext(), FetchDataLoader: :createLoaderAsString(), new BodyJsonConsumer(resolver));
153 return promise; 162 return promise;
154 } 163 }
155 164
156 ScriptPromise Body::text(ScriptState* scriptState) 165 ScriptPromise Body::text(ScriptState* scriptState)
157 { 166 {
167 if (m_opaque)
168 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "The body is opaque."));
169
158 if (bodyUsed()) 170 if (bodyUsed())
159 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Already read")); 171 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Already read"));
160 172
161 // See above comment. 173 // See above comment.
162 if (!scriptState->executionContext()) 174 if (!scriptState->executionContext())
163 return ScriptPromise(); 175 return ScriptPromise();
164 176
165 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 177 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
166 ScriptPromise promise = resolver->promise(); 178 ScriptPromise promise = resolver->promise();
167 bodyBuffer()->startLoading(scriptState->executionContext(), FetchDataLoader: :createLoaderAsString(), new BodyTextConsumer(resolver)); 179 bodyBuffer()->startLoading(scriptState->executionContext(), FetchDataLoader: :createLoaderAsString(), new BodyTextConsumer(resolver));
(...skipping 11 matching lines...) Expand all
179 return m_bodyPassed || body()->isLocked(); 191 return m_bodyPassed || body()->isLocked();
180 } 192 }
181 193
182 bool Body::hasPendingActivity() const 194 bool Body::hasPendingActivity() const
183 { 195 {
184 if (executionContext()->activeDOMObjectsAreStopped()) 196 if (executionContext()->activeDOMObjectsAreStopped())
185 return false; 197 return false;
186 return bodyBuffer()->hasPendingActivity(); 198 return bodyBuffer()->hasPendingActivity();
187 } 199 }
188 200
189 Body::Body(ExecutionContext* context) : ActiveDOMObject(context), m_bodyPassed(f alse) 201 Body::Body(ExecutionContext* context)
202 : ActiveDOMObject(context)
203 , m_bodyPassed(false)
204 , m_opaque(false)
190 { 205 {
191 suspendIfNeeded(); 206 suspendIfNeeded();
192 } 207 }
193 208
194 } // namespace blink 209 } // namespace blink
OLDNEW
« no previous file with comments | « Source/modules/fetch/Body.h ('k') | Source/modules/fetch/Request.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698