Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion src/jni/Android.mk
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,6 @@ include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_CPPFLAGS += -std=c++11
LOCAL_CPPFLAGS += -fshort-wchar
LOCAL_MODULE := NativeScript
LOCAL_SRC_FILES := com_tns_Platform.cpp com_tns_JsDebugger.cpp com_tns_AssetExtractor.cpp com_tns_NativeScriptActity.cpp \
JEnv.cpp DirectBuffer.cpp \
Expand Down
23 changes: 6 additions & 17 deletions src/jni/ArgConverter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ void ArgConverter::NativeScriptLongFunctionCallback(const v8::FunctionCallbackIn
{
auto isolate = Isolate::GetCurrent();
args.This()->SetHiddenValue(V8StringConstants::GetJavaLong(), Boolean::New(isolate, true));
args.This()->SetHiddenValue(ConvertToV8String(V8StringConstants::MARKED_AS_LONG), args[0]);
args.This()->SetHiddenValue(V8StringConstants::GetMarkedAsLong(), args[0]);
args.This()->Set(V8StringConstants::GetValue(), args[0]);

args.This()->SetPrototype(Local<NumberObject>::New(Isolate::GetCurrent(), *NAN_NUMBER_OBJECT));
Expand Down Expand Up @@ -163,16 +163,11 @@ Local<String> ArgConverter::jstringToV8String(jstring value)
return Handle<String>();
}

jsize utfLength;
bool readInBuffer = ReadJStringInBuffer(value, utfLength);
if(readInBuffer) {
return ConvertToV8String(charBuffer, utfLength);
}

JEnv env;
const char* chars = env.GetStringUTFChars(value, NULL);
auto v8String = ConvertToV8String(chars, utfLength);
env.ReleaseStringUTFChars(value, chars);
auto chars = env.GetStringChars(value, NULL);
auto length = env.GetStringLength(value);
auto v8String = ConvertToV8String(chars, length);
env.ReleaseStringChars(value, chars);

return v8String;
}
Expand All @@ -197,13 +192,7 @@ bool ArgConverter::ReadJStringInBuffer(jstring value, jsize& utfLength) {

Handle<String> ArgConverter::jcharToV8String(jchar value)
{
JEnv env;

JniLocalRef str(env.NewString(&value, 1));
jboolean bol = true;
const char* resP = env.GetStringUTFChars(str, &bol);
auto v8String = ConvertToV8String(resP, 1);
env.ReleaseStringUTFChars(str, resP);
auto v8String = ConvertToV8String(&value, 1);
return v8String;
}

Expand Down
19 changes: 1 addition & 18 deletions src/jni/JsArgConverter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -330,24 +330,7 @@ bool JsArgConverter::ConvertJavaScriptBoolean(JEnv& env, const Handle<Value>& js

bool JsArgConverter::ConvertJavaScriptString(JEnv& env, const Handle<Value>& jsValue, int index)
{
Handle<String> argAsString;
if (jsValue->IsStringObject())
{
auto stringObject = Handle<StringObject>::Cast(jsValue);
argAsString = stringObject->ValueOf();
}
else
{
argAsString = jsValue->ToString();
}

String::Utf8Value stringValue(argAsString);
// int strLength = stringValue.length();
//
// JniLocalRef strData(env.NewByteArray(strLength));
// env.SetByteArrayRegion(strData, 0, strLength, (jbyte*)*stringValue);
// JniLocalRef stringObject(env.NewObject(STRING_CLASS, STRING_CTOR, (jbyteArray)strData, UTF_8_ENCODING));
JniLocalRef stringObject(env.NewStringUTF((const char*)*stringValue));
JniLocalRef stringObject(ConvertToJavaString(jsValue));
SetConvertedObject(env, index, stringObject);

return true;
Expand Down
19 changes: 1 addition & 18 deletions src/jni/JsArgToArrayConverter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -148,24 +148,7 @@ bool JsArgToArrayConverter::ConvertArg(const Handle<Value>& arg, int index)
}
else if (arg->IsString() || arg->IsStringObject())
{
Handle<String> argAsString;
if (arg->IsStringObject())
{
auto stringObject = *reinterpret_cast<v8::Handle<StringObject>*>(const_cast<v8::Handle<Value>*>(&arg));
argAsString = stringObject->ValueOf();
}
else
{
argAsString = arg->ToString();
}

String::Utf8Value stringValue(argAsString);
// int strLength = stringValue.length();
//
// JniLocalRef strData(env.NewByteArray(strLength));
// env.SetByteArrayRegion((jbyteArray)strData, 0, strLength, (jbyte*)*stringValue);
// JniLocalRef stringObject(env.NewObject(STRING_CLASS, STRING_CTOR, (jbyteArray)strData, UTF_8_ENCODING));
JniLocalRef stringObject(env.NewStringUTF((const char*)*stringValue));
JniLocalRef stringObject(ConvertToJavaString(arg));
SetConvertedObject(env, index, stringObject);

success = true;
Expand Down
26 changes: 25 additions & 1 deletion src/jni/V8GlobalHelpers.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#include "V8GlobalHelpers.h"
#include "JEnv.h"

using namespace v8;
using namespace std;
Expand All @@ -16,6 +17,30 @@ string tns::ConvertToString(const v8::Handle<String>& s)
}
}

jstring tns::ConvertToJavaString(const Handle<Value>& value)
{
Handle<String> valueAsString;
if (value->IsStringObject())
{
auto stringObject = Handle<StringObject>::Cast(value);
valueAsString = stringObject->ValueOf();
}
else
{
valueAsString = value->ToString();
}

JEnv env;
String::Value stringValue(valueAsString);
return env.NewString((const jchar*)*stringValue, valueAsString->Length());
}

Local<String> tns::ConvertToV8String(const jchar* data, int length)
{
auto isolate = Isolate::GetCurrent();
return String::NewFromTwoByte(isolate, (const uint16_t*)data, String::kNormalString, length);
}

Local<String> tns::ConvertToV8String(const string& s)
{
auto isolate = Isolate::GetCurrent();
Expand All @@ -39,4 +64,3 @@ bool tns::V8SetHiddenValue(const Handle<Object>& obj, const string& propName, co
auto s = tns::ConvertToV8String(propName);
return obj->SetHiddenValue(s, value);
}

5 changes: 5 additions & 0 deletions src/jni/V8GlobalHelpers.h
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
#ifndef V8GLOBALHELPERS_H_
#define V8GLOBALHELPERS_H_

#include "jni.h"
#include "v8.h"
#include <string>

namespace tns
{
std::string ConvertToString(const v8::Handle<v8::String>& s);

jstring ConvertToJavaString(const v8::Handle<v8::Value>& jsValue);

v8::Local<v8::String> ConvertToV8String(const jchar* data, int length);

v8::Local<v8::String> ConvertToV8String(const std::string& s);

v8::Local<v8::String> ConvertToV8String(const char *data, int length);
Expand Down
1 change: 1 addition & 0 deletions test-app/assets/app/bootstrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ global.__JUnitSaveResults = function (unitTestResults) {
var unitTestFileName = 'android_unit_test_results.xml';
try {
var javaFile = new java.io.File(pathToSdcard, unitTestFileName);

var stream = new java.io.FileOutputStream(javaFile);
var actualEncoding = 'UTF-8';
var writer = new java.io.OutputStreamWriter(stream, actualEncoding);
Expand Down
2 changes: 1 addition & 1 deletion test-app/try_to_find_test_result_file.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ var sys = require('sys'),

isTimeToExit = false,

processTimeout = 700000,
processTimeout = 11 * 60 * 1000, // 11 minutes timeout (empirical constant :))
searchInterval = 10000;


Expand Down