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

Side by Side Diff: Source/bindings/v8/ScriptController.cpp

Issue 23788005: Remove calls to HandleScope default ctor. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: code review (pfeldman) Created 7 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 | Annotate | Revision Log
« no previous file with comments | « Source/bindings/v8/ScriptController.h ('k') | Source/bindings/v8/ScriptEventListener.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 /* 1 /*
2 * Copyright (C) 2008, 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2008, 2009 Google Inc. All rights reserved.
3 * Copyright (C) 2009 Apple Inc. All rights reserved. 3 * Copyright (C) 2009 Apple Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 v8::RegisterExtension(extension); 448 v8::RegisterExtension(extension);
449 registeredExtensions().append(extension); 449 registeredExtensions().append(extension);
450 } 450 }
451 451
452 static NPObject* createNoScriptObject() 452 static NPObject* createNoScriptObject()
453 { 453 {
454 notImplemented(); 454 notImplemented();
455 return 0; 455 return 0;
456 } 456 }
457 457
458 static NPObject* createScriptObject(Frame* frame) 458 static NPObject* createScriptObject(Frame* frame, v8::Isolate* isolate)
459 { 459 {
460 v8::HandleScope handleScope; 460 v8::HandleScope handleScope(isolate);
461 v8::Handle<v8::Context> v8Context = ScriptController::mainWorldContext(frame ); 461 v8::Handle<v8::Context> v8Context = ScriptController::mainWorldContext(frame );
462 if (v8Context.IsEmpty()) 462 if (v8Context.IsEmpty())
463 return createNoScriptObject(); 463 return createNoScriptObject();
464 464
465 v8::Context::Scope scope(v8Context); 465 v8::Context::Scope scope(v8Context);
466 DOMWindow* window = frame->domWindow(); 466 DOMWindow* window = frame->domWindow();
467 v8::Handle<v8::Value> global = toV8(window, v8::Handle<v8::Object>(), v8Cont ext->GetIsolate()); 467 v8::Handle<v8::Value> global = toV8(window, v8::Handle<v8::Object>(), v8Cont ext->GetIsolate());
468 ASSERT(global->IsObject()); 468 ASSERT(global->IsObject());
469 469
470 return npCreateV8ScriptObject(0, v8::Handle<v8::Object>::Cast(global), windo w); 470 return npCreateV8ScriptObject(0, v8::Handle<v8::Object>::Cast(global), windo w);
471 } 471 }
472 472
473 NPObject* ScriptController::windowScriptNPObject() 473 NPObject* ScriptController::windowScriptNPObject()
474 { 474 {
475 if (m_windowScriptNPObject) 475 if (m_windowScriptNPObject)
476 return m_windowScriptNPObject; 476 return m_windowScriptNPObject;
477 477
478 if (canExecuteScripts(NotAboutToExecuteScript)) { 478 if (canExecuteScripts(NotAboutToExecuteScript)) {
479 // JavaScript is enabled, so there is a JavaScript window object. 479 // JavaScript is enabled, so there is a JavaScript window object.
480 // Return an NPObject bound to the window object. 480 // Return an NPObject bound to the window object.
481 m_windowScriptNPObject = createScriptObject(m_frame); 481 m_windowScriptNPObject = createScriptObject(m_frame, m_isolate);
482 _NPN_RegisterObject(m_windowScriptNPObject, 0); 482 _NPN_RegisterObject(m_windowScriptNPObject, 0);
483 } else { 483 } else {
484 // JavaScript is not enabled, so we cannot bind the NPObject to the 484 // JavaScript is not enabled, so we cannot bind the NPObject to the
485 // JavaScript window object. Instead, we create an NPObject of a 485 // JavaScript window object. Instead, we create an NPObject of a
486 // different class, one which is not bound to a JavaScript object. 486 // different class, one which is not bound to a JavaScript object.
487 m_windowScriptNPObject = createNoScriptObject(); 487 m_windowScriptNPObject = createNoScriptObject();
488 } 488 }
489 return m_windowScriptNPObject; 489 return m_windowScriptNPObject;
490 } 490 }
491 491
492 NPObject* ScriptController::createScriptObjectForPluginElement(HTMLPlugInElement * plugin) 492 NPObject* ScriptController::createScriptObjectForPluginElement(HTMLPlugInElement * plugin)
493 { 493 {
494 // Can't create NPObjects when JavaScript is disabled. 494 // Can't create NPObjects when JavaScript is disabled.
495 if (!canExecuteScripts(NotAboutToExecuteScript)) 495 if (!canExecuteScripts(NotAboutToExecuteScript))
496 return createNoScriptObject(); 496 return createNoScriptObject();
497 497
498 v8::HandleScope handleScope; 498 v8::HandleScope handleScope(m_isolate);
499 v8::Handle<v8::Context> v8Context = ScriptController::mainWorldContext(m_fra me); 499 v8::Handle<v8::Context> v8Context = ScriptController::mainWorldContext(m_fra me);
500 if (v8Context.IsEmpty()) 500 if (v8Context.IsEmpty())
501 return createNoScriptObject(); 501 return createNoScriptObject();
502 v8::Context::Scope scope(v8Context); 502 v8::Context::Scope scope(v8Context);
503 503
504 DOMWindow* window = m_frame->domWindow(); 504 DOMWindow* window = m_frame->domWindow();
505 v8::Handle<v8::Value> v8plugin = toV8(plugin, v8::Handle<v8::Object>(), v8Co ntext->GetIsolate()); 505 v8::Handle<v8::Value> v8plugin = toV8(plugin, v8::Handle<v8::Object>(), v8Co ntext->GetIsolate());
506 if (!v8plugin->IsObject()) 506 if (!v8plugin->IsObject())
507 return createNoScriptObject(); 507 return createNoScriptObject();
508 508
(...skipping 12 matching lines...) Expand all
521 HistogramSupport::histogramCustomCounts("WebCore.ScriptController.clearWindo wShell", (currentTime() - start) * 1000, 0, 10000, 50); 521 HistogramSupport::histogramCustomCounts("WebCore.ScriptController.clearWindo wShell", (currentTime() - start) * 1000, 0, 10000, 50);
522 } 522 }
523 523
524 void ScriptController::setCaptureCallStackForUncaughtExceptions(bool value) 524 void ScriptController::setCaptureCallStackForUncaughtExceptions(bool value)
525 { 525 {
526 v8::V8::SetCaptureStackTraceForUncaughtExceptions(value, ScriptCallStack::ma xCallStackSizeToCapture, stackTraceOptions); 526 v8::V8::SetCaptureStackTraceForUncaughtExceptions(value, ScriptCallStack::ma xCallStackSizeToCapture, stackTraceOptions);
527 } 527 }
528 528
529 void ScriptController::collectIsolatedContexts(Vector<std::pair<ScriptState*, Se curityOrigin*> >& result) 529 void ScriptController::collectIsolatedContexts(Vector<std::pair<ScriptState*, Se curityOrigin*> >& result)
530 { 530 {
531 v8::HandleScope handleScope; 531 v8::HandleScope handleScope(m_isolate);
532 for (IsolatedWorldMap::iterator it = m_isolatedWorlds.begin(); it != m_isola tedWorlds.end(); ++it) { 532 for (IsolatedWorldMap::iterator it = m_isolatedWorlds.begin(); it != m_isola tedWorlds.end(); ++it) {
533 V8WindowShell* isolatedWorldShell = it->value.get(); 533 V8WindowShell* isolatedWorldShell = it->value.get();
534 SecurityOrigin* origin = isolatedWorldShell->world()->isolatedWorldSecur ityOrigin(); 534 SecurityOrigin* origin = isolatedWorldShell->world()->isolatedWorldSecur ityOrigin();
535 if (!origin) 535 if (!origin)
536 continue; 536 continue;
537 v8::Local<v8::Context> v8Context = isolatedWorldShell->context(); 537 v8::Local<v8::Context> v8Context = isolatedWorldShell->context();
538 if (v8Context.IsEmpty()) 538 if (v8Context.IsEmpty())
539 continue; 539 continue;
540 ScriptState* scriptState = ScriptState::forContext(v8Context); 540 ScriptState* scriptState = ScriptState::forContext(v8Context);
541 result.append(std::pair<ScriptState*, SecurityOrigin*>(scriptState, orig in)); 541 result.append(std::pair<ScriptState*, SecurityOrigin*>(scriptState, orig in));
542 } 542 }
543 } 543 }
544 544
545 bool ScriptController::setContextDebugId(int debugId) 545 bool ScriptController::setContextDebugId(int debugId)
546 { 546 {
547 ASSERT(debugId > 0); 547 ASSERT(debugId > 0);
548 if (!m_windowShell->isContextInitialized()) 548 if (!m_windowShell->isContextInitialized())
549 return false; 549 return false;
550 v8::HandleScope scope; 550 v8::HandleScope scope(m_isolate);
551 v8::Local<v8::Context> context = m_windowShell->context(); 551 v8::Local<v8::Context> context = m_windowShell->context();
552 return V8PerContextDebugData::setContextDebugData(context, "page", debugId); 552 return V8PerContextDebugData::setContextDebugData(context, "page", debugId);
553 } 553 }
554 554
555 int ScriptController::contextDebugId(v8::Handle<v8::Context> context) 555 int ScriptController::contextDebugId(v8::Handle<v8::Context> context)
556 { 556 {
557 return V8PerContextDebugData::contextDebugId(context); 557 return V8PerContextDebugData::contextDebugId(context);
558 } 558 }
559 559
560 void ScriptController::updateDocument() 560 void ScriptController::updateDocument()
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
656 loader->replaceDocument(scriptResult, ownerDocument.get()); 656 loader->replaceDocument(scriptResult, ownerDocument.get());
657 return true; 657 return true;
658 } 658 }
659 659
660 ScriptValue ScriptController::executeScriptInMainWorld(const ScriptSourceCode& s ourceCode, AccessControlStatus corsStatus) 660 ScriptValue ScriptController::executeScriptInMainWorld(const ScriptSourceCode& s ourceCode, AccessControlStatus corsStatus)
661 { 661 {
662 String sourceURL = sourceCode.url(); 662 String sourceURL = sourceCode.url();
663 const String* savedSourceURL = m_sourceURL; 663 const String* savedSourceURL = m_sourceURL;
664 m_sourceURL = &sourceURL; 664 m_sourceURL = &sourceURL;
665 665
666 v8::HandleScope handleScope; 666 v8::HandleScope handleScope(m_isolate);
667 v8::Handle<v8::Context> v8Context = ScriptController::mainWorldContext(m_fra me); 667 v8::Handle<v8::Context> v8Context = ScriptController::mainWorldContext(m_fra me);
668 if (v8Context.IsEmpty()) 668 if (v8Context.IsEmpty())
669 return ScriptValue(); 669 return ScriptValue();
670 670
671 RefPtr<Frame> protect(m_frame); 671 RefPtr<Frame> protect(m_frame);
672 if (m_frame->loader()->stateMachine()->isDisplayingInitialEmptyDocument()) 672 if (m_frame->loader()->stateMachine()->isDisplayingInitialEmptyDocument())
673 m_frame->loader()->didAccessInitialDocument(); 673 m_frame->loader()->didAccessInitialDocument();
674 674
675 OwnPtr<ScriptSourceCode> maybeProcessedSourceCode = InspectorInstrumentatio n::preprocess(m_frame, sourceCode); 675 OwnPtr<ScriptSourceCode> maybeProcessedSourceCode = InspectorInstrumentatio n::preprocess(m_frame, sourceCode);
676 const ScriptSourceCode& sourceCodeToCompile = maybeProcessedSourceCode ? *ma ybeProcessedSourceCode : sourceCode; 676 const ScriptSourceCode& sourceCodeToCompile = maybeProcessedSourceCode ? *ma ybeProcessedSourceCode : sourceCode;
677 677
678 v8::Context::Scope scope(v8Context); 678 v8::Context::Scope scope(v8Context);
679 v8::Local<v8::Value> object = compileAndRunScript(sourceCodeToCompile, corsS tatus); 679 v8::Local<v8::Value> object = compileAndRunScript(sourceCodeToCompile, corsS tatus);
680 680
681 m_sourceURL = savedSourceURL; 681 m_sourceURL = savedSourceURL;
682 682
683 if (object.IsEmpty()) 683 if (object.IsEmpty())
684 return ScriptValue(); 684 return ScriptValue();
685 685
686 return ScriptValue(object); 686 return ScriptValue(object);
687 } 687 }
688 688
689 void ScriptController::executeScriptInIsolatedWorld(int worldID, const Vector<Sc riptSourceCode>& sources, int extensionGroup, Vector<ScriptValue>* results) 689 void ScriptController::executeScriptInIsolatedWorld(int worldID, const Vector<Sc riptSourceCode>& sources, int extensionGroup, Vector<ScriptValue>* results)
690 { 690 {
691 ASSERT(worldID > 0); 691 ASSERT(worldID > 0);
692 692
693 v8::HandleScope handleScope; 693 v8::HandleScope handleScope(m_isolate);
694 v8::Local<v8::Array> v8Results; 694 v8::Local<v8::Array> v8Results;
695 { 695 {
696 v8::HandleScope evaluateHandleScope; 696 v8::HandleScope evaluateHandleScope(m_isolate);
697 RefPtr<DOMWrapperWorld> world = DOMWrapperWorld::ensureIsolatedWorld(wor ldID, extensionGroup); 697 RefPtr<DOMWrapperWorld> world = DOMWrapperWorld::ensureIsolatedWorld(wor ldID, extensionGroup);
698 V8WindowShell* isolatedWorldShell = windowShell(world.get()); 698 V8WindowShell* isolatedWorldShell = windowShell(world.get());
699 699
700 if (!isolatedWorldShell->isContextInitialized()) 700 if (!isolatedWorldShell->isContextInitialized())
701 return; 701 return;
702 702
703 v8::Local<v8::Context> context = isolatedWorldShell->context(); 703 v8::Local<v8::Context> context = isolatedWorldShell->context();
704 v8::Context::Scope contextScope(context); 704 v8::Context::Scope contextScope(context);
705 v8::Local<v8::Array> resultArray = v8::Array::New(sources.size()); 705 v8::Local<v8::Array> resultArray = v8::Array::New(sources.size());
706 706
707 for (size_t i = 0; i < sources.size(); ++i) { 707 for (size_t i = 0; i < sources.size(); ++i) {
708 v8::Local<v8::Value> evaluationResult = compileAndRunScript(sources[ i]); 708 v8::Local<v8::Value> evaluationResult = compileAndRunScript(sources[ i]);
709 if (evaluationResult.IsEmpty()) 709 if (evaluationResult.IsEmpty())
710 evaluationResult = v8::Local<v8::Value>::New(v8::Undefined()); 710 evaluationResult = v8::Local<v8::Value>::New(v8::Undefined());
711 resultArray->Set(i, evaluationResult); 711 resultArray->Set(i, evaluationResult);
712 } 712 }
713 713
714 v8Results = evaluateHandleScope.Close(resultArray); 714 v8Results = evaluateHandleScope.Close(resultArray);
715 } 715 }
716 716
717 if (results && !v8Results.IsEmpty()) { 717 if (results && !v8Results.IsEmpty()) {
718 for (size_t i = 0; i < v8Results->Length(); ++i) 718 for (size_t i = 0; i < v8Results->Length(); ++i)
719 results->append(ScriptValue(v8Results->Get(i))); 719 results->append(ScriptValue(v8Results->Get(i)));
720 } 720 }
721 } 721 }
722 722
723 } // namespace WebCore 723 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/bindings/v8/ScriptController.h ('k') | Source/bindings/v8/ScriptEventListener.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698