aboutsummaryrefslogtreecommitdiff
path: root/ext/js/media/media-util.js
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2021-03-14 18:41:15 -0400
committerGitHub <noreply@github.com>2021-03-14 18:41:15 -0400
commit07df1e011794f5a77f7fb7da5cd9ea353a8747e2 (patch)
tree98a679d4ef07629b8f0121e244038c557c972bd8 /ext/js/media/media-util.js
parent52a4d874eada5be121e15d73d1d10e9a8d84bdb8 (diff)
Fix dictionary image support (#1526)
* Fix content security policy for images * Add createBlobFromBase64Content to MediaUtil * Update MediaLoader to use MediaUtil * Use blob URLs when importing dictionaries * Update VM's URL to support createObjectURL and revokeObjectURL * Fix test
Diffstat (limited to 'ext/js/media/media-util.js')
-rw-r--r--ext/js/media/media-util.js16
1 files changed, 16 insertions, 0 deletions
diff --git a/ext/js/media/media-util.js b/ext/js/media/media-util.js
index 11172c5c..f783038a 100644
--- a/ext/js/media/media-util.js
+++ b/ext/js/media/media-util.js
@@ -129,4 +129,20 @@ class MediaUtil {
return null;
}
}
+
+ /**
+ * Creates a new `Blob` object from a base64 string of content.
+ * @param content The binary content string encoded in base64.
+ * @param mediaType The type of the media.
+ * @returns A new `Blob` object corresponding to the specified content.
+ */
+ static createBlobFromBase64Content(content, mediaType) {
+ const binaryContent = atob(content);
+ const length = binaryContent.length;
+ const array = new Uint8Array(length);
+ for (let i = 0; i < length; ++i) {
+ array[i] = binaryContent.charCodeAt(i);
+ }
+ return new Blob([array.buffer], {type: mediaType});
+ }
}