mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 13:32:45 +00:00 
			
		
		
		
	LibWeb: Support loading data: URLs transparently via ResourceLoader
This is pretty darn cool! :^)
This commit is contained in:
		
							parent
							
								
									50c1eca9d4
								
							
						
					
					
						commit
						e3232eb25b
					
				
					 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
		Add a link
		
	
		Reference in a new issue
	
	 Andreas Kling
						Andreas Kling