Files
UnrealEngineUWP/Engine/Source/Runtime/WebBrowser/Private/MobileJS/MobileJSStructSerializerBackend.h
Sorin Gradinaru 1d89a48b13 UEMOB-185 Implement the equivalent of FAndroidJSScripting for iOS
UE-59488 FWebBrowserWindow::UnbindUObject of IOSPlatformWebBrowser.cpp is not implemented yet

#jira UEMOB-185
#jira UE-59488
#4.21
#iOS
#rb Jack.Porter

New methods (using WebKit, matching the Android implementation):
- Go back/forward
- HandlePageLoading (loading/didCommitNavigation, loaded/didFinishNavigation)
- HandleReceivedError (didFailNavigation)
- execute JS code
- controlling the client using JS commands (WKWebViewConfiguration & WKUserContentController):
	- in Android we using shouldInterceptRequest to intercept a custom resource URL (JS: XMLHttpRequest.send, document.location)
	- iOS will register handlers (JS: window.webkit.messageHandlers.<FMobileJSScripting::JSMessageHandler>.postMessage)

[CL 4343824 by Sorin Gradinaru in Dev-Mobile branch]
2018-09-05 04:55:55 -04:00

45 lines
1.0 KiB
C++

// Copyright 1998-2018 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#if PLATFORM_ANDROID || PLATFORM_IOS
#include "MobileJSScripting.h"
#include "Backends/JsonStructSerializerBackend.h"
class UObject;
/**
* Implements a writer for UStruct serialization using JavaScript.
*
* Based on FJsonStructSerializerBackend, it adds support for certain object types not representable in pure JSON
*
*/
class FMobileJSStructSerializerBackend
: public FJsonStructSerializerBackend
{
public:
/**
* Creates and initializes a new instance.
*
* @param InScripting An instance of a web browser scripting obnject.
*/
FMobileJSStructSerializerBackend(FMobileJSScriptingRef InScripting);
public:
virtual void WriteProperty(const FStructSerializerState& State, int32 ArrayIndex = 0) override;
FString ToString();
private:
void WriteUObject(const FStructSerializerState& State, UObject* Value);
FMobileJSScriptingRef Scripting;
TArray<uint8> ReturnBuffer;
FMemoryWriter Writer;
};
#endif // PLATFORM_ANDROID || PLATFORM_IOS