/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #ifndef URLPatternGlue_h_ #define URLPatternGlue_h_ #include "mozilla/net/urlpattern_glue.h" #include "nsTHashMap.h" #include "mozilla/Maybe.h" #include "mozilla/Logging.h" extern mozilla::LazyLogModule gUrlPatternLog; namespace mozilla::net { UrlPatternInput CreateUrlPatternInput(const nsACString& url); UrlPatternInput CreateUrlPatternInput(const UrlPatternInit& init); MaybeString CreateMaybeString(const nsACString& str, bool valid); MaybeString CreateMaybeStringNone(); class UrlPatternComponentResult { public: UrlPatternComponentResult() = default; UrlPatternComponentResult(const UrlPatternComponentResult& aOther) : mInput(aOther.mInput) { for (auto iter = aOther.mGroups.ConstIter(); !iter.Done(); iter.Next()) { mGroups.InsertOrUpdate(iter.Key(), iter.Data()); } } UrlPatternComponentResult( UrlPatternComponentResult&& aOther) noexcept // move constructor : mInput(std::move(aOther.mInput)), mGroups(std::move(aOther.mGroups)) {} UrlPatternComponentResult& operator=( UrlPatternComponentResult&& aOther) noexcept { // move assignment if (this != &aOther) { mInput = std::move(aOther.mInput); mGroups = std::move(aOther.mGroups); } return *this; } nsAutoCString mInput; nsTHashMap mGroups; }; class UrlPatternResult { public: UrlPatternResult() = default; Maybe mProtocol; Maybe mUsername; Maybe mPassword; Maybe mHostname; Maybe mPort; Maybe mPathname; Maybe mSearch; Maybe mHash; CopyableTArray mInputs; }; Maybe UrlPatternExec(UrlPatternGlue aPattern, const UrlPatternInput& aInput, Maybe aMaybeBaseUrl, bool aIgnoreCase = false); bool UrlPatternTest(UrlPatternGlue aPattern, const UrlPatternInput& aInput, Maybe aMaybeBaseUrl, bool aIgnoreCase = false); nsAutoCString UrlPatternGetProtocol(const UrlPatternGlue aPattern); nsAutoCString UrlPatternGetUsername(const UrlPatternGlue aPattern); nsAutoCString UrlPatternGetPassword(const UrlPatternGlue aPattern); nsAutoCString UrlPatternGetHostname(const UrlPatternGlue aPattern); nsAutoCString UrlPatternGetPort(const UrlPatternGlue aPattern); nsAutoCString UrlPatternGetPathname(const UrlPatternGlue aPattern); nsAutoCString UrlPatternGetSearch(const UrlPatternGlue aPattern); nsAutoCString UrlPatternGetHash(const UrlPatternGlue aPattern); } // namespace mozilla::net #endif // URLPatternGlue_h_