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

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

Issue 326853002: Revert of Add an ASSERT about cross-world wrapper leakage into ScriptValue (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 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
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 707 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 { 718 {
719 if (!frame() || !frame()->script().canExecuteScripts(NotAboutToExecuteScript )) 719 if (!frame() || !frame()->script().canExecuteScripts(NotAboutToExecuteScript ))
720 return; 720 return;
721 frame()->script().bindToWindowObject(frame(), String(name), object); 721 frame()->script().bindToWindowObject(frame(), String(name), object);
722 } 722 }
723 723
724 void WebLocalFrameImpl::executeScript(const WebScriptSource& source) 724 void WebLocalFrameImpl::executeScript(const WebScriptSource& source)
725 { 725 {
726 ASSERT(frame()); 726 ASSERT(frame());
727 TextPosition position(OrdinalNumber::fromOneBasedInt(source.startLine), Ordi nalNumber::first()); 727 TextPosition position(OrdinalNumber::fromOneBasedInt(source.startLine), Ordi nalNumber::first());
728 v8::HandleScope handleScope(toIsolate(frame()));
729 frame()->script().executeScriptInMainWorld(ScriptSourceCode(source.code, sou rce.url, position)); 728 frame()->script().executeScriptInMainWorld(ScriptSourceCode(source.code, sou rce.url, position));
730 } 729 }
731 730
732 void WebLocalFrameImpl::executeScriptInIsolatedWorld(int worldID, const WebScrip tSource* sourcesIn, unsigned numSources, int extensionGroup) 731 void WebLocalFrameImpl::executeScriptInIsolatedWorld(int worldID, const WebScrip tSource* sourcesIn, unsigned numSources, int extensionGroup)
733 { 732 {
734 ASSERT(frame()); 733 ASSERT(frame());
735 RELEASE_ASSERT(worldID > 0); 734 RELEASE_ASSERT(worldID > 0);
736 RELEASE_ASSERT(worldID < EmbedderWorldIdLimit); 735 RELEASE_ASSERT(worldID < EmbedderWorldIdLimit);
737 736
738 Vector<ScriptSourceCode> sources; 737 Vector<ScriptSourceCode> sources;
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 { 800 {
802 ASSERT(frame()); 801 ASSERT(frame());
803 802
804 // FIXME: This fake user gesture is required to make a bunch of pyauto 803 // FIXME: This fake user gesture is required to make a bunch of pyauto
805 // tests pass. If this isn't needed in non-test situations, we should 804 // tests pass. If this isn't needed in non-test situations, we should
806 // consider removing this code and changing the tests. 805 // consider removing this code and changing the tests.
807 // http://code.google.com/p/chromium/issues/detail?id=86397 806 // http://code.google.com/p/chromium/issues/detail?id=86397
808 UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture); 807 UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture);
809 808
810 TextPosition position(OrdinalNumber::fromOneBasedInt(source.startLine), Ordi nalNumber::first()); 809 TextPosition position(OrdinalNumber::fromOneBasedInt(source.startLine), Ordi nalNumber::first());
811 return frame()->script().executeScriptInMainWorldAndReturnValue(ScriptSource Code(source.code, source.url, position)); 810 return frame()->script().executeScriptInMainWorldAndReturnValue(ScriptSource Code(source.code, source.url, position)).v8Value();
812 } 811 }
813 812
814 void WebLocalFrameImpl::executeScriptInIsolatedWorld(int worldID, const WebScrip tSource* sourcesIn, unsigned numSources, int extensionGroup, WebVector<v8::Local <v8::Value> >* results) 813 void WebLocalFrameImpl::executeScriptInIsolatedWorld(int worldID, const WebScrip tSource* sourcesIn, unsigned numSources, int extensionGroup, WebVector<v8::Local <v8::Value> >* results)
815 { 814 {
816 ASSERT(frame()); 815 ASSERT(frame());
817 RELEASE_ASSERT(worldID > 0); 816 RELEASE_ASSERT(worldID > 0);
818 RELEASE_ASSERT(worldID < EmbedderWorldIdLimit); 817 RELEASE_ASSERT(worldID < EmbedderWorldIdLimit);
819 818
820 Vector<ScriptSourceCode> sources; 819 Vector<ScriptSourceCode> sources;
821 820
822 for (unsigned i = 0; i < numSources; ++i) { 821 for (unsigned i = 0; i < numSources; ++i) {
823 TextPosition position(OrdinalNumber::fromOneBasedInt(sourcesIn[i].startL ine), OrdinalNumber::first()); 822 TextPosition position(OrdinalNumber::fromOneBasedInt(sourcesIn[i].startL ine), OrdinalNumber::first());
824 sources.append(ScriptSourceCode(sourcesIn[i].code, sourcesIn[i].url, pos ition)); 823 sources.append(ScriptSourceCode(sourcesIn[i].code, sourcesIn[i].url, pos ition));
825 } 824 }
826 825
827 if (results) { 826 if (results) {
828 Vector<v8::Local<v8::Value> > scriptResults; 827 Vector<ScriptValue> scriptResults;
829 frame()->script().executeScriptInIsolatedWorld(worldID, sources, extensi onGroup, &scriptResults); 828 frame()->script().executeScriptInIsolatedWorld(worldID, sources, extensi onGroup, &scriptResults);
830 WebVector<v8::Local<v8::Value> > v8Results(scriptResults.size()); 829 WebVector<v8::Local<v8::Value> > v8Results(scriptResults.size());
831 for (unsigned i = 0; i < scriptResults.size(); i++) 830 for (unsigned i = 0; i < scriptResults.size(); i++)
832 v8Results[i] = v8::Local<v8::Value>::New(toIsolate(frame()), scriptR esults[i]); 831 v8Results[i] = v8::Local<v8::Value>::New(toIsolate(frame()), scriptR esults[i].v8Value());
833 results->swap(v8Results); 832 results->swap(v8Results);
834 } else { 833 } else {
835 frame()->script().executeScriptInIsolatedWorld(worldID, sources, extensi onGroup, 0); 834 frame()->script().executeScriptInIsolatedWorld(worldID, sources, extensi onGroup, 0);
836 } 835 }
837 } 836 }
838 837
839 v8::Handle<v8::Value> WebLocalFrameImpl::callFunctionEvenIfScriptDisabled(v8::Ha ndle<v8::Function> function, v8::Handle<v8::Value> receiver, int argc, v8::Handl e<v8::Value> argv[]) 838 v8::Handle<v8::Value> WebLocalFrameImpl::callFunctionEvenIfScriptDisabled(v8::Ha ndle<v8::Function> function, v8::Handle<v8::Value> receiver, int argc, v8::Handl e<v8::Value> argv[])
840 { 839 {
841 ASSERT(frame()); 840 ASSERT(frame());
842 return frame()->script().callFunction(function, receiver, argc, argv); 841 return frame()->script().callFunction(function, receiver, argc, argv);
(...skipping 1011 matching lines...) Expand 10 before | Expand all | Expand 10 after
1854 return; 1853 return;
1855 1854
1856 RefPtrWillBeRawPtr<Document> ownerDocument(frame()->document()); 1855 RefPtrWillBeRawPtr<Document> ownerDocument(frame()->document());
1857 1856
1858 // Protect privileged pages against bookmarklets and other javascript manipu lations. 1857 // Protect privileged pages against bookmarklets and other javascript manipu lations.
1859 if (SchemeRegistry::shouldTreatURLSchemeAsNotAllowingJavascriptURLs(frame()- >document()->url().protocol())) 1858 if (SchemeRegistry::shouldTreatURLSchemeAsNotAllowingJavascriptURLs(frame()- >document()->url().protocol()))
1860 return; 1859 return;
1861 1860
1862 String script = decodeURLEscapeSequences(url.string().substring(strlen("java script:"))); 1861 String script = decodeURLEscapeSequences(url.string().substring(strlen("java script:")));
1863 UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture); 1862 UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture);
1864 v8::HandleScope handleScope(toIsolate(frame())); 1863 ScriptValue result = frame()->script().executeScriptInMainWorldAndReturnValu e(ScriptSourceCode(script));
1865 v8::Local<v8::Value> result = frame()->script().executeScriptInMainWorldAndR eturnValue(ScriptSourceCode(script)); 1864
1866 if (result.IsEmpty() || !result->IsString()) 1865 String scriptResult;
1866 if (!result.toString(scriptResult))
1867 return; 1867 return;
1868 String scriptResult = toCoreString(v8::Handle<v8::String>::Cast(result)); 1868
1869 if (!frame()->navigationScheduler().locationChangePending()) 1869 if (!frame()->navigationScheduler().locationChangePending())
1870 frame()->document()->loader()->replaceDocument(scriptResult, ownerDocume nt.get()); 1870 frame()->document()->loader()->replaceDocument(scriptResult, ownerDocume nt.get());
1871 } 1871 }
1872 1872
1873 void WebLocalFrameImpl::willDetachParent() 1873 void WebLocalFrameImpl::willDetachParent()
1874 { 1874 {
1875 // Do not expect string scoping results from any frames that got detached 1875 // Do not expect string scoping results from any frames that got detached
1876 // in the middle of the operation. 1876 // in the middle of the operation.
1877 if (m_textFinder && m_textFinder->scopingInProgress()) { 1877 if (m_textFinder && m_textFinder->scopingInProgress()) {
1878 1878
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1920 1920
1921 void WebLocalFrameImpl::invalidateAll() const 1921 void WebLocalFrameImpl::invalidateAll() const
1922 { 1922 {
1923 ASSERT(frame() && frame()->view()); 1923 ASSERT(frame() && frame()->view());
1924 FrameView* view = frame()->view(); 1924 FrameView* view = frame()->view();
1925 view->invalidateRect(view->frameRect()); 1925 view->invalidateRect(view->frameRect());
1926 invalidateScrollbar(); 1926 invalidateScrollbar();
1927 } 1927 }
1928 1928
1929 } // namespace blink 1929 } // namespace blink
OLDNEW
« no previous file with comments | « Source/modules/serviceworkers/WaitUntilObserver.cpp ('k') | Source/web/WebPluginContainerImpl.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698