diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /dom/url/URL.h | |
parent | Initial commit. (diff) | |
download | firefox-e51783d008170d9ab27d25da98ca3a38b0a41b67.tar.xz firefox-e51783d008170d9ab27d25da98ca3a38b0a41b67.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/url/URL.h')
-rw-r--r-- | dom/url/URL.h | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/dom/url/URL.h b/dom/url/URL.h new file mode 100644 index 0000000000..7c2563d095 --- /dev/null +++ b/dom/url/URL.h @@ -0,0 +1,147 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* 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 mozilla_dom_URL_h +#define mozilla_dom_URL_h + +#include "mozilla/dom/URLSearchParams.h" +#include "nsCycleCollectionParticipant.h" +#include "nsIURI.h" +#include "nsString.h" +#include "nsWrapperCache.h" + +class nsISupports; + +namespace mozilla { + +class ErrorResult; + +namespace dom { + +class Blob; +class MediaSource; +class GlobalObject; +template <typename T> +class Optional; + +class URL final : public URLSearchParamsObserver, public nsWrapperCache { + public: + NS_DECL_CYCLE_COLLECTING_ISUPPORTS + NS_DECL_CYCLE_COLLECTION_WRAPPERCACHE_CLASS(URL) + + explicit URL(nsISupports* aParent, nsCOMPtr<nsIURI> aURI) + : mParent(aParent), mURI(std::move(aURI)) { + MOZ_ASSERT(mURI); + } + + // WebIDL methods + nsISupports* GetParentObject() const { return mParent; } + + JSObject* WrapObject(JSContext* aCx, + JS::Handle<JSObject*> aGivenProto) override; + + static already_AddRefed<URL> Constructor(const GlobalObject& aGlobal, + const nsAString& aURL, + const Optional<nsAString>& aBase, + ErrorResult& aRv); + + static already_AddRefed<URL> Constructor(nsISupports* aParent, + const nsAString& aURL, + const nsAString& aBase, + ErrorResult& aRv); + + static already_AddRefed<URL> Constructor(nsISupports* aParent, + const nsAString& aURL, nsIURI* aBase, + ErrorResult& aRv); + + static void CreateObjectURL(const GlobalObject& aGlobal, Blob& aBlob, + nsAString& aResult, ErrorResult& aRv); + + static void CreateObjectURL(const GlobalObject& aGlobal, MediaSource& aSource, + nsAString& aResult, ErrorResult& aRv); + + static void RevokeObjectURL(const GlobalObject& aGlobal, + const nsAString& aURL, ErrorResult& aRv); + + static bool IsValidObjectURL(const GlobalObject& aGlobal, + const nsAString& aURL, ErrorResult& aRv); + + static bool CanParse(const GlobalObject& aGlobal, const nsAString& aURL, + const Optional<nsAString>& aBase); + + void GetHref(nsAString& aHref) const; + + void SetHref(const nsAString& aHref, ErrorResult& aRv); + + void GetOrigin(nsAString& aOrigin) const; + + void GetProtocol(nsAString& aProtocol) const; + + void SetProtocol(const nsAString& aProtocol); + + void GetUsername(nsAString& aUsername) const; + + void SetUsername(const nsAString& aUsername); + + void GetPassword(nsAString& aPassword) const; + + void SetPassword(const nsAString& aPassword); + + void GetHost(nsAString& aHost) const; + + void SetHost(const nsAString& aHost); + + void GetHostname(nsAString& aHostname) const; + + void SetHostname(const nsAString& aHostname); + + void GetPort(nsAString& aPort) const; + + void SetPort(const nsAString& aPort); + + void GetPathname(nsAString& aPathname) const; + + void SetPathname(const nsAString& aPathname); + + void GetSearch(nsAString& aSearch) const; + + void SetSearch(const nsAString& aSearch); + + URLSearchParams* SearchParams(); + + void GetHash(nsAString& aHost) const; + + void SetHash(const nsAString& aHash); + + void ToJSON(nsAString& aResult) const { GetHref(aResult); } + + // URLSearchParamsObserver + void URLSearchParamsUpdated(URLSearchParams* aSearchParams) override; + + nsIURI* URI() const; + static already_AddRefed<URL> FromURI(GlobalObject&, nsIURI*); + + private: + ~URL() = default; + + void UpdateURLSearchParams(); + + private: + void SetSearchInternal(const nsAString& aSearch); + + void CreateSearchParamsIfNeeded(); + + nsCOMPtr<nsISupports> mParent; + RefPtr<URLSearchParams> mSearchParams; + nsCOMPtr<nsIURI> mURI; +}; + +bool IsChromeURI(nsIURI* aURI); + +} // namespace dom +} // namespace mozilla + +#endif /* mozilla_dom_URL_h */ |