mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-05-01 00:38:48 +00:00
The spec intends to pass through a URL record object as it needs to be serialized on removal. This has no functional impact on our implementation other than the double parsing of every URL being revoked. It is also missing an error check for an invalid URL being passed through. This does not impact our implementation currently as we just end up using an empty URL which is not part of the blob entry map. This will cause problems once DOMURL::parse is updated to return an Optional<URL::URL> however.
38 lines
1.2 KiB
C++
38 lines
1.2 KiB
C++
/*
|
|
* Copyright (c) 2023, Tim Flynn <trflynn89@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/HashMap.h>
|
|
#include <AK/String.h>
|
|
#include <LibGC/Ptr.h>
|
|
#include <LibGC/Root.h>
|
|
#include <LibURL/URL.h>
|
|
#include <LibWeb/Forward.h>
|
|
|
|
namespace Web::FileAPI {
|
|
|
|
// https://w3c.github.io/FileAPI/#blob-url-entry
|
|
struct BlobURLEntry {
|
|
GC::Root<Blob> object; // FIXME: This could also be a MediaSource after we implement MSE.
|
|
GC::Root<HTML::EnvironmentSettingsObject> environment;
|
|
};
|
|
|
|
// https://w3c.github.io/FileAPI/#BlobURLStore
|
|
using BlobURLStore = HashMap<String, BlobURLEntry>;
|
|
|
|
BlobURLStore& blob_url_store();
|
|
ErrorOr<String> generate_new_blob_url();
|
|
ErrorOr<String> add_entry_to_blob_url_store(GC::Ref<Blob> object);
|
|
bool check_for_same_partition_blob_url_usage(URL::BlobURLEntry const&, GC::Ref<HTML::Environment>);
|
|
struct NavigationEnvironment { };
|
|
Optional<URL::BlobURLEntry::Object> obtain_a_blob_object(URL::BlobURLEntry const&, Variant<GC::Ref<HTML::Environment>, NavigationEnvironment> environment);
|
|
void remove_entry_from_blob_url_store(URL::URL const& url);
|
|
Optional<BlobURLEntry const&> resolve_a_blob_url(URL::URL const&);
|
|
|
|
void run_unloading_cleanup_steps(GC::Ref<DOM::Document>);
|
|
|
|
}
|