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

Side by Side Diff: Source/web/WebFrameImpl.cpp

Issue 33523002: Have Frame::script() return a reference (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebase on master Created 7 years, 2 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/web/WebDevToolsFrontendImpl.cpp ('k') | Source/web/WebPluginContainerImpl.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) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 708 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 { 719 {
720 if (!frame()) 720 if (!frame())
721 return WebPerformance(); 721 return WebPerformance();
722 return WebPerformance(frame()->domWindow()->performance()); 722 return WebPerformance(frame()->domWindow()->performance());
723 } 723 }
724 724
725 NPObject* WebFrameImpl::windowObject() const 725 NPObject* WebFrameImpl::windowObject() const
726 { 726 {
727 if (!frame()) 727 if (!frame())
728 return 0; 728 return 0;
729 return frame()->script()->windowScriptNPObject(); 729 return frame()->script().windowScriptNPObject();
730 } 730 }
731 731
732 void WebFrameImpl::bindToWindowObject(const WebString& name, NPObject* object) 732 void WebFrameImpl::bindToWindowObject(const WebString& name, NPObject* object)
733 { 733 {
734 bindToWindowObject(name, object, 0); 734 bindToWindowObject(name, object, 0);
735 } 735 }
736 736
737 void WebFrameImpl::bindToWindowObject(const WebString& name, NPObject* object, v oid*) 737 void WebFrameImpl::bindToWindowObject(const WebString& name, NPObject* object, v oid*)
738 { 738 {
739 if (!frame() || !frame()->script()->canExecuteScripts(NotAboutToExecuteScrip t)) 739 if (!frame() || !frame()->script().canExecuteScripts(NotAboutToExecuteScript ))
740 return; 740 return;
741 frame()->script()->bindToWindowObject(frame(), String(name), object); 741 frame()->script().bindToWindowObject(frame(), String(name), object);
742 } 742 }
743 743
744 void WebFrameImpl::executeScript(const WebScriptSource& source) 744 void WebFrameImpl::executeScript(const WebScriptSource& source)
745 { 745 {
746 ASSERT(frame()); 746 ASSERT(frame());
747 TextPosition position(OrdinalNumber::fromOneBasedInt(source.startLine), Ordi nalNumber::first()); 747 TextPosition position(OrdinalNumber::fromOneBasedInt(source.startLine), Ordi nalNumber::first());
748 frame()->script()->executeScriptInMainWorld(ScriptSourceCode(source.code, so urce.url, position)); 748 frame()->script().executeScriptInMainWorld(ScriptSourceCode(source.code, sou rce.url, position));
749 } 749 }
750 750
751 void WebFrameImpl::executeScriptInIsolatedWorld(int worldID, const WebScriptSour ce* sourcesIn, unsigned numSources, int extensionGroup) 751 void WebFrameImpl::executeScriptInIsolatedWorld(int worldID, const WebScriptSour ce* sourcesIn, unsigned numSources, int extensionGroup)
752 { 752 {
753 ASSERT(frame()); 753 ASSERT(frame());
754 RELEASE_ASSERT(worldID > 0); 754 RELEASE_ASSERT(worldID > 0);
755 RELEASE_ASSERT(worldID < EmbedderWorldIdLimit); 755 RELEASE_ASSERT(worldID < EmbedderWorldIdLimit);
756 756
757 Vector<ScriptSourceCode> sources; 757 Vector<ScriptSourceCode> sources;
758 for (unsigned i = 0; i < numSources; ++i) { 758 for (unsigned i = 0; i < numSources; ++i) {
759 TextPosition position(OrdinalNumber::fromOneBasedInt(sourcesIn[i].startL ine), OrdinalNumber::first()); 759 TextPosition position(OrdinalNumber::fromOneBasedInt(sourcesIn[i].startL ine), OrdinalNumber::first());
760 sources.append(ScriptSourceCode(sourcesIn[i].code, sourcesIn[i].url, pos ition)); 760 sources.append(ScriptSourceCode(sourcesIn[i].code, sourcesIn[i].url, pos ition));
761 } 761 }
762 762
763 frame()->script()->executeScriptInIsolatedWorld(worldID, sources, extensionG roup, 0); 763 frame()->script().executeScriptInIsolatedWorld(worldID, sources, extensionGr oup, 0);
764 } 764 }
765 765
766 void WebFrameImpl::setIsolatedWorldSecurityOrigin(int worldID, const WebSecurity Origin& securityOrigin) 766 void WebFrameImpl::setIsolatedWorldSecurityOrigin(int worldID, const WebSecurity Origin& securityOrigin)
767 { 767 {
768 ASSERT(frame()); 768 ASSERT(frame());
769 DOMWrapperWorld::setIsolatedWorldSecurityOrigin(worldID, securityOrigin.get( )); 769 DOMWrapperWorld::setIsolatedWorldSecurityOrigin(worldID, securityOrigin.get( ));
770 } 770 }
771 771
772 void WebFrameImpl::setIsolatedWorldContentSecurityPolicy(int worldID, const WebS tring& policy) 772 void WebFrameImpl::setIsolatedWorldContentSecurityPolicy(int worldID, const WebS tring& policy)
773 { 773 {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
820 { 820 {
821 ASSERT(frame()); 821 ASSERT(frame());
822 822
823 // FIXME: This fake user gesture is required to make a bunch of pyauto 823 // FIXME: This fake user gesture is required to make a bunch of pyauto
824 // tests pass. If this isn't needed in non-test situations, we should 824 // tests pass. If this isn't needed in non-test situations, we should
825 // consider removing this code and changing the tests. 825 // consider removing this code and changing the tests.
826 // http://code.google.com/p/chromium/issues/detail?id=86397 826 // http://code.google.com/p/chromium/issues/detail?id=86397
827 UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture); 827 UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture);
828 828
829 TextPosition position(OrdinalNumber::fromOneBasedInt(source.startLine), Ordi nalNumber::first()); 829 TextPosition position(OrdinalNumber::fromOneBasedInt(source.startLine), Ordi nalNumber::first());
830 return frame()->script()->executeScriptInMainWorldAndReturnValue(ScriptSourc eCode(source.code, source.url, position)).v8Value(); 830 return frame()->script().executeScriptInMainWorldAndReturnValue(ScriptSource Code(source.code, source.url, position)).v8Value();
831 } 831 }
832 832
833 void WebFrameImpl::executeScriptInIsolatedWorld(int worldID, const WebScriptSour ce* sourcesIn, unsigned numSources, int extensionGroup, WebVector<v8::Local<v8:: Value> >* results) 833 void WebFrameImpl::executeScriptInIsolatedWorld(int worldID, const WebScriptSour ce* sourcesIn, unsigned numSources, int extensionGroup, WebVector<v8::Local<v8:: Value> >* results)
834 { 834 {
835 ASSERT(frame()); 835 ASSERT(frame());
836 RELEASE_ASSERT(worldID > 0); 836 RELEASE_ASSERT(worldID > 0);
837 RELEASE_ASSERT(worldID < EmbedderWorldIdLimit); 837 RELEASE_ASSERT(worldID < EmbedderWorldIdLimit);
838 838
839 Vector<ScriptSourceCode> sources; 839 Vector<ScriptSourceCode> sources;
840 840
841 for (unsigned i = 0; i < numSources; ++i) { 841 for (unsigned i = 0; i < numSources; ++i) {
842 TextPosition position(OrdinalNumber::fromOneBasedInt(sourcesIn[i].startL ine), OrdinalNumber::first()); 842 TextPosition position(OrdinalNumber::fromOneBasedInt(sourcesIn[i].startL ine), OrdinalNumber::first());
843 sources.append(ScriptSourceCode(sourcesIn[i].code, sourcesIn[i].url, pos ition)); 843 sources.append(ScriptSourceCode(sourcesIn[i].code, sourcesIn[i].url, pos ition));
844 } 844 }
845 845
846 if (results) { 846 if (results) {
847 Vector<ScriptValue> scriptResults; 847 Vector<ScriptValue> scriptResults;
848 frame()->script()->executeScriptInIsolatedWorld(worldID, sources, extens ionGroup, &scriptResults); 848 frame()->script().executeScriptInIsolatedWorld(worldID, sources, extensi onGroup, &scriptResults);
849 WebVector<v8::Local<v8::Value> > v8Results(scriptResults.size()); 849 WebVector<v8::Local<v8::Value> > v8Results(scriptResults.size());
850 for (unsigned i = 0; i < scriptResults.size(); i++) 850 for (unsigned i = 0; i < scriptResults.size(); i++)
851 v8Results[i] = v8::Local<v8::Value>::New(toIsolate(frame()), scriptR esults[i].v8Value()); 851 v8Results[i] = v8::Local<v8::Value>::New(toIsolate(frame()), scriptR esults[i].v8Value());
852 results->swap(v8Results); 852 results->swap(v8Results);
853 } else 853 } else {
854 frame()->script()->executeScriptInIsolatedWorld(worldID, sources, extens ionGroup, 0); 854 frame()->script().executeScriptInIsolatedWorld(worldID, sources, extensi onGroup, 0);
855 }
855 } 856 }
856 857
857 v8::Handle<v8::Value> WebFrameImpl::callFunctionEvenIfScriptDisabled(v8::Handle< v8::Function> function, v8::Handle<v8::Object> receiver, int argc, v8::Handle<v8 ::Value> argv[]) 858 v8::Handle<v8::Value> WebFrameImpl::callFunctionEvenIfScriptDisabled(v8::Handle< v8::Function> function, v8::Handle<v8::Object> receiver, int argc, v8::Handle<v8 ::Value> argv[])
858 { 859 {
859 ASSERT(frame()); 860 ASSERT(frame());
860 return frame()->script()->callFunction(function, receiver, argc, argv); 861 return frame()->script().callFunction(function, receiver, argc, argv);
861 } 862 }
862 863
863 v8::Local<v8::Context> WebFrameImpl::mainWorldScriptContext() const 864 v8::Local<v8::Context> WebFrameImpl::mainWorldScriptContext() const
864 { 865 {
865 if (!frame()) 866 if (!frame())
866 return v8::Local<v8::Context>(); 867 return v8::Local<v8::Context>();
867 return ScriptController::mainWorldContext(frame()); 868 return ScriptController::mainWorldContext(frame());
868 } 869 }
869 870
870 v8::Handle<v8::Value> WebFrameImpl::createFileSystem(WebFileSystemType type, con st WebString& name, const WebString& path) 871 v8::Handle<v8::Value> WebFrameImpl::createFileSystem(WebFileSystemType type, con st WebString& name, const WebString& path)
(...skipping 1618 matching lines...) Expand 10 before | Expand all | Expand 10 after
2489 return; 2490 return;
2490 2491
2491 RefPtr<Document> ownerDocument(frame()->document()); 2492 RefPtr<Document> ownerDocument(frame()->document());
2492 2493
2493 // Protect privileged pages against bookmarklets and other javascript manipu lations. 2494 // Protect privileged pages against bookmarklets and other javascript manipu lations.
2494 if (SchemeRegistry::shouldTreatURLSchemeAsNotAllowingJavascriptURLs(frame()- >document()->url().protocol())) 2495 if (SchemeRegistry::shouldTreatURLSchemeAsNotAllowingJavascriptURLs(frame()- >document()->url().protocol()))
2495 return; 2496 return;
2496 2497
2497 String script = decodeURLEscapeSequences(url.string().substring(strlen("java script:"))); 2498 String script = decodeURLEscapeSequences(url.string().substring(strlen("java script:")));
2498 UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture); 2499 UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture);
2499 ScriptValue result = frame()->script()->executeScriptInMainWorldAndReturnVal ue(ScriptSourceCode(script)); 2500 ScriptValue result = frame()->script().executeScriptInMainWorldAndReturnValu e(ScriptSourceCode(script));
2500 2501
2501 String scriptResult; 2502 String scriptResult;
2502 if (!result.getString(scriptResult)) 2503 if (!result.getString(scriptResult))
2503 return; 2504 return;
2504 2505
2505 if (!frame()->navigationScheduler()->locationChangePending()) 2506 if (!frame()->navigationScheduler()->locationChangePending())
2506 frame()->document()->loader()->replaceDocument(scriptResult, ownerDocume nt.get()); 2507 frame()->document()->loader()->replaceDocument(scriptResult, ownerDocume nt.get());
2507 } 2508 }
2508 2509
2509 void WebFrameImpl::willDetachPage() 2510 void WebFrameImpl::willDetachPage()
2510 { 2511 {
2511 if (!frame() || !frame()->page()) 2512 if (!frame() || !frame()->page())
2512 return; 2513 return;
2513 2514
2514 // Do not expect string scoping results from any frames that got detached 2515 // Do not expect string scoping results from any frames that got detached
2515 // in the middle of the operation. 2516 // in the middle of the operation.
2516 if (m_scopingInProgress) { 2517 if (m_scopingInProgress) {
2517 2518
2518 // There is a possibility that the frame being detached was the only 2519 // There is a possibility that the frame being detached was the only
2519 // pending one. We need to make sure final replies can be sent. 2520 // pending one. We need to make sure final replies can be sent.
2520 flushCurrentScopingEffort(m_findRequestIdentifier); 2521 flushCurrentScopingEffort(m_findRequestIdentifier);
2521 2522
2522 cancelPendingScopingEffort(); 2523 cancelPendingScopingEffort();
2523 } 2524 }
2524 } 2525 }
2525 2526
2526 } // namespace WebKit 2527 } // namespace WebKit
OLDNEW
« no previous file with comments | « Source/web/WebDevToolsFrontendImpl.cpp ('k') | Source/web/WebPluginContainerImpl.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698