Browse Source

LibWeb: Add the Web::URL namespace and move URLEncoder to it

This namespace will be used for all interfaces defined in the URL
specification, like URL and URLSearchParams.

This has the unfortunate side-effect of requiring us to use the fully
qualified AK::URL name whenever we want to refer to the AK class, so
this commit also fixes all such references.
Idan Horowitz 3 years ago
parent
commit
4629f2e4ad
54 changed files with 236 additions and 225 deletions
  1. 8 1
      Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp
  2. 1 1
      Userland/Libraries/LibWeb/CMakeLists.txt
  3. 1 1
      Userland/Libraries/LibWeb/CSS/CSSImportRule.cpp
  4. 4 4
      Userland/Libraries/LibWeb/CSS/CSSImportRule.h
  5. 4 4
      Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp
  6. 2 2
      Userland/Libraries/LibWeb/CSS/Parser/Parser.h
  7. 1 1
      Userland/Libraries/LibWeb/CSS/StyleValue.cpp
  8. 3 3
      Userland/Libraries/LibWeb/CSS/StyleValue.h
  9. 2 2
      Userland/Libraries/LibWeb/DOM/Document.cpp
  10. 6 6
      Userland/Libraries/LibWeb/DOM/Document.h
  11. 1 1
      Userland/Libraries/LibWeb/DOM/Window.cpp
  12. 1 1
      Userland/Libraries/LibWeb/DOM/Window.h
  13. 3 0
      Userland/Libraries/LibWeb/Forward.h
  14. 1 1
      Userland/Libraries/LibWeb/HTML/HTMLCanvasElement.cpp
  15. 5 5
      Userland/Libraries/LibWeb/HTML/HTMLFormElement.cpp
  16. 2 2
      Userland/Libraries/LibWeb/HTML/HTMLScriptElement.cpp
  17. 2 2
      Userland/Libraries/LibWeb/HTML/Parser/HTMLDocumentParser.cpp
  18. 2 2
      Userland/Libraries/LibWeb/HTML/Parser/HTMLDocumentParser.h
  19. 2 2
      Userland/Libraries/LibWeb/HTML/Scripting/ClassicScript.cpp
  20. 2 2
      Userland/Libraries/LibWeb/HTML/Scripting/ClassicScript.h
  21. 1 1
      Userland/Libraries/LibWeb/HTML/Scripting/Script.cpp
  22. 3 3
      Userland/Libraries/LibWeb/HTML/Scripting/Script.h
  23. 3 3
      Userland/Libraries/LibWeb/HTML/WebSocket.cpp
  24. 4 4
      Userland/Libraries/LibWeb/HTML/WebSocket.h
  25. 12 12
      Userland/Libraries/LibWeb/InProcessWebView.cpp
  26. 12 12
      Userland/Libraries/LibWeb/InProcessWebView.h
  27. 1 1
      Userland/Libraries/LibWeb/Loader/CSSLoader.cpp
  28. 1 1
      Userland/Libraries/LibWeb/Loader/CSSLoader.h
  29. 1 1
      Userland/Libraries/LibWeb/Loader/ContentFilter.cpp
  30. 1 1
      Userland/Libraries/LibWeb/Loader/ContentFilter.h
  31. 4 4
      Userland/Libraries/LibWeb/Loader/FrameLoader.cpp
  32. 3 3
      Userland/Libraries/LibWeb/Loader/FrameLoader.h
  33. 1 1
      Userland/Libraries/LibWeb/Loader/ImageLoader.cpp
  34. 1 1
      Userland/Libraries/LibWeb/Loader/ImageLoader.h
  35. 1 1
      Userland/Libraries/LibWeb/Loader/LoadRequest.cpp
  36. 4 4
      Userland/Libraries/LibWeb/Loader/LoadRequest.h
  37. 1 1
      Userland/Libraries/LibWeb/Loader/Resource.h
  38. 1 1
      Userland/Libraries/LibWeb/Loader/ResourceLoader.cpp
  39. 1 1
      Userland/Libraries/LibWeb/Loader/ResourceLoader.h
  40. 12 12
      Userland/Libraries/LibWeb/OutOfProcessWebView.cpp
  41. 14 14
      Userland/Libraries/LibWeb/OutOfProcessWebView.h
  42. 2 2
      Userland/Libraries/LibWeb/Page/BrowsingContext.cpp
  43. 5 5
      Userland/Libraries/LibWeb/Page/BrowsingContext.h
  44. 2 2
      Userland/Libraries/LibWeb/Page/Page.cpp
  45. 11 11
      Userland/Libraries/LibWeb/Page/Page.h
  46. 27 0
      Userland/Libraries/LibWeb/URL/URL.cpp
  47. 21 0
      Userland/Libraries/LibWeb/URL/URL.h
  48. 0 26
      Userland/Libraries/LibWeb/URLEncoder.cpp
  49. 0 21
      Userland/Libraries/LibWeb/URLEncoder.h
  50. 10 10
      Userland/Libraries/LibWeb/WebContentClient.cpp
  51. 10 10
      Userland/Libraries/LibWeb/WebContentClient.h
  52. 11 11
      Userland/Libraries/LibWeb/WebViewHooks.h
  53. 1 1
      Userland/Libraries/LibWeb/XHR/XMLHttpRequest.cpp
  54. 1 1
      Userland/Libraries/LibWeb/XHR/XMLHttpRequest.h

+ 8 - 1
Meta/Lagom/Tools/CodeGenerators/LibWeb/WrapperGenerator.cpp

@@ -437,7 +437,7 @@ int main(int argc, char** argv)
         return 1;
     }
 
-    if (namespace_.is_one_of("CSS", "DOM", "HTML", "UIEvents", "HighResolutionTime", "NavigationTiming", "SVG", "XHR")) {
+    if (namespace_.is_one_of("CSS", "DOM", "HTML", "UIEvents", "HighResolutionTime", "NavigationTiming", "SVG", "XHR", "URL")) {
         StringBuilder builder;
         builder.append(namespace_);
         builder.append("::");
@@ -968,6 +968,8 @@ static void generate_header(IDL::Interface const& interface)
 #    include <LibWeb/SVG/@name@.h>
 #elif __has_include(<LibWeb/XHR/@name@.h>)
 #    include <LibWeb/XHR/@name@.h>
+#elif __has_include(<LibWeb/URL/@name@.h>)
+#    include <LibWeb/URL/@name@.h>
 #endif
 )~~~");
 
@@ -1235,6 +1237,8 @@ void generate_constructor_implementation(IDL::Interface const& interface)
 #    include <LibWeb/SVG/@name@.h>
 #elif __has_include(<LibWeb/XHR/@name@.h>)
 #    include <LibWeb/XHR/@name@.h>
+#elif __has_include(<LibWeb/URL/@name@.h>)
+#    include <LibWeb/URL/@name@.h>
 #endif
 
 // FIXME: This is a total hack until we can figure out the namespace for a given type somehow.
@@ -1504,6 +1508,8 @@ void generate_prototype_implementation(IDL::Interface const& interface)
 #    include <LibWeb/SVG/@name@.h>
 #elif __has_include(<LibWeb/XHR/@name@.h>)
 #    include <LibWeb/XHR/@name@.h>
+#elif __has_include(<LibWeb/URL/@name@.h>)
+#    include <LibWeb/URL/@name@.h>
 #endif
 
 // FIXME: This is a total hack until we can figure out the namespace for a given type somehow.
@@ -1512,6 +1518,7 @@ using namespace Web::DOM;
 using namespace Web::HTML;
 using namespace Web::NavigationTiming;
 using namespace Web::XHR;
+using namespace Web::URL;
 
 namespace Web::Bindings {
 

+ 1 - 1
Userland/Libraries/LibWeb/CMakeLists.txt

@@ -230,7 +230,7 @@ set(SOURCES
     StylePropertiesModel.cpp
     UIEvents/EventNames.cpp
     UIEvents/MouseEvent.cpp
-    URLEncoder.cpp
+    URL/URL.cpp
     WebAssembly/WebAssemblyInstanceConstructor.cpp
     WebAssembly/WebAssemblyInstanceObject.cpp
     WebAssembly/WebAssemblyInstanceObjectPrototype.cpp

+ 1 - 1
Userland/Libraries/LibWeb/CSS/CSSImportRule.cpp

@@ -10,7 +10,7 @@
 
 namespace Web::CSS {
 
-CSSImportRule::CSSImportRule(URL url)
+CSSImportRule::CSSImportRule(AK::URL url)
     : m_url(move(url))
 {
 }

+ 4 - 4
Userland/Libraries/LibWeb/CSS/CSSImportRule.h

@@ -16,14 +16,14 @@ class CSSImportRule : public CSSRule {
     AK_MAKE_NONMOVABLE(CSSImportRule);
 
 public:
-    static NonnullRefPtr<CSSImportRule> create(URL url)
+    static NonnullRefPtr<CSSImportRule> create(AK::URL url)
     {
         return adopt_ref(*new CSSImportRule(move(url)));
     }
 
     ~CSSImportRule();
 
-    const URL& url() const { return m_url; }
+    const AK::URL& url() const { return m_url; }
 
     bool has_import_result() const { return !m_style_sheet.is_null(); }
     RefPtr<CSSStyleSheet> loaded_style_sheet() { return m_style_sheet; }
@@ -34,9 +34,9 @@ public:
     virtual Type type() const { return Type::Import; };
 
 private:
-    explicit CSSImportRule(URL);
+    explicit CSSImportRule(AK::URL);
 
-    URL m_url;
+    AK::URL m_url;
     RefPtr<CSSStyleSheet> m_style_sheet;
 };
 

+ 4 - 4
Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp

@@ -50,9 +50,9 @@ bool ParsingContext::in_quirks_mode() const
     return m_document ? m_document->in_quirks_mode() : false;
 }
 
-URL ParsingContext::complete_url(String const& addr) const
+AK::URL ParsingContext::complete_url(String const& addr) const
 {
-    return m_document ? m_document->url().complete_url(addr) : URL::create_with_url_or_path(addr);
+    return m_document ? m_document->url().complete_url(addr) : AK::URL::create_with_url_or_path(addr);
 }
 
 template<typename T>
@@ -1159,7 +1159,7 @@ Vector<Vector<StyleComponentValueRule>> Parser::parse_a_comma_separated_list_of_
     return lists;
 }
 
-Optional<URL> Parser::parse_url_function(ParsingContext const& context, StyleComponentValueRule const& component_value)
+Optional<AK::URL> Parser::parse_url_function(ParsingContext const& context, StyleComponentValueRule const& component_value)
 {
     // FIXME: Handle list of media queries. https://www.w3.org/TR/css-cascade-3/#conditional-import
     // FIXME: Handle data: urls (RFC2397)
@@ -1201,7 +1201,7 @@ RefPtr<CSSRule> Parser::convert_to_rule(NonnullRefPtr<StyleRule> rule)
             return {};
         } else if (rule->m_name.equals_ignoring_case("import"sv) && !rule->prelude().is_empty()) {
 
-            Optional<URL> url;
+            Optional<AK::URL> url;
             for (auto& token : rule->prelude()) {
                 if (token.is(Token::Type::Whitespace))
                     continue;

+ 2 - 2
Userland/Libraries/LibWeb/CSS/Parser/Parser.h

@@ -38,7 +38,7 @@ public:
 
     bool in_quirks_mode() const;
     DOM::Document* document() const { return m_document; }
-    URL complete_url(String const&) const;
+    AK::URL complete_url(String const&) const;
 
     PropertyID current_property_id() const { return m_current_property_id; }
     void set_current_property_id(PropertyID property_id) { m_current_property_id = property_id; }
@@ -172,7 +172,7 @@ private:
     static Optional<float> try_parse_float(StringView string);
     static Optional<Color> parse_color(ParsingContext const&, StyleComponentValueRule const&);
     static Optional<Length> parse_length(ParsingContext const&, StyleComponentValueRule const&);
-    static Optional<URL> parse_url_function(ParsingContext const&, StyleComponentValueRule const&);
+    static Optional<AK::URL> parse_url_function(ParsingContext const&, StyleComponentValueRule const&);
 
     Result<NonnullRefPtr<StyleValue>, ParsingResult> parse_css_value(PropertyID, TokenStream<StyleComponentValueRule>&);
     static RefPtr<StyleValue> parse_css_value(ParsingContext const&, StyleComponentValueRule const&);

+ 1 - 1
Userland/Libraries/LibWeb/CSS/StyleValue.cpp

@@ -152,7 +152,7 @@ Color IdentifierStyleValue::to_color(const DOM::Document& document) const
     }
 }
 
-ImageStyleValue::ImageStyleValue(const URL& url, DOM::Document& document)
+ImageStyleValue::ImageStyleValue(const AK::URL& url, DOM::Document& document)
     : StyleValue(Type::Image)
     , m_url(url)
     , m_document(document)

+ 3 - 3
Userland/Libraries/LibWeb/CSS/StyleValue.h

@@ -651,7 +651,7 @@ class ImageStyleValue final
     : public StyleValue
     , public ImageResourceClient {
 public:
-    static NonnullRefPtr<ImageStyleValue> create(const URL& url, DOM::Document& document) { return adopt_ref(*new ImageStyleValue(url, document)); }
+    static NonnullRefPtr<ImageStyleValue> create(const AK::URL& url, DOM::Document& document) { return adopt_ref(*new ImageStyleValue(url, document)); }
     virtual ~ImageStyleValue() override { }
 
     String to_string() const override { return String::formatted("Image({})", m_url.to_string()); }
@@ -659,12 +659,12 @@ public:
     const Gfx::Bitmap* bitmap() const { return m_bitmap; }
 
 private:
-    ImageStyleValue(const URL&, DOM::Document&);
+    ImageStyleValue(const AK::URL&, DOM::Document&);
 
     // ^ResourceClient
     virtual void resource_did_load() override;
 
-    URL m_url;
+    AK::URL m_url;
     WeakPtr<DOM::Document> m_document;
     RefPtr<Gfx::Bitmap> m_bitmap;
 };

+ 2 - 2
Userland/Libraries/LibWeb/DOM/Document.cpp

@@ -57,7 +57,7 @@
 
 namespace Web::DOM {
 
-Document::Document(const URL& url)
+Document::Document(const AK::URL& url)
     : ParentNode(*this, NodeType::DOCUMENT_NODE)
     , m_style_resolver(make<CSS::StyleResolver>(*this))
     , m_style_sheets(CSS::StyleSheetList::create(*this))
@@ -383,7 +383,7 @@ CSS::Repeat Document::background_repeat_y() const
 }
 
 // https://html.spec.whatwg.org/multipage/urls-and-fetching.html#parse-a-url
-URL Document::parse_url(String const& url) const
+AK::URL Document::parse_url(String const& url) const
 {
     // FIXME: Make sure we do this according to spec.
     return m_url.complete_url(url);

+ 6 - 6
Userland/Libraries/LibWeb/DOM/Document.h

@@ -45,7 +45,7 @@ class Document
 public:
     using WrapperType = Bindings::DocumentWrapper;
 
-    static NonnullRefPtr<Document> create(const URL& url = "about:blank")
+    static NonnullRefPtr<Document> create(const AK::URL& url = "about:blank")
     {
         return adopt_ref(*new Document(url));
     }
@@ -64,15 +64,15 @@ public:
     bool should_invalidate_styles_on_attribute_changes() const { return m_should_invalidate_styles_on_attribute_changes; }
     void set_should_invalidate_styles_on_attribute_changes(bool b) { m_should_invalidate_styles_on_attribute_changes = b; }
 
-    void set_url(const URL& url) { m_url = url; }
-    URL url() const { return m_url; }
+    void set_url(const AK::URL& url) { m_url = url; }
+    AK::URL url() const { return m_url; }
 
     Origin origin() const;
     void set_origin(const Origin& origin);
 
     bool is_scripting_enabled() const { return true; }
 
-    URL parse_url(String const&) const;
+    AK::URL parse_url(String const&) const;
 
     CSS::StyleResolver& style_resolver() { return *m_style_resolver; }
     const CSS::StyleResolver& style_resolver() const { return *m_style_resolver; }
@@ -282,7 +282,7 @@ public:
     Bindings::LocationObject* location();
 
 private:
-    explicit Document(const URL&);
+    explicit Document(const AK::URL&);
 
     // ^DOM::Node
     virtual RefPtr<Layout::Node> create_layout_node() override;
@@ -316,7 +316,7 @@ private:
     RefPtr<Node> m_hovered_node;
     RefPtr<Node> m_inspected_node;
     WeakPtr<BrowsingContext> m_browsing_context;
-    URL m_url;
+    AK::URL m_url;
 
     RefPtr<Window> m_window;
 

+ 1 - 1
Userland/Libraries/LibWeb/DOM/Window.cpp

@@ -138,7 +138,7 @@ void Window::cancel_animation_frame(i32 id)
     GUI::DisplayLink::unregister_callback(id);
 }
 
-void Window::did_set_location_href(Badge<Bindings::LocationObject>, URL const& new_href)
+void Window::did_set_location_href(Badge<Bindings::LocationObject>, AK::URL const& new_href)
 {
     auto* frame = associated_document().browsing_context();
     if (!frame)

+ 1 - 1
Userland/Libraries/LibWeb/DOM/Window.h

@@ -54,7 +54,7 @@ public:
     int inner_width() const;
     int inner_height() const;
 
-    void did_set_location_href(Badge<Bindings::LocationObject>, URL const& new_href);
+    void did_set_location_href(Badge<Bindings::LocationObject>, AK::URL const& new_href);
     void did_call_location_reload(Badge<Bindings::LocationObject>);
 
     Bindings::WindowObject* wrapper() { return m_wrapper; }

+ 3 - 0
Userland/Libraries/LibWeb/Forward.h

@@ -205,6 +205,9 @@ class XMLHttpRequest;
 class XMLHttpRequestEventTarget;
 }
 
+namespace Web::URL {
+}
+
 namespace Web::Bindings {
 class AbortControllerWrapper;
 class AbortSignalWrapper;

+ 1 - 1
Userland/Libraries/LibWeb/HTML/HTMLCanvasElement.cpp

@@ -92,7 +92,7 @@ String HTMLCanvasElement::to_data_url(const String& type, [[maybe_unused]] Optio
     if (type != "image/png")
         return {};
     auto encoded_bitmap = Gfx::PNGWriter::encode(*m_bitmap);
-    return URL::create_with_data(type, encode_base64(encoded_bitmap), true).to_string();
+    return AK::URL::create_with_data(type, encode_base64(encoded_bitmap), true).to_string();
 }
 
 }

+ 5 - 5
Userland/Libraries/LibWeb/HTML/HTMLFormElement.cpp

@@ -12,7 +12,7 @@
 #include <LibWeb/HTML/SubmitEvent.h>
 #include <LibWeb/Page/BrowsingContext.h>
 #include <LibWeb/Page/Page.h>
-#include <LibWeb/URLEncoder.h>
+#include <LibWeb/URL/URL.h>
 
 namespace Web::HTML {
 
@@ -75,7 +75,7 @@ void HTMLFormElement::submit_form(RefPtr<HTMLElement> submitter, bool from_submi
             return;
     }
 
-    URL url(document().parse_url(action()));
+    AK::URL url(document().parse_url(action()));
 
     if (!url.is_valid()) {
         dbgln("Failed to submit form: Invalid URL: {}", action());
@@ -96,7 +96,7 @@ void HTMLFormElement::submit_form(RefPtr<HTMLElement> submitter, bool from_submi
         return;
     }
 
-    Vector<URLQueryParam> parameters;
+    Vector<URL::QueryParam> parameters;
 
     for_each_in_inclusive_subtree_of_type<HTMLInputElement>([&](auto& input) {
         if (!input.name().is_null() && (input.type() != "submit" || &input == submitter))
@@ -105,14 +105,14 @@ void HTMLFormElement::submit_form(RefPtr<HTMLElement> submitter, bool from_submi
     });
 
     if (effective_method == "get") {
-        url.set_query(urlencode(parameters, URL::PercentEncodeSet::ApplicationXWWWFormUrlencoded));
+        url.set_query(url_encode(parameters, AK::URL::PercentEncodeSet::ApplicationXWWWFormUrlencoded));
     }
 
     LoadRequest request;
     request.set_url(url);
 
     if (effective_method == "post") {
-        auto body = urlencode(parameters, URL::PercentEncodeSet::ApplicationXWWWFormUrlencoded).to_byte_buffer();
+        auto body = url_encode(parameters, AK::URL::PercentEncodeSet::ApplicationXWWWFormUrlencoded).to_byte_buffer();
         request.set_method("POST");
         request.set_header("Content-Type", "application/x-www-form-urlencoded");
         request.set_header("Content-Length", String::number(body.size()));

+ 2 - 2
Userland/Libraries/LibWeb/HTML/HTMLScriptElement.cpp

@@ -304,7 +304,7 @@ void HTMLScriptElement::prepare_script()
                     document().interpreter();
 
                     // FIXME: This is all ad-hoc and needs work.
-                    auto script = ClassicScript::create(url.to_string(), data, document().interpreter().realm(), URL());
+                    auto script = ClassicScript::create(url.to_string(), data, document().interpreter().realm(), AK::URL());
 
                     // When the chosen algorithm asynchronously completes, set the script's script to the result. At that time, the script is ready.
                     m_script = script;
@@ -331,7 +331,7 @@ void HTMLScriptElement::prepare_script()
             document().interpreter();
 
             // FIXME: Pass settings, base URL and options.
-            auto script = ClassicScript::create(m_document->url().to_string(), source_text, document().interpreter().realm(), URL());
+            auto script = ClassicScript::create(m_document->url().to_string(), source_text, document().interpreter().realm(), AK::URL());
 
             // 2. Set the script's script to script.
             m_script = script;

+ 2 - 2
Userland/Libraries/LibWeb/HTML/Parser/HTMLDocumentParser.cpp

@@ -93,7 +93,7 @@ static Vector<FlyString> s_quirks_public_ids = {
     "-//WebTechs//DTD Mozilla HTML//"
 };
 
-RefPtr<DOM::Document> parse_html_document(const StringView& data, const URL& url, const String& encoding)
+RefPtr<DOM::Document> parse_html_document(const StringView& data, const AK::URL& url, const String& encoding)
 {
     auto document = DOM::Document::create(url);
     HTMLDocumentParser parser(document, data, encoding);
@@ -116,7 +116,7 @@ HTMLDocumentParser::~HTMLDocumentParser()
     m_document->set_should_invalidate_styles_on_attribute_changes(true);
 }
 
-void HTMLDocumentParser::run(const URL& url)
+void HTMLDocumentParser::run(const AK::URL& url)
 {
     m_document->set_url(url);
     m_document->set_source(m_tokenizer.source());

+ 2 - 2
Userland/Libraries/LibWeb/HTML/Parser/HTMLDocumentParser.h

@@ -39,7 +39,7 @@ namespace Web::HTML {
     __ENUMERATE_INSERTION_MODE(AfterAfterBody)  \
     __ENUMERATE_INSERTION_MODE(AfterAfterFrameset)
 
-RefPtr<DOM::Document> parse_html_document(const StringView&, const URL&, const String& encoding);
+RefPtr<DOM::Document> parse_html_document(const StringView&, const AK::URL&, const String& encoding);
 
 class HTMLDocumentParser {
 public:
@@ -48,7 +48,7 @@ public:
 
     static NonnullOwnPtr<HTMLDocumentParser> create_with_uncertain_encoding(DOM::Document&, const ByteBuffer& input);
 
-    void run(const URL&);
+    void run(const AK::URL&);
 
     DOM::Document& document();
 

+ 2 - 2
Userland/Libraries/LibWeb/HTML/Scripting/ClassicScript.cpp

@@ -11,7 +11,7 @@
 namespace Web::HTML {
 
 // https://html.spec.whatwg.org/multipage/webappapis.html#creating-a-classic-script
-NonnullRefPtr<ClassicScript> ClassicScript::create(String filename, StringView source, JS::Realm& realm, URL base_url, MutedErrors muted_errors)
+NonnullRefPtr<ClassicScript> ClassicScript::create(String filename, StringView source, JS::Realm& realm, AK::URL base_url, MutedErrors muted_errors)
 {
     // 1. If muted errors was not provided, let it be false. (NOTE: This is taken care of by the default argument.)
 
@@ -65,7 +65,7 @@ JS::Value ClassicScript::run(RethrowErrors rethrow_errors)
     return vm.last_value();
 }
 
-ClassicScript::ClassicScript(URL base_url, String filename)
+ClassicScript::ClassicScript(AK::URL base_url, String filename)
     : Script(move(base_url), move(filename))
 {
 }

+ 2 - 2
Userland/Libraries/LibWeb/HTML/Scripting/ClassicScript.h

@@ -20,7 +20,7 @@ public:
         No,
         Yes,
     };
-    static NonnullRefPtr<ClassicScript> create(String filename, StringView source, JS::Realm&, URL base_url, MutedErrors = MutedErrors::No);
+    static NonnullRefPtr<ClassicScript> create(String filename, StringView source, JS::Realm&, AK::URL base_url, MutedErrors = MutedErrors::No);
 
     JS::Script* script_record() { return m_script_record; }
     JS::Script const* script_record() const { return m_script_record; }
@@ -32,7 +32,7 @@ public:
     JS::Value run(RethrowErrors = RethrowErrors::No);
 
 private:
-    ClassicScript(URL base_url, String filename);
+    ClassicScript(AK::URL base_url, String filename);
 
     RefPtr<JS::Script> m_script_record;
     MutedErrors m_muted_errors { MutedErrors::No };

+ 1 - 1
Userland/Libraries/LibWeb/HTML/Scripting/Script.cpp

@@ -8,7 +8,7 @@
 
 namespace Web::HTML {
 
-Script::Script(URL base_url, String filename)
+Script::Script(AK::URL base_url, String filename)
     : m_base_url(move(base_url))
     , m_filename(move(filename))
 {

+ 3 - 3
Userland/Libraries/LibWeb/HTML/Scripting/Script.h

@@ -16,14 +16,14 @@ class Script : public RefCounted<Script> {
 public:
     virtual ~Script();
 
-    URL const& base_url() const { return m_base_url; }
+    AK::URL const& base_url() const { return m_base_url; }
     String const& filename() const { return m_filename; }
 
 protected:
-    Script(URL base_url, String filename);
+    Script(AK::URL base_url, String filename);
 
 private:
-    URL m_base_url;
+    AK::URL m_base_url;
     String m_filename;
 };
 

+ 3 - 3
Userland/Libraries/LibWeb/HTML/WebSocket.cpp

@@ -41,7 +41,7 @@ WebSocketClientManager::WebSocketClientManager()
 {
 }
 
-RefPtr<Protocol::WebSocket> WebSocketClientManager::connect(const URL& url)
+RefPtr<Protocol::WebSocket> WebSocketClientManager::connect(const AK::URL& url)
 {
     return m_websocket_client->connect(url);
 }
@@ -49,7 +49,7 @@ RefPtr<Protocol::WebSocket> WebSocketClientManager::connect(const URL& url)
 // https://html.spec.whatwg.org/multipage/web-sockets.html#the-websocket-interface
 DOM::ExceptionOr<NonnullRefPtr<WebSocket>> WebSocket::create_with_global_object(Bindings::WindowObject& window, const String& url)
 {
-    URL url_record(url);
+    AK::URL url_record(url);
     if (!url_record.is_valid())
         return DOM::SyntaxError::create("Invalid URL");
     if (!url_record.protocol().is_one_of("ws", "wss"))
@@ -61,7 +61,7 @@ DOM::ExceptionOr<NonnullRefPtr<WebSocket>> WebSocket::create_with_global_object(
     return WebSocket::create(window.impl(), url_record);
 }
 
-WebSocket::WebSocket(DOM::Window& window, URL& url)
+WebSocket::WebSocket(DOM::Window& window, AK::URL& url)
     : EventTarget(static_cast<Bindings::ScriptExecutionContext&>(window.associated_document()))
     , m_window(window)
 {

+ 4 - 4
Userland/Libraries/LibWeb/HTML/WebSocket.h

@@ -35,7 +35,7 @@ class WebSocketClientManager : public Core::Object {
 public:
     static WebSocketClientManager& the();
 
-    RefPtr<Protocol::WebSocket> connect(const URL&);
+    RefPtr<Protocol::WebSocket> connect(const AK::URL&);
 
 private:
     WebSocketClientManager();
@@ -57,7 +57,7 @@ public:
 
     using WrapperType = Bindings::WebSocketWrapper;
 
-    static NonnullRefPtr<WebSocket> create(DOM::Window& window, URL& url)
+    static NonnullRefPtr<WebSocket> create(DOM::Window& window, AK::URL& url)
     {
         return adopt_ref(*new WebSocket(window, url));
     }
@@ -102,11 +102,11 @@ private:
     void on_error();
     void on_close(u16 code, String reason, bool was_clean);
 
-    explicit WebSocket(DOM::Window&, URL&);
+    explicit WebSocket(DOM::Window&, AK::URL&);
 
     NonnullRefPtr<DOM::Window> m_window;
 
-    URL m_url;
+    AK::URL m_url;
     String m_binary_type { "blob" };
     RefPtr<Protocol::WebSocket> m_websocket;
 };

+ 12 - 12
Userland/Libraries/LibWeb/InProcessWebView.cpp

@@ -72,13 +72,13 @@ void InProcessWebView::page_did_set_document_in_top_level_browsing_context(DOM::
     update();
 }
 
-void InProcessWebView::page_did_start_loading(const URL& url)
+void InProcessWebView::page_did_start_loading(const AK::URL& url)
 {
     if (on_load_start)
         on_load_start(url);
 }
 
-void InProcessWebView::page_did_finish_loading(const URL& url)
+void InProcessWebView::page_did_finish_loading(const AK::URL& url)
 {
     if (on_load_finish)
         on_load_finish(url);
@@ -100,13 +100,13 @@ void InProcessWebView::page_did_request_context_menu(const Gfx::IntPoint& conten
         on_context_menu_request(screen_relative_rect().location().translated(to_widget_position(content_position)));
 }
 
-void InProcessWebView::page_did_request_link_context_menu(const Gfx::IntPoint& content_position, const URL& url, [[maybe_unused]] const String& target, [[maybe_unused]] unsigned modifiers)
+void InProcessWebView::page_did_request_link_context_menu(const Gfx::IntPoint& content_position, const AK::URL& url, [[maybe_unused]] const String& target, [[maybe_unused]] unsigned modifiers)
 {
     if (on_link_context_menu_request)
         on_link_context_menu_request(url, screen_relative_rect().location().translated(to_widget_position(content_position)));
 }
 
-void InProcessWebView::page_did_request_image_context_menu(const Gfx::IntPoint& content_position, const URL& url, [[maybe_unused]] const String& target, [[maybe_unused]] unsigned modifiers, const Gfx::Bitmap* bitmap)
+void InProcessWebView::page_did_request_image_context_menu(const Gfx::IntPoint& content_position, const AK::URL& url, [[maybe_unused]] const String& target, [[maybe_unused]] unsigned modifiers, const Gfx::Bitmap* bitmap)
 {
     if (!on_image_context_menu_request)
         return;
@@ -116,13 +116,13 @@ void InProcessWebView::page_did_request_image_context_menu(const Gfx::IntPoint&
     on_image_context_menu_request(url, screen_relative_rect().location().translated(to_widget_position(content_position)), shareable_bitmap);
 }
 
-void InProcessWebView::page_did_click_link(const URL& url, const String& target, unsigned modifiers)
+void InProcessWebView::page_did_click_link(const AK::URL& url, const String& target, unsigned modifiers)
 {
     if (on_link_click)
         on_link_click(url, target, modifiers);
 }
 
-void InProcessWebView::page_did_middle_click_link(const URL& url, const String& target, unsigned modifiers)
+void InProcessWebView::page_did_middle_click_link(const AK::URL& url, const String& target, unsigned modifiers)
 {
     if (on_link_middle_click)
         on_link_middle_click(url, target, modifiers);
@@ -138,7 +138,7 @@ void InProcessWebView::page_did_leave_tooltip_area()
     GUI::Application::the()->hide_tooltip();
 }
 
-void InProcessWebView::page_did_hover_link(const URL& url)
+void InProcessWebView::page_did_hover_link(const AK::URL& url)
 {
     if (on_link_hover)
         on_link_hover(url);
@@ -276,7 +276,7 @@ void InProcessWebView::keydown_event(GUI::KeyEvent& event)
     event.accept();
 }
 
-URL InProcessWebView::url() const
+AK::URL InProcessWebView::url() const
 {
     if (!page().top_level_browsing_context().active_document())
         return {};
@@ -288,12 +288,12 @@ void InProcessWebView::reload()
     load(url());
 }
 
-void InProcessWebView::load_html(const StringView& html, const URL& url)
+void InProcessWebView::load_html(const StringView& html, const AK::URL& url)
 {
     page().top_level_browsing_context().loader().load_html(html, url);
 }
 
-bool InProcessWebView::load(const URL& url)
+bool InProcessWebView::load(const AK::URL& url)
 {
     set_override_cursor(Gfx::StandardCursor::None);
     return page().top_level_browsing_context().loader().load(url, FrameLoader::Type::Navigation);
@@ -372,14 +372,14 @@ String InProcessWebView::page_did_request_prompt(const String& message, const St
     return {};
 }
 
-String InProcessWebView::page_did_request_cookie(const URL& url, Cookie::Source source)
+String InProcessWebView::page_did_request_cookie(const AK::URL& url, Cookie::Source source)
 {
     if (on_get_cookie)
         return on_get_cookie(url, source);
     return {};
 }
 
-void InProcessWebView::page_did_set_cookie(const URL& url, const Cookie::ParsedCookie& cookie, Cookie::Source source)
+void InProcessWebView::page_did_set_cookie(const AK::URL& url, const Cookie::ParsedCookie& cookie, Cookie::Source source)
 {
     if (on_set_cookie)
         on_set_cookie(url, cookie, source);

+ 12 - 12
Userland/Libraries/LibWeb/InProcessWebView.h

@@ -24,7 +24,7 @@ class InProcessWebView final
 public:
     virtual ~InProcessWebView() override;
 
-    void load_html(const StringView&, const URL&);
+    void load_html(const StringView&, const AK::URL&);
     void load_empty_document();
 
     DOM::Document* document();
@@ -36,9 +36,9 @@ public:
     Layout::InitialContainingBlock* layout_root();
 
     void reload();
-    bool load(const URL&);
+    bool load(const AK::URL&);
 
-    URL url() const;
+    AK::URL url() const;
 
     void set_should_show_line_box_borders(bool value) { m_should_show_line_box_borders = value; }
 
@@ -67,18 +67,18 @@ private:
     virtual Gfx::IntRect screen_rect() const override { return GUI::Desktop::the().rect(); }
     virtual void page_did_change_title(const String&) override;
     virtual void page_did_set_document_in_top_level_browsing_context(DOM::Document*) override;
-    virtual void page_did_start_loading(const URL&) override;
-    virtual void page_did_finish_loading(const URL&) override;
+    virtual void page_did_start_loading(const AK::URL&) override;
+    virtual void page_did_finish_loading(const AK::URL&) override;
     virtual void page_did_change_selection() override;
     virtual void page_did_request_cursor_change(Gfx::StandardCursor) override;
     virtual void page_did_request_context_menu(const Gfx::IntPoint&) override;
-    virtual void page_did_request_link_context_menu(const Gfx::IntPoint&, const URL&, const String& target, unsigned modifiers) override;
-    virtual void page_did_request_image_context_menu(const Gfx::IntPoint&, const URL&, const String& target, unsigned modifiers, const Gfx::Bitmap*) override;
-    virtual void page_did_click_link(const URL&, const String& target, unsigned modifiers) override;
-    virtual void page_did_middle_click_link(const URL&, const String& target, unsigned modifiers) override;
+    virtual void page_did_request_link_context_menu(const Gfx::IntPoint&, const AK::URL&, const String& target, unsigned modifiers) override;
+    virtual void page_did_request_image_context_menu(const Gfx::IntPoint&, const AK::URL&, const String& target, unsigned modifiers, const Gfx::Bitmap*) override;
+    virtual void page_did_click_link(const AK::URL&, const String& target, unsigned modifiers) override;
+    virtual void page_did_middle_click_link(const AK::URL&, const String& target, unsigned modifiers) override;
     virtual void page_did_enter_tooltip_area(const Gfx::IntPoint&, const String&) override;
     virtual void page_did_leave_tooltip_area() override;
-    virtual void page_did_hover_link(const URL&) override;
+    virtual void page_did_hover_link(const AK::URL&) override;
     virtual void page_did_unhover_link() override;
     virtual void page_did_invalidate(const Gfx::IntRect&) override;
     virtual void page_did_change_favicon(const Gfx::Bitmap&) override;
@@ -87,8 +87,8 @@ private:
     virtual void page_did_request_alert(const String&) override;
     virtual bool page_did_request_confirm(const String&) override;
     virtual String page_did_request_prompt(const String&, const String&) override;
-    virtual String page_did_request_cookie(const URL&, Cookie::Source) override;
-    virtual void page_did_set_cookie(const URL&, const Cookie::ParsedCookie&, Cookie::Source) override;
+    virtual String page_did_request_cookie(const AK::URL&, Cookie::Source) override;
+    virtual void page_did_set_cookie(const AK::URL&, const Cookie::ParsedCookie&, Cookie::Source) override;
 
     void layout_and_sync_size();
 

+ 1 - 1
Userland/Libraries/LibWeb/Loader/CSSLoader.cpp

@@ -30,7 +30,7 @@ void CSSLoader::load_from_text(const String& text)
     load_next_import_if_needed();
 }
 
-void CSSLoader::load_from_url(const URL& url)
+void CSSLoader::load_from_url(const AK::URL& url)
 {
     m_style_sheet = CSS::CSSStyleSheet::create({});
     m_style_sheet->set_owner_node(&m_owner_element);

+ 1 - 1
Userland/Libraries/LibWeb/Loader/CSSLoader.h

@@ -17,7 +17,7 @@ public:
     explicit CSSLoader(DOM::Element& owner_element);
 
     void load_from_text(const String&);
-    void load_from_url(const URL&);
+    void load_from_url(const AK::URL&);
 
     void load_next_import_if_needed();
 

+ 1 - 1
Userland/Libraries/LibWeb/Loader/ContentFilter.cpp

@@ -23,7 +23,7 @@ ContentFilter::~ContentFilter()
 {
 }
 
-bool ContentFilter::is_filtered(const URL& url) const
+bool ContentFilter::is_filtered(const AK::URL& url) const
 {
     auto url_string = url.to_string();
 

+ 1 - 1
Userland/Libraries/LibWeb/Loader/ContentFilter.h

@@ -15,7 +15,7 @@ class ContentFilter {
 public:
     static ContentFilter& the();
 
-    bool is_filtered(const URL&) const;
+    bool is_filtered(const AK::URL&) const;
     void add_pattern(const String&);
 
 private:

+ 4 - 4
Userland/Libraries/LibWeb/Loader/FrameLoader.cpp

@@ -162,7 +162,7 @@ bool FrameLoader::load(LoadRequest& request, Type type)
         return true;
 
     if (url.protocol() == "http" || url.protocol() == "https") {
-        URL favicon_url;
+        AK::URL favicon_url;
         favicon_url.set_protocol(url.protocol());
         favicon_url.set_host(url.host());
         favicon_url.set_port(url.port());
@@ -195,7 +195,7 @@ bool FrameLoader::load(LoadRequest& request, Type type)
     return true;
 }
 
-bool FrameLoader::load(const URL& url, Type type)
+bool FrameLoader::load(const AK::URL& url, Type type)
 {
     dbgln_if(SPAM_DEBUG, "FrameLoader::load: {}", url);
 
@@ -208,7 +208,7 @@ bool FrameLoader::load(const URL& url, Type type)
     return load(request, type);
 }
 
-void FrameLoader::load_html(const StringView& html, const URL& url)
+void FrameLoader::load_html(const StringView& html, const AK::URL& url)
 {
     auto document = DOM::Document::create(url);
     HTML::HTMLDocumentParser parser(document, html, "utf-8");
@@ -219,7 +219,7 @@ void FrameLoader::load_html(const StringView& html, const URL& url)
 // FIXME: Use an actual templating engine (our own one when it's built, preferably
 // with a way to check these usages at compile time)
 
-void FrameLoader::load_error_page(const URL& failed_url, const String& error)
+void FrameLoader::load_error_page(const AK::URL& failed_url, const String& error)
 {
     auto error_page_url = "file:///res/html/error.html";
     ResourceLoader::the().load(

+ 3 - 3
Userland/Libraries/LibWeb/Loader/FrameLoader.h

@@ -26,10 +26,10 @@ public:
     explicit FrameLoader(BrowsingContext&);
     ~FrameLoader();
 
-    bool load(const URL&, Type);
+    bool load(const AK::URL&, Type);
     bool load(LoadRequest&, Type);
 
-    void load_html(const StringView&, const URL&);
+    void load_html(const StringView&, const AK::URL&);
 
     BrowsingContext& browsing_context() { return m_browsing_context; }
     const BrowsingContext& browsing_context() const { return m_browsing_context; }
@@ -39,7 +39,7 @@ private:
     virtual void resource_did_load() override;
     virtual void resource_did_fail() override;
 
-    void load_error_page(const URL& failed_url, const String& error_message);
+    void load_error_page(const AK::URL& failed_url, const String& error_message);
     void load_favicon(RefPtr<Gfx::Bitmap> bitmap = nullptr);
     bool parse_document(DOM::Document&, const ByteBuffer& data);
 

+ 1 - 1
Userland/Libraries/LibWeb/Loader/ImageLoader.cpp

@@ -20,7 +20,7 @@ ImageLoader::ImageLoader(DOM::Element& owner_element)
 {
 }
 
-void ImageLoader::load(const URL& url)
+void ImageLoader::load(const AK::URL& url)
 {
     m_loading_state = LoadingState::Loading;
 

+ 1 - 1
Userland/Libraries/LibWeb/Loader/ImageLoader.h

@@ -16,7 +16,7 @@ class ImageLoader : public ImageResourceClient {
 public:
     ImageLoader(DOM::Element& owner_element);
 
-    void load(const URL&);
+    void load(const AK::URL&);
 
     const Gfx::Bitmap* bitmap(size_t index) const;
     size_t current_frame_index() const { return m_current_frame_index; }

+ 1 - 1
Userland/Libraries/LibWeb/Loader/LoadRequest.cpp

@@ -10,7 +10,7 @@
 
 namespace Web {
 
-LoadRequest LoadRequest::create_for_url_on_page(const URL& url, Page* page)
+LoadRequest LoadRequest::create_for_url_on_page(const AK::URL& url, Page* page)
 {
     LoadRequest request;
     request.set_url(url);

+ 4 - 4
Userland/Libraries/LibWeb/Loader/LoadRequest.h

@@ -21,12 +21,12 @@ public:
     {
     }
 
-    static LoadRequest create_for_url_on_page(const URL& url, Page* page);
+    static LoadRequest create_for_url_on_page(const AK::URL& url, Page* page);
 
     bool is_valid() const { return m_url.is_valid(); }
 
-    const URL& url() const { return m_url; }
-    void set_url(const URL& url) { m_url = url; }
+    const AK::URL& url() const { return m_url; }
+    void set_url(const AK::URL& url) { m_url = url; }
 
     const String& method() const { return m_method; }
     void set_method(const String& method) { m_method = method; }
@@ -65,7 +65,7 @@ public:
     const HashMap<String, String>& headers() const { return m_headers; }
 
 private:
-    URL m_url;
+    AK::URL m_url;
     String m_method { "GET" };
     HashMap<String, String> m_headers;
     ByteBuffer m_body;

+ 1 - 1
Userland/Libraries/LibWeb/Loader/Resource.h

@@ -44,7 +44,7 @@ public:
 
     bool has_encoded_data() const { return !m_encoded_data.is_empty(); }
 
-    const URL& url() const { return m_request.url(); }
+    const AK::URL& url() const { return m_request.url(); }
     const ByteBuffer& encoded_data() const { return m_encoded_data; }
 
     const HashMap<String, String, CaseInsensitiveStringTraits>& response_headers() const { return m_response_headers; }

+ 1 - 1
Userland/Libraries/LibWeb/Loader/ResourceLoader.cpp

@@ -218,7 +218,7 @@ void ResourceLoader::load(LoadRequest& request, Function<void(ReadonlyBytes, con
         error_callback(not_implemented_error, {});
 }
 
-void ResourceLoader::load(const URL& url, Function<void(ReadonlyBytes, const HashMap<String, String, CaseInsensitiveStringTraits>& response_headers, Optional<u32> status_code)> success_callback, Function<void(const String&, Optional<u32> status_code)> error_callback)
+void ResourceLoader::load(const AK::URL& url, Function<void(ReadonlyBytes, const HashMap<String, String, CaseInsensitiveStringTraits>& response_headers, Optional<u32> status_code)> success_callback, Function<void(const String&, Optional<u32> status_code)> error_callback)
 {
     LoadRequest request;
     request.set_url(url);

+ 1 - 1
Userland/Libraries/LibWeb/Loader/ResourceLoader.h

@@ -33,7 +33,7 @@ public:
     RefPtr<Resource> load_resource(Resource::Type, LoadRequest&);
 
     void load(LoadRequest&, Function<void(ReadonlyBytes, const HashMap<String, String, CaseInsensitiveStringTraits>& response_headers, Optional<u32> status_code)> success_callback, Function<void(const String&, Optional<u32> status_code)> error_callback = nullptr);
-    void load(const URL&, Function<void(ReadonlyBytes, const HashMap<String, String, CaseInsensitiveStringTraits>& response_headers, Optional<u32> status_code)> success_callback, Function<void(const String&, Optional<u32> status_code)> error_callback = nullptr);
+    void load(const AK::URL&, Function<void(ReadonlyBytes, const HashMap<String, String, CaseInsensitiveStringTraits>& response_headers, Optional<u32> status_code)> success_callback, Function<void(const String&, Optional<u32> status_code)> error_callback = nullptr);
     void load_sync(LoadRequest&, Function<void(ReadonlyBytes, const HashMap<String, String, CaseInsensitiveStringTraits>& response_headers, Optional<u32> status_code)> success_callback, Function<void(const String&, Optional<u32> status_code)> error_callback = nullptr);
 
     Function<void()> on_load_counter_change;

+ 12 - 12
Userland/Libraries/LibWeb/OutOfProcessWebView.cpp

@@ -74,13 +74,13 @@ void OutOfProcessWebView::create_client()
     client().async_update_screen_rects(GUI::Desktop::the().rects(), GUI::Desktop::the().main_screen_index());
 }
 
-void OutOfProcessWebView::load(const URL& url)
+void OutOfProcessWebView::load(const AK::URL& url)
 {
     m_url = url;
     client().async_load_url(url);
 }
 
-void OutOfProcessWebView::load_html(const StringView& html, const URL& url)
+void OutOfProcessWebView::load_html(const StringView& html, const AK::URL& url)
 {
     m_url = url;
     client().async_load_html(html, url);
@@ -262,7 +262,7 @@ void OutOfProcessWebView::notify_server_did_leave_tooltip_area(Badge<WebContentC
     GUI::Application::the()->hide_tooltip();
 }
 
-void OutOfProcessWebView::notify_server_did_hover_link(Badge<WebContentClient>, const URL& url)
+void OutOfProcessWebView::notify_server_did_hover_link(Badge<WebContentClient>, const AK::URL& url)
 {
     if (on_link_hover)
         on_link_hover(url);
@@ -275,25 +275,25 @@ void OutOfProcessWebView::notify_server_did_unhover_link(Badge<WebContentClient>
         on_link_hover({});
 }
 
-void OutOfProcessWebView::notify_server_did_click_link(Badge<WebContentClient>, const URL& url, const String& target, unsigned int modifiers)
+void OutOfProcessWebView::notify_server_did_click_link(Badge<WebContentClient>, const AK::URL& url, const String& target, unsigned int modifiers)
 {
     if (on_link_click)
         on_link_click(url, target, modifiers);
 }
 
-void OutOfProcessWebView::notify_server_did_middle_click_link(Badge<WebContentClient>, const URL& url, const String& target, unsigned int modifiers)
+void OutOfProcessWebView::notify_server_did_middle_click_link(Badge<WebContentClient>, const AK::URL& url, const String& target, unsigned int modifiers)
 {
     if (on_link_middle_click)
         on_link_middle_click(url, target, modifiers);
 }
 
-void OutOfProcessWebView::notify_server_did_start_loading(Badge<WebContentClient>, const URL& url)
+void OutOfProcessWebView::notify_server_did_start_loading(Badge<WebContentClient>, const AK::URL& url)
 {
     if (on_load_start)
         on_load_start(url);
 }
 
-void OutOfProcessWebView::notify_server_did_finish_loading(Badge<WebContentClient>, const URL& url)
+void OutOfProcessWebView::notify_server_did_finish_loading(Badge<WebContentClient>, const AK::URL& url)
 {
     if (on_load_finish)
         on_load_finish(url);
@@ -305,13 +305,13 @@ void OutOfProcessWebView::notify_server_did_request_context_menu(Badge<WebConten
         on_context_menu_request(screen_relative_rect().location().translated(to_widget_position(content_position)));
 }
 
-void OutOfProcessWebView::notify_server_did_request_link_context_menu(Badge<WebContentClient>, const Gfx::IntPoint& content_position, const URL& url, const String&, unsigned)
+void OutOfProcessWebView::notify_server_did_request_link_context_menu(Badge<WebContentClient>, const Gfx::IntPoint& content_position, const AK::URL& url, const String&, unsigned)
 {
     if (on_link_context_menu_request)
         on_link_context_menu_request(url, screen_relative_rect().location().translated(to_widget_position(content_position)));
 }
 
-void OutOfProcessWebView::notify_server_did_request_image_context_menu(Badge<WebContentClient>, const Gfx::IntPoint& content_position, const URL& url, const String&, unsigned, const Gfx::ShareableBitmap& bitmap)
+void OutOfProcessWebView::notify_server_did_request_image_context_menu(Badge<WebContentClient>, const Gfx::IntPoint& content_position, const AK::URL& url, const String&, unsigned, const Gfx::ShareableBitmap& bitmap)
 {
     if (on_image_context_menu_request)
         on_image_context_menu_request(url, screen_relative_rect().location().translated(to_widget_position(content_position)), bitmap);
@@ -336,7 +336,7 @@ String OutOfProcessWebView::notify_server_did_request_prompt(Badge<WebContentCli
     return {};
 }
 
-void OutOfProcessWebView::notify_server_did_get_source(const URL& url, const String& source)
+void OutOfProcessWebView::notify_server_did_get_source(const AK::URL& url, const String& source)
 {
     if (on_get_source)
         on_get_source(url, source);
@@ -372,14 +372,14 @@ void OutOfProcessWebView::notify_server_did_change_favicon(const Gfx::Bitmap& fa
         on_favicon_change(favicon);
 }
 
-String OutOfProcessWebView::notify_server_did_request_cookie(Badge<WebContentClient>, const URL& url, Cookie::Source source)
+String OutOfProcessWebView::notify_server_did_request_cookie(Badge<WebContentClient>, const AK::URL& url, Cookie::Source source)
 {
     if (on_get_cookie)
         return on_get_cookie(url, source);
     return {};
 }
 
-void OutOfProcessWebView::notify_server_did_set_cookie(Badge<WebContentClient>, const URL& url, const Cookie::ParsedCookie& cookie, Cookie::Source source)
+void OutOfProcessWebView::notify_server_did_set_cookie(Badge<WebContentClient>, const AK::URL& url, const Cookie::ParsedCookie& cookie, Cookie::Source source)
 {
     if (on_set_cookie)
         on_set_cookie(url, cookie, source);

+ 14 - 14
Userland/Libraries/LibWeb/OutOfProcessWebView.h

@@ -23,10 +23,10 @@ class OutOfProcessWebView final
 public:
     virtual ~OutOfProcessWebView() override;
 
-    URL url() const { return m_url; }
-    void load(const URL&);
+    AK::URL url() const { return m_url; }
+    void load(const AK::URL&);
 
-    void load_html(const StringView&, const URL&);
+    void load_html(const StringView&, const AK::URL&);
     void load_empty_document();
 
     void debug_request(const String& request, const String& argument = {});
@@ -62,26 +62,26 @@ public:
     void notify_server_did_request_scroll_into_view(Badge<WebContentClient>, const Gfx::IntRect&);
     void notify_server_did_enter_tooltip_area(Badge<WebContentClient>, const Gfx::IntPoint&, const String&);
     void notify_server_did_leave_tooltip_area(Badge<WebContentClient>);
-    void notify_server_did_hover_link(Badge<WebContentClient>, const URL&);
+    void notify_server_did_hover_link(Badge<WebContentClient>, const AK::URL&);
     void notify_server_did_unhover_link(Badge<WebContentClient>);
-    void notify_server_did_click_link(Badge<WebContentClient>, const URL&, const String& target, unsigned modifiers);
-    void notify_server_did_middle_click_link(Badge<WebContentClient>, const URL&, const String& target, unsigned modifiers);
-    void notify_server_did_start_loading(Badge<WebContentClient>, const URL&);
-    void notify_server_did_finish_loading(Badge<WebContentClient>, const URL&);
+    void notify_server_did_click_link(Badge<WebContentClient>, const AK::URL&, const String& target, unsigned modifiers);
+    void notify_server_did_middle_click_link(Badge<WebContentClient>, const AK::URL&, const String& target, unsigned modifiers);
+    void notify_server_did_start_loading(Badge<WebContentClient>, const AK::URL&);
+    void notify_server_did_finish_loading(Badge<WebContentClient>, const AK::URL&);
     void notify_server_did_request_context_menu(Badge<WebContentClient>, const Gfx::IntPoint&);
-    void notify_server_did_request_link_context_menu(Badge<WebContentClient>, const Gfx::IntPoint&, const URL&, const String& target, unsigned modifiers);
-    void notify_server_did_request_image_context_menu(Badge<WebContentClient>, const Gfx::IntPoint&, const URL&, const String& target, unsigned modifiers, const Gfx::ShareableBitmap&);
+    void notify_server_did_request_link_context_menu(Badge<WebContentClient>, const Gfx::IntPoint&, const AK::URL&, const String& target, unsigned modifiers);
+    void notify_server_did_request_image_context_menu(Badge<WebContentClient>, const Gfx::IntPoint&, const AK::URL&, const String& target, unsigned modifiers, const Gfx::ShareableBitmap&);
     void notify_server_did_request_alert(Badge<WebContentClient>, const String& message);
     bool notify_server_did_request_confirm(Badge<WebContentClient>, const String& message);
     String notify_server_did_request_prompt(Badge<WebContentClient>, const String& message, const String& default_);
-    void notify_server_did_get_source(const URL& url, const String& source);
+    void notify_server_did_get_source(const AK::URL& url, const String& source);
     void notify_server_did_get_dom_tree(const String& dom_tree);
     void notify_server_did_get_dom_node_properties(i32 node_id, String const& specified_style, String const& computed_style);
     void notify_server_did_output_js_console_message(i32 message_index);
     void notify_server_did_get_js_console_messages(i32 start_index, Vector<String> const& message_types, Vector<String> const& messages);
     void notify_server_did_change_favicon(const Gfx::Bitmap& favicon);
-    String notify_server_did_request_cookie(Badge<WebContentClient>, const URL& url, Cookie::Source source);
-    void notify_server_did_set_cookie(Badge<WebContentClient>, const URL& url, const Cookie::ParsedCookie& cookie, Cookie::Source source);
+    String notify_server_did_request_cookie(Badge<WebContentClient>, const AK::URL& url, Cookie::Source source);
+    void notify_server_did_set_cookie(Badge<WebContentClient>, const AK::URL& url, const Cookie::ParsedCookie& cookie, Cookie::Source source);
 
 private:
     OutOfProcessWebView();
@@ -108,7 +108,7 @@ private:
 
     void handle_web_content_process_crash();
 
-    URL m_url;
+    AK::URL m_url;
 
     struct ClientState {
         RefPtr<WebContentClient> client;

+ 2 - 2
Userland/Libraries/LibWeb/Page/BrowsingContext.cpp

@@ -311,12 +311,12 @@ void BrowsingContext::unregister_viewport_client(ViewportClient& client)
     VERIFY(was_removed);
 }
 
-void BrowsingContext::register_frame_nesting(URL const& url)
+void BrowsingContext::register_frame_nesting(AK::URL const& url)
 {
     m_frame_nesting_levels.ensure(url)++;
 }
 
-bool BrowsingContext::is_frame_nesting_allowed(URL const& url) const
+bool BrowsingContext::is_frame_nesting_allowed(AK::URL const& url) const
 {
     return m_frame_nesting_levels.get(url).value_or(0) < 3;
 }

+ 5 - 5
Userland/Libraries/LibWeb/Page/BrowsingContext.h

@@ -93,11 +93,11 @@ public:
 
     void did_edit(Badge<EditEventHandler>);
 
-    void register_frame_nesting(URL const&);
-    bool is_frame_nesting_allowed(URL const&) const;
+    void register_frame_nesting(AK::URL const&);
+    bool is_frame_nesting_allowed(AK::URL const&) const;
 
-    void set_frame_nesting_levels(HashMap<URL, size_t> frame_nesting_levels) { m_frame_nesting_levels = move(frame_nesting_levels); };
-    HashMap<URL, size_t> const& frame_nesting_levels() const { return m_frame_nesting_levels; }
+    void set_frame_nesting_levels(HashMap<AK::URL, size_t> frame_nesting_levels) { m_frame_nesting_levels = move(frame_nesting_levels); };
+    HashMap<AK::URL, size_t> const& frame_nesting_levels() const { return m_frame_nesting_levels; }
 
     DOM::Document* container_document();
     DOM::Document const* container_document() const;
@@ -123,7 +123,7 @@ private:
 
     HashTable<ViewportClient*> m_viewport_clients;
 
-    HashMap<URL, size_t> m_frame_nesting_levels;
+    HashMap<AK::URL, size_t> m_frame_nesting_levels;
 };
 
 }

+ 2 - 2
Userland/Libraries/LibWeb/Page/Page.cpp

@@ -31,7 +31,7 @@ void Page::set_focused_browsing_context(Badge<EventHandler>, BrowsingContext& br
     m_focused_context = browsing_context.make_weak_ptr();
 }
 
-void Page::load(const URL& url)
+void Page::load(const AK::URL& url)
 {
     top_level_browsing_context().loader().load(url, FrameLoader::Type::Navigation);
 }
@@ -41,7 +41,7 @@ void Page::load(LoadRequest& request)
     top_level_browsing_context().loader().load(request, FrameLoader::Type::Navigation);
 }
 
-void Page::load_html(const StringView& html, const URL& url)
+void Page::load_html(const StringView& html, const AK::URL& url)
 {
     top_level_browsing_context().loader().load_html(html, url);
 }

+ 11 - 11
Userland/Libraries/LibWeb/Page/Page.h

@@ -41,10 +41,10 @@ public:
 
     void set_focused_browsing_context(Badge<EventHandler>, BrowsingContext&);
 
-    void load(const URL&);
+    void load(const AK::URL&);
     void load(LoadRequest&);
 
-    void load_html(const StringView&, const URL&);
+    void load_html(const StringView&, const AK::URL&);
 
     bool handle_mouseup(const Gfx::IntPoint&, unsigned button, unsigned modifiers);
     bool handle_mousedown(const Gfx::IntPoint&, unsigned button, unsigned modifiers);
@@ -74,18 +74,18 @@ public:
     virtual Gfx::IntRect screen_rect() const = 0;
     virtual void page_did_set_document_in_top_level_browsing_context(DOM::Document*) { }
     virtual void page_did_change_title(const String&) { }
-    virtual void page_did_start_loading(const URL&) { }
-    virtual void page_did_finish_loading(const URL&) { }
+    virtual void page_did_start_loading(const AK::URL&) { }
+    virtual void page_did_finish_loading(const AK::URL&) { }
     virtual void page_did_change_selection() { }
     virtual void page_did_request_cursor_change(Gfx::StandardCursor) { }
     virtual void page_did_request_context_menu(const Gfx::IntPoint&) { }
-    virtual void page_did_request_link_context_menu(const Gfx::IntPoint&, const URL&, [[maybe_unused]] const String& target, [[maybe_unused]] unsigned modifiers) { }
-    virtual void page_did_request_image_context_menu(const Gfx::IntPoint&, const URL&, [[maybe_unused]] const String& target, [[maybe_unused]] unsigned modifiers, const Gfx::Bitmap*) { }
-    virtual void page_did_click_link(const URL&, [[maybe_unused]] const String& target, [[maybe_unused]] unsigned modifiers) { }
-    virtual void page_did_middle_click_link(const URL&, [[maybe_unused]] const String& target, [[maybe_unused]] unsigned modifiers) { }
+    virtual void page_did_request_link_context_menu(const Gfx::IntPoint&, const AK::URL&, [[maybe_unused]] const String& target, [[maybe_unused]] unsigned modifiers) { }
+    virtual void page_did_request_image_context_menu(const Gfx::IntPoint&, const AK::URL&, [[maybe_unused]] const String& target, [[maybe_unused]] unsigned modifiers, const Gfx::Bitmap*) { }
+    virtual void page_did_click_link(const AK::URL&, [[maybe_unused]] const String& target, [[maybe_unused]] unsigned modifiers) { }
+    virtual void page_did_middle_click_link(const AK::URL&, [[maybe_unused]] const String& target, [[maybe_unused]] unsigned modifiers) { }
     virtual void page_did_enter_tooltip_area(const Gfx::IntPoint&, const String&) { }
     virtual void page_did_leave_tooltip_area() { }
-    virtual void page_did_hover_link(const URL&) { }
+    virtual void page_did_hover_link(const AK::URL&) { }
     virtual void page_did_unhover_link() { }
     virtual void page_did_invalidate(const Gfx::IntRect&) { }
     virtual void page_did_change_favicon(const Gfx::Bitmap&) { }
@@ -96,8 +96,8 @@ public:
     virtual void page_did_request_alert(const String&) { }
     virtual bool page_did_request_confirm(const String&) { return false; }
     virtual String page_did_request_prompt(const String&, const String&) { return {}; }
-    virtual String page_did_request_cookie(const URL&, Cookie::Source) { return {}; }
-    virtual void page_did_set_cookie(const URL&, const Cookie::ParsedCookie&, Cookie::Source) { }
+    virtual String page_did_request_cookie(const AK::URL&, Cookie::Source) { return {}; }
+    virtual void page_did_set_cookie(const AK::URL&, const Cookie::ParsedCookie&, Cookie::Source) { }
 
 protected:
     virtual ~PageClient() = default;

+ 27 - 0
Userland/Libraries/LibWeb/URL/URL.cpp

@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2021, Idan Horowitz <idan.horowitz@serenityos.org>
+ * Copyright (c) 2021, the SerenityOS developers.
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#include <AK/StringBuilder.h>
+#include <AK/URL.h>
+#include <LibWeb/URL/URL.h>
+
+namespace Web::URL {
+
+String url_encode(const Vector<QueryParam>& pairs, AK::URL::PercentEncodeSet percent_encode_set)
+{
+    StringBuilder builder;
+    for (size_t i = 0; i < pairs.size(); ++i) {
+        builder.append(AK::URL::percent_encode(pairs[i].name, percent_encode_set));
+        builder.append('=');
+        builder.append(AK::URL::percent_encode(pairs[i].value, percent_encode_set));
+        if (i != pairs.size() - 1)
+            builder.append('&');
+    }
+    return builder.to_string();
+}
+
+}

+ 21 - 0
Userland/Libraries/LibWeb/URL/URL.h

@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2021, Idan Horowitz <idan.horowitz@serenityos.org>
+ * Copyright (c) 2021, the SerenityOS developers.
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <AK/String.h>
+#include <AK/Vector.h>
+
+namespace Web::URL {
+
+struct QueryParam {
+    String name;
+    String value;
+};
+String url_encode(const Vector<QueryParam>&, AK::URL::PercentEncodeSet);
+
+}

+ 0 - 26
Userland/Libraries/LibWeb/URLEncoder.cpp

@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2020, the SerenityOS developers.
- *
- * SPDX-License-Identifier: BSD-2-Clause
- */
-
-#include <AK/StringBuilder.h>
-#include <AK/URL.h>
-#include <LibWeb/URLEncoder.h>
-
-namespace Web {
-
-String urlencode(const Vector<URLQueryParam>& pairs, URL::PercentEncodeSet percent_encode_set)
-{
-    StringBuilder builder;
-    for (size_t i = 0; i < pairs.size(); ++i) {
-        builder.append(URL::percent_encode(pairs[i].name, percent_encode_set));
-        builder.append('=');
-        builder.append(URL::percent_encode(pairs[i].value, percent_encode_set));
-        if (i != pairs.size() - 1)
-            builder.append('&');
-    }
-    return builder.to_string();
-}
-
-}

+ 0 - 21
Userland/Libraries/LibWeb/URLEncoder.h

@@ -1,21 +0,0 @@
-/*
- * Copyright (c) 2020, the SerenityOS developers.
- *
- * SPDX-License-Identifier: BSD-2-Clause
- */
-
-#pragma once
-
-#include <AK/String.h>
-#include <AK/Vector.h>
-
-namespace Web {
-
-struct URLQueryParam {
-    String name;
-    String value;
-};
-
-String urlencode(const Vector<URLQueryParam>&, URL::PercentEncodeSet);
-
-}

+ 10 - 10
Userland/Libraries/LibWeb/WebContentClient.cpp

@@ -28,7 +28,7 @@ void WebContentClient::did_paint(const Gfx::IntRect&, i32 bitmap_id)
     m_view.notify_server_did_paint({}, bitmap_id);
 }
 
-void WebContentClient::did_finish_loading(URL const& url)
+void WebContentClient::did_finish_loading(AK::URL const& url)
 {
     m_view.notify_server_did_finish_loading({}, url);
 }
@@ -94,7 +94,7 @@ void WebContentClient::did_leave_tooltip_area()
     m_view.notify_server_did_leave_tooltip_area({});
 }
 
-void WebContentClient::did_hover_link(URL const& url)
+void WebContentClient::did_hover_link(AK::URL const& url)
 {
     dbgln_if(SPAM_DEBUG, "handle: WebContentClient::DidHoverLink! url={}", url);
     m_view.notify_server_did_hover_link({}, url);
@@ -106,17 +106,17 @@ void WebContentClient::did_unhover_link()
     m_view.notify_server_did_unhover_link({});
 }
 
-void WebContentClient::did_click_link(URL const& url, String const& target, unsigned modifiers)
+void WebContentClient::did_click_link(AK::URL const& url, String const& target, unsigned modifiers)
 {
     m_view.notify_server_did_click_link({}, url, target, modifiers);
 }
 
-void WebContentClient::did_middle_click_link(URL const& url, String const& target, unsigned modifiers)
+void WebContentClient::did_middle_click_link(AK::URL const& url, String const& target, unsigned modifiers)
 {
     m_view.notify_server_did_middle_click_link({}, url, target, modifiers);
 }
 
-void WebContentClient::did_start_loading(URL const& url)
+void WebContentClient::did_start_loading(AK::URL const& url)
 {
     m_view.notify_server_did_start_loading({}, url);
 }
@@ -126,17 +126,17 @@ void WebContentClient::did_request_context_menu(Gfx::IntPoint const& content_pos
     m_view.notify_server_did_request_context_menu({}, content_position);
 }
 
-void WebContentClient::did_request_link_context_menu(Gfx::IntPoint const& content_position, URL const& url, String const& target, unsigned modifiers)
+void WebContentClient::did_request_link_context_menu(Gfx::IntPoint const& content_position, AK::URL const& url, String const& target, unsigned modifiers)
 {
     m_view.notify_server_did_request_link_context_menu({}, content_position, url, target, modifiers);
 }
 
-void WebContentClient::did_request_image_context_menu(Gfx::IntPoint const& content_position, URL const& url, String const& target, unsigned modifiers, Gfx::ShareableBitmap const& bitmap)
+void WebContentClient::did_request_image_context_menu(Gfx::IntPoint const& content_position, AK::URL const& url, String const& target, unsigned modifiers, Gfx::ShareableBitmap const& bitmap)
 {
     m_view.notify_server_did_request_image_context_menu({}, content_position, url, target, modifiers, bitmap);
 }
 
-void WebContentClient::did_get_source(URL const& url, String const& source)
+void WebContentClient::did_get_source(AK::URL const& url, String const& source)
 {
     m_view.notify_server_did_get_source(url, source);
 }
@@ -185,12 +185,12 @@ void WebContentClient::did_change_favicon(Gfx::ShareableBitmap const& favicon)
     m_view.notify_server_did_change_favicon(*favicon.bitmap());
 }
 
-Messages::WebContentClient::DidRequestCookieResponse WebContentClient::did_request_cookie(URL const& url, u8 source)
+Messages::WebContentClient::DidRequestCookieResponse WebContentClient::did_request_cookie(AK::URL const& url, u8 source)
 {
     return m_view.notify_server_did_request_cookie({}, url, static_cast<Cookie::Source>(source));
 }
 
-void WebContentClient::did_set_cookie(URL const& url, Web::Cookie::ParsedCookie const& cookie, u8 source)
+void WebContentClient::did_set_cookie(AK::URL const& url, Web::Cookie::ParsedCookie const& cookie, u8 source)
 {
     m_view.notify_server_did_set_cookie({}, url, cookie, static_cast<Cookie::Source>(source));
 }

+ 10 - 10
Userland/Libraries/LibWeb/WebContentClient.h

@@ -30,7 +30,7 @@ private:
     virtual void die() override;
 
     virtual void did_paint(Gfx::IntRect const&, i32) override;
-    virtual void did_finish_loading(URL const&) override;
+    virtual void did_finish_loading(AK::URL const&) override;
     virtual void did_invalidate_content_rect(Gfx::IntRect const&) override;
     virtual void did_change_selection() override;
     virtual void did_request_cursor_change(i32) override;
@@ -41,15 +41,15 @@ private:
     virtual void did_request_scroll_into_view(Gfx::IntRect const&) override;
     virtual void did_enter_tooltip_area(Gfx::IntPoint const&, String const&) override;
     virtual void did_leave_tooltip_area() override;
-    virtual void did_hover_link(URL const&) override;
+    virtual void did_hover_link(AK::URL const&) override;
     virtual void did_unhover_link() override;
-    virtual void did_click_link(URL const&, String const&, unsigned) override;
-    virtual void did_middle_click_link(URL const&, String const&, unsigned) override;
-    virtual void did_start_loading(URL const&) override;
+    virtual void did_click_link(AK::URL const&, String const&, unsigned) override;
+    virtual void did_middle_click_link(AK::URL const&, String const&, unsigned) override;
+    virtual void did_start_loading(AK::URL const&) override;
     virtual void did_request_context_menu(Gfx::IntPoint const&) override;
-    virtual void did_request_link_context_menu(Gfx::IntPoint const&, URL const&, String const&, unsigned) override;
-    virtual void did_request_image_context_menu(Gfx::IntPoint const&, URL const&, String const&, unsigned, Gfx::ShareableBitmap const&) override;
-    virtual void did_get_source(URL const&, String const&) override;
+    virtual void did_request_link_context_menu(Gfx::IntPoint const&, AK::URL const&, String const&, unsigned) override;
+    virtual void did_request_image_context_menu(Gfx::IntPoint const&, AK::URL const&, String const&, unsigned, Gfx::ShareableBitmap const&) override;
+    virtual void did_get_source(AK::URL const&, String const&) override;
     virtual void did_get_dom_tree(String const&) override;
     virtual void did_get_dom_node_properties(i32 node_id, String const& specified_style, String const& computed_style) override;
     virtual void did_output_js_console_message(i32 message_index) override;
@@ -58,8 +58,8 @@ private:
     virtual void did_request_alert(String const&) override;
     virtual Messages::WebContentClient::DidRequestConfirmResponse did_request_confirm(String const&) override;
     virtual Messages::WebContentClient::DidRequestPromptResponse did_request_prompt(String const&, String const&) override;
-    virtual Messages::WebContentClient::DidRequestCookieResponse did_request_cookie(URL const&, u8) override;
-    virtual void did_set_cookie(URL const&, Web::Cookie::ParsedCookie const&, u8) override;
+    virtual Messages::WebContentClient::DidRequestCookieResponse did_request_cookie(AK::URL const&, u8) override;
+    virtual void did_set_cookie(AK::URL const&, Web::Cookie::ParsedCookie const&, u8) override;
 
     OutOfProcessWebView& m_view;
 };

+ 11 - 11
Userland/Libraries/LibWeb/WebViewHooks.h

@@ -15,24 +15,24 @@ namespace Web {
 class WebViewHooks {
 public:
     Function<void(const Gfx::IntPoint& screen_position)> on_context_menu_request;
-    Function<void(const URL&, const String& target, unsigned modifiers)> on_link_click;
-    Function<void(const URL&, const Gfx::IntPoint& screen_position)> on_link_context_menu_request;
-    Function<void(const URL&, const Gfx::IntPoint& screen_position, const Gfx::ShareableBitmap&)> on_image_context_menu_request;
-    Function<void(const URL&, const String& target, unsigned modifiers)> on_link_middle_click;
-    Function<void(const URL&)> on_link_hover;
+    Function<void(const AK::URL&, const String& target, unsigned modifiers)> on_link_click;
+    Function<void(const AK::URL&, const Gfx::IntPoint& screen_position)> on_link_context_menu_request;
+    Function<void(const AK::URL&, const Gfx::IntPoint& screen_position, const Gfx::ShareableBitmap&)> on_image_context_menu_request;
+    Function<void(const AK::URL&, const String& target, unsigned modifiers)> on_link_middle_click;
+    Function<void(const AK::URL&)> on_link_hover;
     Function<void(const String&)> on_title_change;
-    Function<void(const URL&)> on_load_start;
-    Function<void(const URL&)> on_load_finish;
+    Function<void(const AK::URL&)> on_load_start;
+    Function<void(const AK::URL&)> on_load_finish;
     Function<void(const Gfx::Bitmap&)> on_favicon_change;
-    Function<void(const URL&)> on_url_drop;
+    Function<void(const AK::URL&)> on_url_drop;
     Function<void(DOM::Document*)> on_set_document;
-    Function<void(const URL&, const String&)> on_get_source;
+    Function<void(const AK::URL&, const String&)> on_get_source;
     Function<void(const String&)> on_get_dom_tree;
     Function<void(i32 node_id, String const& specified_style, String const& computed_style)> on_get_dom_node_properties;
     Function<void(i32 message_id)> on_js_console_new_message;
     Function<void(i32 start_index, Vector<String> const& message_types, Vector<String> const& messages)> on_get_js_console_messages;
-    Function<String(const URL& url, Cookie::Source source)> on_get_cookie;
-    Function<void(const URL& url, const Cookie::ParsedCookie& cookie, Cookie::Source source)> on_set_cookie;
+    Function<String(const AK::URL& url, Cookie::Source source)> on_get_cookie;
+    Function<void(const AK::URL& url, const Cookie::ParsedCookie& cookie, Cookie::Source source)> on_set_cookie;
 };
 
 }

+ 1 - 1
Userland/Libraries/LibWeb/XHR/XMLHttpRequest.cpp

@@ -167,7 +167,7 @@ DOM::ExceptionOr<void> XMLHttpRequest::send()
 
     // FIXME: If body is not null, then:
 
-    URL request_url = m_window->associated_document().parse_url(m_url.to_string());
+    AK::URL request_url = m_window->associated_document().parse_url(m_url.to_string());
     dbgln("XHR send from {} to {}", m_window->associated_document().url(), request_url);
 
     // TODO: Add support for preflight requests to support CORS requests

+ 1 - 1
Userland/Libraries/LibWeb/XHR/XMLHttpRequest.h

@@ -77,7 +77,7 @@ private:
     bool m_send { false };
 
     String m_method;
-    URL m_url;
+    AK::URL m_url;
 
     HashMap<String, String, CaseInsensitiveStringTraits> m_request_headers;
     HashMap<String, String, CaseInsensitiveStringTraits> m_response_headers;