Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / bindings / v8 / ScriptFunctionCall.cpp
index 6a176dc..6f6947c 100644 (file)
@@ -62,14 +62,14 @@ void ScriptCallArgumentHandler::appendArgument(const String& argument)
 {
     v8::Isolate* isolate = m_scriptState->isolate();
     ScriptScope scope(m_scriptState);
-    m_arguments.append(ScriptValue(v8String(argument, isolate), isolate));
+    m_arguments.append(ScriptValue(v8String(isolate, argument), isolate));
 }
 
 void ScriptCallArgumentHandler::appendArgument(const char* argument)
 {
     v8::Isolate* isolate = m_scriptState->isolate();
     ScriptScope scope(m_scriptState);
-    m_arguments.append(ScriptValue(v8String(argument, isolate), isolate));
+    m_arguments.append(ScriptValue(v8String(isolate, argument), isolate));
 }
 
 void ScriptCallArgumentHandler::appendArgument(long argument)
@@ -113,6 +113,16 @@ void ScriptCallArgumentHandler::appendArgument(bool argument)
     m_arguments.append(ScriptValue(v8Boolean(argument, isolate), isolate));
 }
 
+void ScriptCallArgumentHandler::appendArgument(const Vector<ScriptValue>& argument)
+{
+    v8::Isolate* isolate = m_scriptState->isolate();
+    ScriptScope scope(m_scriptState);
+    v8::Handle<v8::Array> result = v8::Array::New(isolate, argument.size());
+    for (size_t i = 0; i < argument.size(); ++i)
+        result->Set(v8::Integer::New(isolate, i), argument[i].v8Value());
+    m_arguments.append(ScriptValue(result, isolate));
+}
+
 ScriptFunctionCall::ScriptFunctionCall(const ScriptObject& thisObject, const String& name)
     : ScriptCallArgumentHandler(thisObject.scriptState())
     , m_thisObject(thisObject)
@@ -125,7 +135,7 @@ ScriptValue ScriptFunctionCall::call(bool& hadException, bool reportExceptions)
     ScriptScope scope(m_scriptState, reportExceptions);
 
     v8::Handle<v8::Object> thisObject = m_thisObject.v8Object();
-    v8::Local<v8::Value> value = thisObject->Get(v8String(m_name, m_scriptState->isolate()));
+    v8::Local<v8::Value> value = thisObject->Get(v8String(m_scriptState->isolate(), m_name));
     if (!scope.success()) {
         hadException = true;
         return ScriptValue();
@@ -140,7 +150,7 @@ ScriptValue ScriptFunctionCall::call(bool& hadException, bool reportExceptions)
         ASSERT(!info[i].IsEmpty());
     }
 
-    v8::Local<v8::Value> result = V8ScriptRunner::callFunction(function, getExecutionContext(), thisObject, m_arguments.size(), info.get(), m_scriptState->isolate());
+    v8::Local<v8::Value> result = V8ScriptRunner::callFunction(function, currentExecutionContext(m_scriptState->isolate()), thisObject, m_arguments.size(), info.get(), m_scriptState->isolate());
     if (!scope.success()) {
         hadException = true;
         return ScriptValue();
@@ -160,7 +170,7 @@ ScriptObject ScriptFunctionCall::construct(bool& hadException, bool reportExcept
     ScriptScope scope(m_scriptState, reportExceptions);
 
     v8::Handle<v8::Object> thisObject = m_thisObject.v8Object();
-    v8::Local<v8::Value> value = thisObject->Get(v8String(m_name, m_scriptState->isolate()));
+    v8::Local<v8::Value> value = thisObject->Get(v8String(m_scriptState->isolate(), m_name));
     if (!scope.success()) {
         hadException = true;
         return ScriptObject();
@@ -191,12 +201,13 @@ ScriptCallback::ScriptCallback(ScriptState* state, const ScriptValue& function)
 
 ScriptValue ScriptCallback::call()
 {
-    ASSERT(v8::Context::InContext());
+    v8::Isolate* isolate = v8::Isolate::GetCurrent();
+    ASSERT(isolate->InContext());
     ASSERT(m_function.v8Value()->IsFunction());
 
     v8::TryCatch exceptionCatcher;
     exceptionCatcher.SetVerbose(true);
-    v8::Handle<v8::Object> object = v8::Context::GetCurrent()->Global();
+    v8::Handle<v8::Object> object = isolate->GetCurrentContext()->Global();
     v8::Handle<v8::Function> function = v8::Handle<v8::Function>::Cast(m_function.v8Value());
 
     OwnPtr<v8::Handle<v8::Value>[]> info = adoptArrayPtr(new v8::Handle<v8::Value>[m_arguments.size()]);