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

Side by Side Diff: third_party/WebKit/Source/modules/fetch/Response.cpp

Issue 2141383002: [Fetch API] Remove HandleScope to protect local handles (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 4 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 "modules/fetch/Response.h" 5 #include "modules/fetch/Response.h"
6 6
7 #include "bindings/core/v8/Dictionary.h" 7 #include "bindings/core/v8/Dictionary.h"
8 #include "bindings/core/v8/ExceptionState.h" 8 #include "bindings/core/v8/ExceptionState.h"
9 #include "bindings/core/v8/ScriptState.h" 9 #include "bindings/core/v8/ScriptState.h"
10 #include "bindings/core/v8/V8ArrayBuffer.h" 10 #include "bindings/core/v8/V8ArrayBuffer.h"
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 426
427 void Response::installBody() 427 void Response::installBody()
428 { 428 {
429 if (!internalBodyBuffer()) 429 if (!internalBodyBuffer())
430 return; 430 return;
431 refreshBody(internalBodyBuffer()->scriptState()); 431 refreshBody(internalBodyBuffer()->scriptState());
432 } 432 }
433 433
434 void Response::refreshBody(ScriptState* scriptState) 434 void Response::refreshBody(ScriptState* scriptState)
435 { 435 {
436 ScriptState::Scope scope(scriptState);
437 v8::Local<v8::Value> bodyBuffer = toV8(internalBodyBuffer(), scriptState); 436 v8::Local<v8::Value> bodyBuffer = toV8(internalBodyBuffer(), scriptState);
438 v8::Local<v8::Value> response = toV8(this, scriptState); 437 v8::Local<v8::Value> response = toV8(this, scriptState);
439 if (response.IsEmpty()) { 438 if (response.IsEmpty()) {
440 // |toV8| can return an empty handle when the worker is terminating. 439 // |toV8| can return an empty handle when the worker is terminating.
441 // We don't want the renderer to crash in such cases. 440 // We don't want the renderer to crash in such cases.
442 // TODO(yhirano): Delete this block after the graceful shutdown 441 // TODO(yhirano): Delete this block after the graceful shutdown
443 // mechanism is introduced. 442 // mechanism is introduced.
444 return; 443 return;
445 } 444 }
446 DCHECK(response->IsObject()); 445 DCHECK(response->IsObject());
447 V8HiddenValue::setHiddenValue(scriptState, response.As<v8::Object>(), V8Hidd enValue::internalBodyBuffer(scriptState->isolate()), bodyBuffer); 446 V8HiddenValue::setHiddenValue(scriptState, response.As<v8::Object>(), V8Hidd enValue::internalBodyBuffer(scriptState->isolate()), bodyBuffer);
448 } 447 }
449 448
450 DEFINE_TRACE(Response) 449 DEFINE_TRACE(Response)
451 { 450 {
452 Body::trace(visitor); 451 Body::trace(visitor);
453 visitor->trace(m_response); 452 visitor->trace(m_response);
454 visitor->trace(m_headers); 453 visitor->trace(m_headers);
455 } 454 }
456 455
457 } // namespace blink 456 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/modules/fetch/Response.h ('k') | third_party/WebKit/Source/modules/fetch/ResponseTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698