From b6efa4a8a985c47559e953d70d16218f3ff93941 Mon Sep 17 00:00:00 2001 From: Madrets <48129146+Madrets@users.noreply.github.com> Date: Tue, 17 May 2022 17:30:46 -0400 Subject: [PATCH] pass Ipfs protocol compliance suite (#19) * added handlers for ipfs and ipns protocols * Updated bromite base version, added new build scripts * Sync dependencies on fresh checkout for bromite * Remove unnecessary patch * Handle indirect ipfs and ipns URL requests * Fixed potential syntax errors * Fixed more potential syntax errors * Handle indirect ipfs and ipns URL requests * Fixed potential syntax errors * Fixed more potential syntax errors * Resolved merge issues * Fixed some syntax errors * Removed accidentally created patch * Fix crashing when running tests * Add SetURLChainUnsafe which actually sets the URL chain * Added support for the Fetch API and other services. Also added support for ipld and pubsub schemes * Updated comments * Fixed syntax error * upgrade daemon to v1.0.1 * Set ipfs schemes as handled by network service * Fix patch to use emmanuels changes * Update daemon to v1.0.2 * Update daemon to 1.0.3 * Add ipfs url schemes to android manifest * Registered the protocols as secure and service worker enabled. * Fixed syntax error * Mark IPFS schemes as cryptographic * Fix syntax errror in SchemeIsCryptographic Co-authored-by: mauve --- daemon_tag.txt | 2 +- .../0001-AG-Handle-IPFS-and-IPNS-URLs.patch | 346 ++++++++++++++---- patches/0001-AG-Wifi-Auto-Connect.patch | 24 +- 3 files changed, 301 insertions(+), 71 deletions(-) diff --git a/daemon_tag.txt b/daemon_tag.txt index 3b9e5db..3e7bcf0 100644 --- a/daemon_tag.txt +++ b/daemon_tag.txt @@ -1 +1 @@ -v1.0.4 \ No newline at end of file +v1.0.4 diff --git a/patches/0001-AG-Handle-IPFS-and-IPNS-URLs.patch b/patches/0001-AG-Handle-IPFS-and-IPNS-URLs.patch index a008efc..df808b4 100644 --- a/patches/0001-AG-Handle-IPFS-and-IPNS-URLs.patch +++ b/patches/0001-AG-Handle-IPFS-and-IPNS-URLs.patch @@ -1,84 +1,282 @@ -From aa1c04615d7ca71fdec8664389db1217e8bc50f6 Mon Sep 17 00:00:00 2001 +From 8b34656522dab86da66ad191ee139913031af56c Mon Sep 17 00:00:00 2001 From: Madrets Date: Thu, 21 Apr 2022 10:44:57 -0400 -Subject: [PATCH 1/1] AG Handle IPFS and IPNS URLs +Subject: [PATCH] AG Handle IPFS and IPNS URLs --- - chrome/browser/browser_about_handler.cc | 25 ++++++++++++++++++++-- - chrome/browser/profiles/profile_io_data.cc | 2 ++ - content/common/url_schemes.cc | 2 ++ - url/url_constants.cc | 4 ++++ - url/url_constants.h | 4 ++++ - url/url_util.cc | 7 ++++++ - 6 files changed, 42 insertions(+), 2 deletions(-) + chrome/android/java/AndroidManifest.xml | 4 ++ + chrome/browser/profiles/profile_io_data.cc | 4 ++ + content/common/url_schemes.cc | 21 ++++++++++ + net/url_request/url_request.cc | 5 +++ + net/url_request/url_request.h | 1 + + net/url_request/url_request_job_factory.cc | 41 +++++++++++++++++++ + services/network/public/cpp/url_util.cc | 2 +- + .../platform/weborigin/scheme_registry.cc | 8 ++-- + url/gurl.cc | 8 ++++ + url/gurl.h | 3 ++ + url/url_constants.cc | 4 ++ + url/url_constants.h | 4 ++ + url/url_util.cc | 14 +++++++ + 13 files changed, 115 insertions(+), 4 deletions(-) -diff --git a/chrome/browser/browser_about_handler.cc b/chrome/browser/browser_about_handler.cc -index 9e534ff1683f1..e4d1430892548 100644 ---- a/chrome/browser/browser_about_handler.cc -+++ b/chrome/browser/browser_about_handler.cc -@@ -32,11 +32,32 @@ bool HandleChromeAboutAndChromeSyncRewrite( - DCHECK(url->IsAboutBlank() || url->IsAboutSrcdoc() || - !url->SchemeIs(url::kAboutScheme)); - -- // Only handle chrome: URLs. -- if (!url->SchemeIs(content::kChromeUIScheme)) -+ // Only handle these URLs: chrome: ipfs: ipns: -+ if (!(url->SchemeIs(content::kChromeUIScheme) || -+ url->SchemeIs(url::kIpfsScheme) || -+ url->SchemeIs(url::kIpnsScheme))) - return false; - -+ std::string scheme(url->scheme()); - std::string host(url->host()); -+ std::string path(url->path()); -+ -+ // Handle ipfs and ipns URLs -+ if (scheme == url::kIpfsScheme || scheme == url::kIpnsScheme) { -+ std::string tempPath = "/" + scheme + "/" + host + path; -+ const char* newPath = tempPath.c_str(); -+ const char newHost[] = "localhost"; -+ const char newPort[] = "8080"; -+ -+ GURL::Replacements replacements; -+ replacements.SetSchemeStr(url::kHttpScheme); -+ replacements.SetHostStr(newHost); -+ replacements.SetPortStr(newPort); -+ replacements.SetPathStr(newPath); -+ *url = url->ReplaceComponents(replacements); -+ return false; -+ } -+ - if (host == chrome::kChromeUIAboutHost) { - // Replace chrome://about with chrome://chrome-urls. - host = chrome::kChromeUIChromeURLsHost; +diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml +index 1278803e28..71eb475b0c 100644 +--- a/chrome/android/java/AndroidManifest.xml ++++ b/chrome/android/java/AndroidManifest.xml +@@ -212,6 +212,10 @@ by a child template that "extends" this file. + + + ++ ++ ++ ++ + + {% endblock %} + diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc -index 242c2e3f1fdd1..983a9071a3ccb 100644 +index 242c2e3f1f..fcf2813f3b 100644 --- a/chrome/browser/profiles/profile_io_data.cc +++ b/chrome/browser/profiles/profile_io_data.cc -@@ -26,6 +26,8 @@ bool ProfileIOData::IsHandledProtocol(const std::string& scheme) { +@@ -26,6 +26,10 @@ bool ProfileIOData::IsHandledProtocol(const std::string& scheme) { static const char* const kProtocolList[] = { url::kHttpScheme, url::kHttpsScheme, + url::kIpfsScheme, + url::kIpnsScheme, ++ url::kIpldScheme, ++ url::kPubsubScheme, #if BUILDFLAG(ENABLE_WEBSOCKETS) url::kWsScheme, url::kWssScheme, diff --git a/content/common/url_schemes.cc b/content/common/url_schemes.cc -index e59440185a5fe..b40ab7fde653f 100644 +index e59440185a..d4dd43afb9 100644 --- a/content/common/url_schemes.cc +++ b/content/common/url_schemes.cc -@@ -25,6 +25,8 @@ bool g_registered_url_schemes = false; +@@ -25,6 +25,10 @@ bool g_registered_url_schemes = false; const char* const kDefaultSavableSchemes[] = { url::kHttpScheme, url::kHttpsScheme, + url::kIpfsScheme, + url::kIpnsScheme, ++ url::kIpldScheme, ++ url::kPubsubScheme, url::kFileScheme, url::kFileSystemScheme, kChromeDevToolsScheme, +@@ -59,6 +63,10 @@ void RegisterContentSchemes(bool should_lock_registry) { + + url::AddStandardScheme(kChromeDevToolsScheme, url::SCHEME_WITH_HOST); + url::AddStandardScheme(kChromeUIScheme, url::SCHEME_WITH_HOST); ++ url::AddStandardScheme(url::kIpfsScheme, url::SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION); ++ url::AddStandardScheme(url::kIpnsScheme, url::SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION); ++ url::AddStandardScheme(url::kIpldScheme, url::SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION); ++ url::AddStandardScheme(url::kPubsubScheme, url::SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION); + url::AddStandardScheme(kChromeUIUntrustedScheme, url::SCHEME_WITH_HOST); + url::AddStandardScheme(kGuestScheme, url::SCHEME_WITH_HOST); + url::AddStandardScheme(kChromeErrorScheme, url::SCHEME_WITH_HOST); +@@ -71,6 +79,10 @@ void RegisterContentSchemes(bool should_lock_registry) { + + schemes.secure_schemes.push_back(kChromeDevToolsScheme); + schemes.secure_schemes.push_back(kChromeUIScheme); ++ schemes.secure_schemes.push_back(url::kIpfsScheme); ++ schemes.secure_schemes.push_back(url::kIpnsScheme); ++ schemes.secure_schemes.push_back(url::kIpldScheme); ++ schemes.secure_schemes.push_back(url::kPubsubScheme); + schemes.secure_schemes.push_back(kChromeUIUntrustedScheme); + schemes.secure_schemes.push_back(kChromeErrorScheme); + for (auto& scheme : schemes.secure_schemes) +@@ -88,6 +100,10 @@ void RegisterContentSchemes(bool should_lock_registry) { + + schemes.cors_enabled_schemes.push_back(kChromeUIScheme); + schemes.cors_enabled_schemes.push_back(kChromeUIUntrustedScheme); ++ schemes.cors_enabled_schemes.push_back(url::kIpfsScheme); ++ schemes.cors_enabled_schemes.push_back(url::kIpnsScheme); ++ schemes.cors_enabled_schemes.push_back(url::kIpldScheme); ++ schemes.cors_enabled_schemes.push_back(url::kPubsubScheme); + for (auto& scheme : schemes.cors_enabled_schemes) + url::AddCorsEnabledScheme(scheme.c_str()); + +@@ -104,6 +120,11 @@ void RegisterContentSchemes(bool should_lock_registry) { + url::EnableNonStandardSchemesForAndroidWebView(); + #endif + ++ schemes.service_worker_schemes.push_back(url::kIpfsScheme); ++ schemes.service_worker_schemes.push_back(url::kIpnsScheme); ++ schemes.service_worker_schemes.push_back(url::kIpldScheme); ++ schemes.service_worker_schemes.push_back(url::kPubsubScheme); ++ + // Prevent future modification of the scheme lists. This is to prevent + // accidental creation of data races in the program. Add*Scheme aren't + // threadsafe so must be called when GURL isn't used on any other thread. This +diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc +index 849713728f..fffa45c6c6 100644 +--- a/net/url_request/url_request.cc ++++ b/net/url_request/url_request.cc +@@ -473,6 +473,11 @@ void URLRequest::SetURLChain(const std::vector& url_chain) { + url_chain.begin() + url_chain.size() - 1); + } + ++void URLRequest::SetURLChainUnsafe(const std::vector& url_chain) { ++ url_chain_ = url_chain; ++} ++ ++ + void URLRequest::set_site_for_cookies(const SiteForCookies& site_for_cookies) { + DCHECK(!is_pending_); + site_for_cookies_ = site_for_cookies; +diff --git a/net/url_request/url_request.h b/net/url_request/url_request.h +index b4bf5651be..61de4b1d44 100644 +--- a/net/url_request/url_request.h ++++ b/net/url_request/url_request.h +@@ -246,6 +246,7 @@ class NET_EXPORT URLRequest : public base::SupportsUserData { + // This method should only be called on new requests that have a single + // entry in their existing `url_chain_`. + void SetURLChain(const std::vector& url_chain); ++ void SetURLChainUnsafe(const std::vector& url_chain); + + // The URL that should be consulted for the third-party cookie blocking + // policy, as defined in Section 2.1.1 and 2.1.2 of +diff --git a/net/url_request/url_request_job_factory.cc b/net/url_request/url_request_job_factory.cc +index 079187d608..c6f7b6bdaa 100644 +--- a/net/url_request/url_request_job_factory.cc ++++ b/net/url_request/url_request_job_factory.cc +@@ -14,6 +14,9 @@ + #include "url/gurl.h" + #include "url/url_constants.h" + ++#include ++#include ++ + namespace net { + + namespace { +@@ -40,6 +43,36 @@ class HttpProtocolHandler : public URLRequestJobFactory::ProtocolHandler { + return std::make_unique(request, + ERR_UNKNOWN_URL_SCHEME); + } ++ ++ // Handle ipfs, ipns, ipld, and pubsub URLs ++ const GURL& url = request->url(); ++ std::string scheme(url.scheme()); ++ ++ if (scheme == url::kIpfsScheme || scheme == url::kIpnsScheme || ++ scheme == url::kIpldScheme || scheme == url::kPubsubScheme) { ++ std::string host(url.host()); ++ std::string path(url.path()); ++ ++ std::vector url_chain = {}; ++ url_chain.push_back(url); ++ ++ std::string tempPath = "/" + scheme + "/" + host + path; ++ const char* newPath = tempPath.c_str(); ++ const char newHost[] = "localhost"; ++ const char newPort[] = "8080"; ++ GURL new_url = url; ++ ++ GURL::Replacements replacements; ++ replacements.SetSchemeStr(url::kHttpScheme); ++ replacements.SetHostStr(newHost); ++ replacements.SetPortStr(newPort); ++ replacements.SetPathStr(newPath); ++ new_url = new_url.ReplaceComponents(replacements); ++ ++ url_chain.push_back(new_url); ++ request->SetURLChainUnsafe(url_chain); ++ } ++ + return URLRequestHttpJob::Create(request); + } + +@@ -60,6 +93,14 @@ URLRequestJobFactory::URLRequestJobFactory() { + /*is_for_websockets=*/false)); + SetProtocolHandler(url::kHttpsScheme, std::make_unique( + /*is_for_websockets=*/false)); ++ SetProtocolHandler(url::kIpfsScheme, std::make_unique( ++ /*is_for_websockets=*/false)); ++ SetProtocolHandler(url::kIpnsScheme, std::make_unique( ++ /*is_for_websockets=*/false)); ++ SetProtocolHandler(url::kIpldScheme, std::make_unique( ++ /*is_for_websockets=*/false)); ++ SetProtocolHandler(url::kPubsubScheme, std::make_unique( ++ /*is_for_websockets=*/false)); + #if BUILDFLAG(ENABLE_WEBSOCKETS) + SetProtocolHandler(url::kWsScheme, std::make_unique( + /*is_for_websockets=*/true)); +diff --git a/services/network/public/cpp/url_util.cc b/services/network/public/cpp/url_util.cc +index f41b8934ff..d28e662477 100644 +--- a/services/network/public/cpp/url_util.cc ++++ b/services/network/public/cpp/url_util.cc +@@ -9,7 +9,7 @@ + namespace network { + + bool IsURLHandledByNetworkService(const GURL& url) { +- return (url.SchemeIsHTTPOrHTTPS() || url.SchemeIsWSOrWSS()); ++ return (url.SchemeIsHTTPOrHTTPS() || url.SchemeIsWSOrWSS() || url.SchemeIsIPFSP2P()); + } + + } // namespace network +diff --git a/third_party/blink/renderer/platform/weborigin/scheme_registry.cc b/third_party/blink/renderer/platform/weborigin/scheme_registry.cc +index cb1543a669..7a2a50134d 100644 +--- a/third_party/blink/renderer/platform/weborigin/scheme_registry.cc ++++ b/third_party/blink/renderer/platform/weborigin/scheme_registry.cc +@@ -66,9 +66,11 @@ class URLSchemesRegistry final { + : // For ServiceWorker schemes: HTTP is required because http://localhost + // is considered secure. Additional checks are performed to ensure that + // other http pages are filtered out. +- service_worker_schemes({"http", "https"}), +- fetch_api_schemes({"http", "https"}), +- allowed_in_referrer_schemes({"http", "https"}) { ++ service_worker_schemes({"http", "https", "ipfs", "ipns", "ipld", ++ "pubsub"}), ++ fetch_api_schemes({"http", "https", "ipfs", "ipns", "ipld", "pubsub"}), ++ allowed_in_referrer_schemes({"http", "https", "ipfs", "ipns", ++ "ipld", "pubsub"}) { + for (auto& scheme : url::GetCorsEnabledSchemes()) + cors_enabled_schemes.insert(scheme.c_str()); + for (auto& scheme : url::GetCSPBypassingSchemes()) { +diff --git a/url/gurl.cc b/url/gurl.cc +index d7ede359d1..8b4239522e 100644 +--- a/url/gurl.cc ++++ b/url/gurl.cc +@@ -362,6 +362,10 @@ bool GURL::SchemeIsWSOrWSS() const { + return SchemeIs(url::kWsScheme) || SchemeIs(url::kWssScheme); + } + ++bool GURL::SchemeIsIPFSP2P() const { ++ return SchemeIs(url::kIpfsScheme) || SchemeIs(url::kIpnsScheme) || SchemeIs(url::kIpldScheme) || SchemeIs(url::kPubsubScheme); ++} ++ + bool GURL::SchemeIsCryptographic() const { + if (!has_scheme()) + return false; +@@ -373,6 +377,10 @@ bool GURL::SchemeIsCryptographic(base::StringPiece lower_ascii_scheme) { + DCHECK(base::ToLowerASCII(lower_ascii_scheme) == lower_ascii_scheme); + + return lower_ascii_scheme == url::kHttpsScheme || ++ lower_ascii_scheme == url:kIpfsScheme || ++ lower_ascii_scheme == url:kIpnsScheme || ++ lower_ascii_scheme == url:kIpldScheme || ++ lower_ascii_scheme == url:kPubsubScheme || + lower_ascii_scheme == url::kWssScheme; + } + +diff --git a/url/gurl.h b/url/gurl.h +index 8ad47d64a1..5358d22f37 100644 +--- a/url/gurl.h ++++ b/url/gurl.h +@@ -238,6 +238,9 @@ class COMPONENT_EXPORT(URL) GURL { + // Returns true is the scheme is "ws" or "wss". + bool SchemeIsWSOrWSS() const; + ++ // Returns true if the scheme is "ipfs" or "ipns" or "ipld" or "pubsub" ++ bool SchemeIsIPFSP2P() const; ++ + // We often need to know if this is a file URL. File URLs are "standard", but + // are often treated separately by some programs. + bool SchemeIsFile() const { diff --git a/url/url_constants.cc b/url/url_constants.cc -index 536db0644f6bd..9a43db1529a0a 100644 +index 536db0644f..776e5c6d17 100644 --- a/url/url_constants.cc +++ b/url/url_constants.cc @@ -37,6 +37,10 @@ const char kHttpScheme[] = "http"; @@ -86,14 +284,14 @@ index 536db0644f6bd..9a43db1529a0a 100644 const char kHttpsScheme[] = "https"; const char16_t kHttpsScheme16[] = u"https"; +const char kIpfsScheme[] = "ipfs"; -+const char16_t kIpfsScheme16[] = u"ipfs"; +const char kIpnsScheme[] = "ipns"; -+const char16_t kIpnsScheme16[] = u"ipns"; ++const char kIpldScheme[] = "ipld"; ++const char kPubsubScheme[] = "pubsub"; const char kJavaScriptScheme[] = "javascript"; const char16_t kJavaScriptScheme16[] = u"javascript"; const char kMailToScheme[] = "mailto"; diff --git a/url/url_constants.h b/url/url_constants.h -index 728b98573c3c0..24a43d9045258 100644 +index 728b98573c..36fcccae7a 100644 --- a/url/url_constants.h +++ b/url/url_constants.h @@ -43,6 +43,10 @@ COMPONENT_EXPORT(URL) extern const char kHttpScheme[]; @@ -101,49 +299,61 @@ index 728b98573c3c0..24a43d9045258 100644 COMPONENT_EXPORT(URL) extern const char kHttpsScheme[]; COMPONENT_EXPORT(URL) extern const char16_t kHttpsScheme16[]; +COMPONENT_EXPORT(URL) extern const char kIpfsScheme[]; -+COMPONENT_EXPORT(URL) extern const char16_t kIpfsScheme16[]; +COMPONENT_EXPORT(URL) extern const char kIpnsScheme[]; -+COMPONENT_EXPORT(URL) extern const char16_t kIpnsScheme16[]; ++COMPONENT_EXPORT(URL) extern const char kIpldScheme[]; ++COMPONENT_EXPORT(URL) extern const char kPubsubScheme[]; COMPONENT_EXPORT(URL) extern const char kJavaScriptScheme[]; COMPONENT_EXPORT(URL) extern const char16_t kJavaScriptScheme16[]; COMPONENT_EXPORT(URL) extern const char kMailToScheme[]; diff --git a/url/url_util.cc b/url/url_util.cc -index 244296a7f8903..5412f120ef370 100644 +index 244296a7f8..5734a017bf 100644 --- a/url/url_util.cc +++ b/url/url_util.cc -@@ -35,6 +35,8 @@ struct SchemeRegistry { +@@ -35,6 +35,10 @@ struct SchemeRegistry { std::vector standard_schemes = { {kHttpsScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION}, {kHttpScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION}, -+ {kIpfsScheme, SCHEME_WITH_HOST_AND_PORT}, -+ {kIpnsScheme, SCHEME_WITH_HOST_AND_PORT}, ++ {kIpfsScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION}, ++ {kIpnsScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION}, ++ {kIpldScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION}, ++ {kPubsubScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION}, {kTraceScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION}, // Yes, file URLs can have a hostname, so file URLs should be handled as // "standard". File URLs never have a port as specified by the SchemeType -@@ -60,11 +62,14 @@ struct SchemeRegistry { +@@ -60,11 +64,16 @@ struct SchemeRegistry { std::vector referrer_schemes = { {kHttpsScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION}, {kHttpScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION}, -+ {kIpfsScheme, SCHEME_WITH_HOST_AND_PORT}, -+ {kIpnsScheme, SCHEME_WITH_HOST_AND_PORT}, ++ {kIpfsScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION}, ++ {kIpnsScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION}, ++ {kIpldScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION}, ++ {kPubsubScheme, SCHEME_WITH_HOST_PORT_AND_USER_INFORMATION}, }; // Schemes that do not trigger mixed content warning. std::vector secure_schemes = { kHttpsScheme, kAboutScheme, kDataScheme, kQuicTransportScheme, kWssScheme, -+ kIpfsScheme, kIpnsScheme, ++ kIpfsScheme, kIpnsScheme, kIpldScheme, kPubsubScheme, }; // Schemes that normal pages cannot link to or access (i.e., with the same -@@ -87,6 +92,8 @@ struct SchemeRegistry { +@@ -87,11 +96,16 @@ struct SchemeRegistry { kHttpsScheme, kHttpScheme, kDataScheme, + kIpfsScheme, + kIpnsScheme, ++ kIpldScheme, ++ kPubsubScheme, }; // Schemes that can be used by web to store data (local storage, etc). + std::vector web_storage_schemes = { + kHttpsScheme, kHttpScheme, kFileScheme, kFtpScheme, kWssScheme, kWsScheme, ++ kIpfsScheme, kIpnsScheme, kIpldScheme, kPubsubScheme, + }; + + // Schemes that can bypass the Content-Security-Policy (CSP) checks. -- -2.25.1 +2.34.1 diff --git a/patches/0001-AG-Wifi-Auto-Connect.patch b/patches/0001-AG-Wifi-Auto-Connect.patch index 1ed6cfc..c6cfe78 100644 --- a/patches/0001-AG-Wifi-Auto-Connect.patch +++ b/patches/0001-AG-Wifi-Auto-Connect.patch @@ -1,4 +1,4 @@ -From 71150a935ce9e1f27a538164ad1caeddc12df44a Mon Sep 17 00:00:00 2001 +From 6a1c5a1158c9b74b9c5841220da0ce5d6f1f8042 Mon Sep 17 00:00:00 2001 From: mauve Date: Sat, 23 Apr 2022 01:34:51 -0400 Subject: [PATCH] AG Wifi Auto Connect @@ -23,7 +23,8 @@ Subject: [PATCH] AG Wifi Auto Connect third_party/wifi_autoconnect/README.chromium | 3 + .../wifi_autoconnect/WifiAutoConnect.info | 14 ++ third_party/wifi_autoconnect/cipd.yaml | 4 + - 19 files changed, 344 insertions(+), 3 deletions(-) + url/gurl.cc | 8 +- + 20 files changed, 348 insertions(+), 7 deletions(-) create mode 100644 chrome/android/java/res/drawable/wifi_auto_connect.xml create mode 100644 third_party/wifi_autoconnect/BUILD.gn create mode 100644 third_party/wifi_autoconnect/LICENSE @@ -613,6 +614,25 @@ index 0000000000..d209c96027 +description: Wifi AutoConnect Android +data: + - file: "WifiAutoConnect.aar" +diff --git a/url/gurl.cc b/url/gurl.cc +index 8b4239522e..5943b8ad10 100644 +--- a/url/gurl.cc ++++ b/url/gurl.cc +@@ -377,10 +377,10 @@ bool GURL::SchemeIsCryptographic(base::StringPiece lower_ascii_scheme) { + DCHECK(base::ToLowerASCII(lower_ascii_scheme) == lower_ascii_scheme); + + return lower_ascii_scheme == url::kHttpsScheme || +- lower_ascii_scheme == url:kIpfsScheme || +- lower_ascii_scheme == url:kIpnsScheme || +- lower_ascii_scheme == url:kIpldScheme || +- lower_ascii_scheme == url:kPubsubScheme || ++ lower_ascii_scheme == url::kIpfsScheme || ++ lower_ascii_scheme == url::kIpnsScheme || ++ lower_ascii_scheme == url::kIpldScheme || ++ lower_ascii_scheme == url::kPubsubScheme || + lower_ascii_scheme == url::kWssScheme; + } + -- 2.34.1