LibWeb: Support loading data: URLs transparently via ResourceLoader
This is pretty darn cool! :^)
This commit is contained in:
parent
50c1eca9d4
commit
e3232eb25b
Notes:
sideshowbarker
2024-07-19 07:15:34 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/e3232eb25be
2 changed files with 24 additions and 0 deletions
8
Base/home/anon/www/data-url.html
Normal file
8
Base/home/anon/www/data-url.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
<img src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7">
|
||||
<br>
|
||||
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAFqElEQVRYw9VXa0wUVxT+9gUs+FgoGsHUJdUK1SpsLNKqVKItitJKaAW1tlZSMNHYxvLDGhrdptZHGtukD9tuE2y0gI/Yoq26gqgprI3SdhVLZDWoS2TBF8i6y+zOzJ3bH+4OM/uCUJOmJ5lk7pmZ+333O+eeewb4j00x1BdTyxo195u27cibk7VKoVTHWW6yrEKhiqWgVBAEhvLeu8TrvMH03GzJKtq66ZhxBvtYCMzdeCHhRuN3lQtmTMpftCBf5fd/9lt/yPffmxOLTd8edjnv2ut1hpISmyn7wbAJjEsv3F2QM3PN/HmLlYkJWtFf9ZcHtk43UsfHgQJYkRGNnt5+bK13gSMURKCYbczF8RUb+pjulr19bb++Gw5DHUZulbdt/6mP1q/JGRGjQIJOKwIDQNstN7ycAJeHgOMFcJwaNa0CJibHotXuEudZVP35aIuxbr1mVPIzT2S8udBmyiaDKpBa1qji239uTp5RbBB94+Ng63SDUoDxEjCsACLQQeM725gLALAY69B7+WBz/LSiFwJJBBFIeXFtw5PPr5on9VEK9HsJGC/BEHDDkjm6ZGXdvebvF0j9SlnMMwp3Fx4yz8ssXy76CKHoecjB7Rk+uN9ePfJj7ui0/C9CKjB344WEuJTF99MKR4oPG7dXYcKYGEhxpTEOJbde8yhyds4Ki7Eu6Pn1WoKuiw3x/t2hGpBZqNGO2pXm+P11jJ91GE07quDs53Gnj8VYXRTmPhsPtVIJtVqBsboo3O1jgyYHgD6hGzpVEnSqJLyxSI2M+Wdx7pQBE3L2Qa8xQDn5Nqyfep5mui8dFBV4+cPm6A7rsXtjp+aN8E/U85ADT+iQ4xvK9BoDLpm+RnrZOtg5q6jOmUN/oOtiQ7TNlM0qAcB6ePO2MVMGwL2cMGxwqezVFTvRanfBzllFn52z4qkCFbpOf7xVrANRugnTKAUUCiDXkAi3h+Cqww0A0K2eFTRxOAt8J5Dc9OiFIpmoeH26uAuU0aNS/PudJxTa/LeRXrYubMJFkj5SOMR8EwBV9MgUUQGlJmYcANg63VAWzQHPeQddcTigSPaLazsAgO2jmPTKl5NvN/kIKJQqLQUFIcC9yjMAgKl6+JInstzSajcU4xmAsIAgBBYiCri9BK12F1rtLvxUYcCWMefwYM+j69/ILyPgpsGHESU8w/J05KWvZvvPAwBAiUMLi9EFmylb9lGJQxs2+fQag5ho0vtkdRp4VsA1clFWAZUA4PUwXW4PL4L7ASuTmSBwvz9cKAKJSJOPcwvi/bXad9pFBW437Zqsm1KAJABOUzaSANRKJssaRiJK9z4AEE4A7x0gILAuu6wfcPpWWhsAet53ZUXYVsnqNACAg28LWrWfiMclz2bW2dkSdBpKV50kuS8AcELeM6C6Yqc4dvBtcPBtMlA7ZxXfadp8HLfcNvF5h5kgMbP0AzEXkgBa6wMKJFIAoFIyzvMlYWUyg9SyxrBhkCYm8TpBCQv/MX/yrSVHei8fKAhSINCyfOB5vitSEoY2CoF1ycA7zAQJ04tLZP2AX4FA8BOSVcM3zhO3Z+S6L/BAU8UBPPd+kcx/vDjnG+dV81pZHeiKAI4QRCzGOthM2Sj8xIqJ42Jx9PydAUW2mCHwHggcg8xyOXh9ydLTzqv71oZsybLCrDwvhLD+2tBqd6G9ux9T9SNg2WIG9xDgmV4IXD8yy5fJvjlVutKamFmWG6krpghYeaD0gVXQYjwJyrMQCAtKWP8UovnjXl9SdDYxs/SlQdvyJIB2BZBAgAqrrmshcIDAUxBfV9a8qyZIpczy5egwE/y9Z74s5kP5MwrZCq1oiUH1dI84XmaNCZv7HWaCKzWvHU2YVrS6vaqw57H8nKYs3Rt1/88fdqSva9xACUDJAFMFAIUKuFJd3MA5HS2JM0s33di/3Iv/g/0DlSqwIPvu0LgAAAAASUVORK5CYII=">
|
||||
</body>
|
||||
</html>
|
|
@ -24,6 +24,7 @@
|
|||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <AK/Base64.h>
|
||||
#include <AK/SharedBuffer.h>
|
||||
#include <LibCore/EventLoop.h>
|
||||
#include <LibCore/File.h>
|
||||
|
@ -72,6 +73,21 @@ void ResourceLoader::load(const URL& url, Function<void(const ByteBuffer&)> succ
|
|||
return;
|
||||
}
|
||||
|
||||
if (url.protocol() == "data") {
|
||||
dbg() << "ResourceLoader loading a data URL with mime-type: '" << url.data_mime_type() << "', base64=" << url.data_payload_is_base64() << ", payload='" << url.data_payload() << "'";
|
||||
|
||||
ByteBuffer data;
|
||||
if (url.data_payload_is_base64())
|
||||
data = decode_base64(url.data_payload());
|
||||
else
|
||||
data = url.data_payload().to_byte_buffer();
|
||||
|
||||
deferred_invoke([data = move(data), success_callback = move(success_callback)](auto&) {
|
||||
success_callback(data);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (url.protocol() == "file") {
|
||||
auto f = Core::File::construct();
|
||||
f->set_filename(url.path());
|
||||
|
|
Loading…
Add table
Reference in a new issue