diff options
Diffstat (limited to 'src/bun.js/bindings/blob.cpp')
-rw-r--r-- | src/bun.js/bindings/blob.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/bun.js/bindings/blob.cpp b/src/bun.js/bindings/blob.cpp index 257f230e1..0f255d7c8 100644 --- a/src/bun.js/bindings/blob.cpp +++ b/src/bun.js/bindings/blob.cpp @@ -1,17 +1,29 @@ #include "blob.h" +#include "ZigGeneratedClasses.h" extern "C" JSC::EncodedJSValue Blob__create(JSC::JSGlobalObject* globalObject, void* impl); +extern "C" void* Blob__setAsFile(void* impl, BunString* filename); namespace WebCore { JSC::JSValue toJS(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, WebCore::Blob& impl) { + BunString filename = Bun::toString(impl.fileName()); + impl.m_impl = Blob__setAsFile(impl.impl(), &filename); + return JSC::JSValue::decode(Blob__create(lexicalGlobalObject, Blob__dupe(impl.impl()))); } JSC::JSValue toJSNewlyCreated(JSC::JSGlobalObject* lexicalGlobalObject, JSDOMGlobalObject* globalObject, Ref<WebCore::Blob>&& impl) { - return JSC::JSValue::decode(Blob__create(lexicalGlobalObject, impl->impl())); + auto fileNameStr = impl->fileName(); + BunString filename = Bun::toString(fileNameStr); + + EncodedJSValue encoded = Blob__create(lexicalGlobalObject, impl->impl()); + JSBlob* blob = jsCast<JSBlob*>(JSC::JSValue::decode(encoded)); + Blob__setAsFile(blob->wrapped(), &filename); + + return JSC::JSValue::decode(encoded); } }
\ No newline at end of file |