diff options
author | 2023-08-21 01:29:06 -0700 | |
---|---|---|
committer | 2023-08-21 01:29:06 -0700 | |
commit | c99a9ba33a36f16f79e38ff77423f5d301f6d2a8 (patch) | |
tree | 0ca11cdc93b665668c9c6d07da0ae865cd1f4c77 /src/bun.js/bindings/blob.cpp | |
parent | f75b949524ac4a41e0f015cb981f356444fab331 (diff) | |
download | bun-c99a9ba33a36f16f79e38ff77423f5d301f6d2a8.tar.gz bun-c99a9ba33a36f16f79e38ff77423f5d301f6d2a8.tar.zst bun-c99a9ba33a36f16f79e38ff77423f5d301f6d2a8.zip |
Implement File
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 |