Selaa lähdekoodia

LibURL+LibWebView: Move public suffix data to LibURL

Sam Atkins 7 kuukautta sitten
vanhempi
commit
3124dca528

+ 4 - 0
Libraries/LibURL/CMakeLists.txt

@@ -1,8 +1,12 @@
+include(public_suffix)
+
 set(SOURCES
     Origin.cpp
     Parser.cpp
     URL.cpp
+    ${PUBLIC_SUFFIX_SOURCES}
 )
 
 serenity_lib(LibURL url)
 target_link_libraries(LibURL PRIVATE LibUnicode LibTextCodec)
+target_compile_definitions(LibURL PRIVATE ENABLE_PUBLIC_SUFFIX=$<BOOL:${ENABLE_PUBLIC_SUFFIX_DOWNLOAD}>)

+ 23 - 0
Libraries/LibURL/URL.cpp

@@ -1,6 +1,7 @@
 /*
  * Copyright (c) 2018-2020, Andreas Kling <andreas@ladybird.org>
  * Copyright (c) 2021, Max Wipfli <mail@maxwipfli.ch>
+ * Copyright (c) 2024, Sam Atkins <sam@ladybird.org>
  *
  * SPDX-License-Identifier: BSD-2-Clause
  */
@@ -14,6 +15,10 @@
 #include <LibURL/Parser.h>
 #include <LibURL/URL.h>
 
+#if defined(ENABLE_PUBLIC_SUFFIX)
+#    include <LibURL/PublicSuffixData.h>
+#endif
+
 namespace URL {
 
 // FIXME: It could make sense to force users of URL to use URL::Parser::basic_parse() explicitly instead of using a constructor.
@@ -498,4 +503,22 @@ ByteString percent_decode(StringView input)
     return builder.to_byte_string();
 }
 
+bool is_public_suffix([[maybe_unused]] StringView host)
+{
+#if defined(ENABLE_PUBLIC_SUFFIX)
+    return PublicSuffixData::the()->is_public_suffix(host);
+#else
+    return false;
+#endif
+}
+
+Optional<String> get_public_suffix([[maybe_unused]] StringView host)
+{
+#if defined(ENABLE_PUBLIC_SUFFIX)
+    return MUST(PublicSuffixData::the()->get_public_suffix(host));
+#else
+    return {};
+#endif
+}
+
 }

+ 3 - 0
Libraries/LibURL/URL.h

@@ -199,6 +199,9 @@ URL create_with_url_or_path(ByteString const&);
 URL create_with_file_scheme(ByteString const& path, ByteString const& fragment = {}, ByteString const& hostname = {});
 URL create_with_data(StringView mime_type, StringView payload, bool is_base64 = false);
 
+bool is_public_suffix(StringView host);
+Optional<String> get_public_suffix(StringView host);
+
 }
 
 template<>

+ 0 - 3
Libraries/LibWebView/CMakeLists.txt

@@ -1,5 +1,4 @@
 include(fontconfig)
-include(public_suffix)
 
 set(SOURCES
     Application.cpp
@@ -21,7 +20,6 @@ set(SOURCES
     Utilities.cpp
     ViewImplementation.cpp
     WebContentClient.cpp
-    ${PUBLIC_SUFFIX_SOURCES}
 )
 
 if (APPLE)
@@ -74,7 +72,6 @@ set(GENERATED_SOURCES
 
 serenity_lib(LibWebView webview)
 target_link_libraries(LibWebView PRIVATE LibCore LibFileSystem LibGfx LibImageDecoderClient LibIPC LibRequests LibJS LibWeb LibUnicode LibURL LibSyntax)
-target_compile_definitions(LibWebView PRIVATE ENABLE_PUBLIC_SUFFIX=$<BOOL:${ENABLE_PUBLIC_SUFFIX_DOWNLOAD}>)
 
 if (APPLE)
     target_link_libraries(LibWebView PRIVATE LibThreading)

+ 1 - 2
Libraries/LibWebView/CookieJar.cpp

@@ -14,7 +14,6 @@
 #include <LibURL/URL.h>
 #include <LibWeb/Cookie/ParsedCookie.h>
 #include <LibWebView/CookieJar.h>
-#include <LibWebView/URL.h>
 
 namespace WebView {
 
@@ -335,7 +334,7 @@ void CookieJar::store_cookie(Web::Cookie::ParsedCookie const& parsed_cookie, con
     }
 
     // 9. If the user agent is configured to reject "public suffixes" and the domain-attribute is a public suffix:
-    if (is_public_suffix(domain_attribute)) {
+    if (URL::is_public_suffix(domain_attribute)) {
         // 1. If the domain-attribute is identical to the canonicalized request-host:
         if (domain_attribute == canonicalized_domain) {
             // 1. Let the domain-attribute be the empty string.

+ 1 - 24
Libraries/LibWebView/URL.cpp

@@ -6,34 +6,11 @@
  */
 
 #include <AK/String.h>
-#include <LibCore/System.h>
 #include <LibFileSystem/FileSystem.h>
 #include <LibWebView/URL.h>
 
-#if defined(ENABLE_PUBLIC_SUFFIX)
-#    include <LibWebView/PublicSuffixData.h>
-#endif
-
 namespace WebView {
 
-bool is_public_suffix([[maybe_unused]] StringView host)
-{
-#if defined(ENABLE_PUBLIC_SUFFIX)
-    return PublicSuffixData::the()->is_public_suffix(host);
-#else
-    return false;
-#endif
-}
-
-Optional<String> get_public_suffix([[maybe_unused]] StringView host)
-{
-#if defined(ENABLE_PUBLIC_SUFFIX)
-    return MUST(PublicSuffixData::the()->get_public_suffix(host));
-#else
-    return {};
-#endif
-}
-
 Optional<URL::URL> sanitize_url(StringView url, Optional<StringView> search_engine, AppendTLD append_tld)
 {
     if (FileSystem::exists(url.trim_whitespace())) {
@@ -111,7 +88,7 @@ static URLParts break_web_url_into_parts(URL::URL const& url, StringView url_str
         domain = url_without_scheme;
     }
 
-    auto public_suffix = get_public_suffix(domain);
+    auto public_suffix = URL::get_public_suffix(domain);
     if (!public_suffix.has_value() || !domain.ends_with(*public_suffix))
         return { scheme, domain, remainder };
 

+ 0 - 3
Libraries/LibWebView/URL.h

@@ -12,9 +12,6 @@
 
 namespace WebView {
 
-bool is_public_suffix(StringView host);
-Optional<String> get_public_suffix(StringView host);
-
 enum class AppendTLD {
     No,
     Yes,

+ 1 - 1
Meta/Lagom/Tools/CodeGenerators/CMakeLists.txt

@@ -1,4 +1,4 @@
 add_subdirectory(IPCCompiler)
 add_subdirectory(LibTextCodec)
+add_subdirectory(LibURL)
 add_subdirectory(LibWeb)
-add_subdirectory(LibWebView)

+ 0 - 0
Meta/Lagom/Tools/CodeGenerators/LibWebView/CMakeLists.txt → Meta/Lagom/Tools/CodeGenerators/LibURL/CMakeLists.txt


+ 3 - 3
Meta/Lagom/Tools/CodeGenerators/LibWebView/GeneratePublicSuffixData.cpp → Meta/Lagom/Tools/CodeGenerators/LibURL/GeneratePublicSuffixData.cpp

@@ -56,7 +56,7 @@ ErrorOr<void> generate_header_file(Core::InputBufferedFile&, Core::File& file)
 #include <AK/Trie.h>
 #include <AK/Variant.h>
 
-namespace WebView {
+namespace URL {
 
 class PublicSuffixData {
 protected:
@@ -96,9 +96,9 @@ ErrorOr<void> generate_implementation_file(Core::InputBufferedFile& input, Core:
     generator.append(R"~~~(
 #include <AK/String.h>
 #include <AK/Vector.h>
-#include <LibWebView/PublicSuffixData.h>
+#include <LibURL/PublicSuffixData.h>
 
-namespace WebView {
+namespace URL {
 
 static constexpr auto s_public_suffixes = Array {)~~~");