Index: Source/web/WebLocalFrameImpl.cpp |
diff --git a/Source/web/WebLocalFrameImpl.cpp b/Source/web/WebLocalFrameImpl.cpp |
index dd6cad8df2d3d1d79ce9261263952911233d1416..b6643073c54dac9564450ffc19a214e00dd23780 100644 |
--- a/Source/web/WebLocalFrameImpl.cpp |
+++ b/Source/web/WebLocalFrameImpl.cpp |
@@ -744,6 +744,7 @@ void WebLocalFrameImpl::executeScript(const WebScriptSource& source) |
{ |
ASSERT(frame()); |
TextPosition position(OrdinalNumber::fromOneBasedInt(source.startLine), OrdinalNumber::first()); |
+ v8::HandleScope handleScope(toIsolate(frame())); |
frame()->script().executeScriptInMainWorld(ScriptSourceCode(source.code, source.url, position)); |
} |
@@ -759,6 +760,7 @@ void WebLocalFrameImpl::executeScriptInIsolatedWorld(int worldID, const WebScrip |
sources.append(ScriptSourceCode(sourcesIn[i].code, sourcesIn[i].url, position)); |
} |
+ v8::HandleScope handleScope(toIsolate(frame())); |
frame()->script().executeScriptInIsolatedWorld(worldID, sources, extensionGroup, 0); |
} |
@@ -826,7 +828,7 @@ v8::Handle<v8::Value> WebLocalFrameImpl::executeScriptAndReturnValue(const WebSc |
UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture); |
TextPosition position(OrdinalNumber::fromOneBasedInt(source.startLine), OrdinalNumber::first()); |
- return frame()->script().executeScriptInMainWorldAndReturnValue(ScriptSourceCode(source.code, source.url, position)).v8Value(); |
+ return frame()->script().executeScriptInMainWorldAndReturnValue(ScriptSourceCode(source.code, source.url, position)); |
} |
void WebLocalFrameImpl::executeScriptInIsolatedWorld(int worldID, const WebScriptSource* sourcesIn, unsigned numSources, int extensionGroup, WebVector<v8::Local<v8::Value> >* results) |
@@ -843,13 +845,14 @@ void WebLocalFrameImpl::executeScriptInIsolatedWorld(int worldID, const WebScrip |
} |
if (results) { |
- Vector<ScriptValue> scriptResults; |
+ Vector<v8::Local<v8::Value> > scriptResults; |
frame()->script().executeScriptInIsolatedWorld(worldID, sources, extensionGroup, &scriptResults); |
WebVector<v8::Local<v8::Value> > v8Results(scriptResults.size()); |
for (unsigned i = 0; i < scriptResults.size(); i++) |
- v8Results[i] = v8::Local<v8::Value>::New(toIsolate(frame()), scriptResults[i].v8Value()); |
+ v8Results[i] = v8::Local<v8::Value>::New(toIsolate(frame()), scriptResults[i]); |
results->swap(v8Results); |
} else { |
+ v8::HandleScope handleScope(toIsolate(frame())); |
frame()->script().executeScriptInIsolatedWorld(worldID, sources, extensionGroup, 0); |
} |
} |
@@ -1882,12 +1885,11 @@ void WebLocalFrameImpl::loadJavaScriptURL(const KURL& url) |
String script = decodeURLEscapeSequences(url.string().substring(strlen("javascript:"))); |
UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture); |
- ScriptValue result = frame()->script().executeScriptInMainWorldAndReturnValue(ScriptSourceCode(script)); |
- |
- String scriptResult; |
- if (!result.toString(scriptResult)) |
+ v8::HandleScope handleScope(toIsolate(frame())); |
+ v8::Local<v8::Value> result = frame()->script().executeScriptInMainWorldAndReturnValue(ScriptSourceCode(script)); |
+ if (result.IsEmpty() || !result->IsString()) |
return; |
- |
+ String scriptResult = toCoreString(v8::Handle<v8::String>::Cast(result)); |
if (!frame()->navigationScheduler().locationChangePending()) |
frame()->document()->loader()->replaceDocument(scriptResult, ownerDocument.get()); |
} |