// Engine/Source/Runtime/WebBrowser/Private/CEF/CEFBrowserByteResource.cpp #include "CEF/CEFInterfaceBrowserByteResource.h" #if WITH_CEF3 FCEFInterfaceBrowserByteResource::FCEFInterfaceBrowserByteResource(const CefRefPtr& PostData, const FString& InMimeType) : Position(0) , Buffer(nullptr) , MimeType(InMimeType) { Size = PostData->GetBytesCount(); if (Size > 0) { Buffer = new unsigned char[Size]; PostData->GetBytes(Size, Buffer); } } FCEFInterfaceBrowserByteResource::~FCEFInterfaceBrowserByteResource() { delete[] Buffer; } void FCEFInterfaceBrowserByteResource::Cancel() { } void FCEFInterfaceBrowserByteResource::GetResponseHeaders(CefRefPtr Response, int64& ResponseLength, CefString& RedirectUrl) { Response->SetMimeType(TCHAR_TO_WCHAR(*MimeType)); Response->SetStatus(200); Response->SetStatusText("OK"); ResponseLength = Size; } bool FCEFInterfaceBrowserByteResource::ProcessRequest(CefRefPtr Request, CefRefPtr Callback) { Callback->Continue(); return true; } bool FCEFInterfaceBrowserByteResource::ReadResponse(void* DataOut, int BytesToRead, int& BytesRead, CefRefPtr Callback) { int32 BytesLeft = Size - Position; BytesRead = BytesLeft >= BytesToRead ? BytesToRead : BytesLeft; if (BytesRead > 0) { FMemory::Memcpy(DataOut, Buffer + Position, BytesRead); Position += BytesRead; return true; } return false; } #endif