Files
UnrealEngineUWP/Engine/Source/Runtime/WebBrowser/Private/Android/AndroidJSStructSerializerBackend.cpp
Jeff Fisher fdd9530e96 UE-59012 //UE4/Main - Compile UE4Game Lumin - WARNING: Precompiled module 'PurchaseFlow' will not be usable without non-precompiled module 'WebBrowser'.
-Lumin is built with USE_ANDROID_JNI=0.  The Android implementation of the WebBrowser uses JNI, so it fails to compile.  This change wraps more JNI using code in #if USE_ANDROID_JNI and sets DUMMY_WEB_BROWSER if USE_ANDROID_JNI is false to avoid using the AndroidJavaWebBrowser.
-Previously WebBrowser had been set to not be precompiled, which avoided the compile breaks but created the warnings.
#review-4072139
#rb chris.babcock
#lockdown nick.penwarden
#jira UE-59012

[CL 4072723 by Jeff Fisher in Main branch]
2018-05-15 10:26:58 -04:00

62 lines
2.0 KiB
C++

// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
#include "AndroidJSStructSerializerBackend.h"
#if USE_ANDROID_JNI
#include "AndroidJSScripting.h"
#include "UObject/UnrealType.h"
#include "UObject/PropertyPortFlags.h"
#include "Templates/Casts.h"
void FAndroidJSStructSerializerBackend::WriteProperty(const FStructSerializerState& State, int32 ArrayIndex)
{
// The parent class serialzes UObjects as NULLs
if (State.ValueType == UObjectProperty::StaticClass())
{
WriteUObject(State, CastChecked<UObjectProperty>(State.ValueProperty)->GetPropertyValue_InContainer(State.ValueData, ArrayIndex));
}
// basic property type (json serializable)
else
{
FJsonStructSerializerBackend::WriteProperty(State, ArrayIndex);
}
}
void FAndroidJSStructSerializerBackend::WriteUObject(const FStructSerializerState& State, UObject* Value)
{
// Note this function uses WriteRawJSONValue to append non-json data to the output stream.
FString RawValue = Scripting->ConvertObject(Value);
if ((State.ValueProperty == nullptr) || (State.ValueProperty->ArrayDim > 1) || (State.ValueProperty->GetOuter()->GetClass() == UArrayProperty::StaticClass()))
{
GetWriter()->WriteRawJSONValue(RawValue);
}
else if (State.KeyProperty != nullptr)
{
FString KeyString;
State.KeyProperty->ExportTextItem(KeyString, State.KeyData, nullptr, nullptr, PPF_None);
GetWriter()->WriteRawJSONValue(KeyString, RawValue);
}
else
{
GetWriter()->WriteRawJSONValue(Scripting->GetBindingName(State.ValueProperty), RawValue);
}
}
FString FAndroidJSStructSerializerBackend::ToString()
{
ReturnBuffer.Add(0);
ReturnBuffer.Add(0);
auto CastObject = StringCast<TCHAR>((UCS2CHAR*)ReturnBuffer.GetData());
return FString(CastObject.Get(), CastObject.Length());
}
FAndroidJSStructSerializerBackend::FAndroidJSStructSerializerBackend(TSharedRef<class FAndroidJSScripting> InScripting)
: Scripting(InScripting)
, ReturnBuffer()
, Writer(ReturnBuffer)
, FJsonStructSerializerBackend(Writer)
{
}
#endif // USE_ANDROID_JNI