1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
8 #include "mozilla/dom/BindingDeclarations.h"
9 #include "mozilla/dom/URLSearchParams.h"
10 #include "nsCycleCollectionParticipant.h"
11 #include "nsAutoPtr.h"
28 struct objectURLOptions
;
34 class URL MOZ_FINAL
: public URLSearchParamsObserver
39 NS_DECL_CYCLE_COLLECTING_ISUPPORTS
40 NS_DECL_CYCLE_COLLECTION_CLASS(URL
)
42 explicit URL(nsIURI
* aURI
);
46 WrapObject(JSContext
* aCx
);
48 static already_AddRefed
<URL
>
49 Constructor(const GlobalObject
& aGlobal
, const nsAString
& aUrl
,
50 URL
& aBase
, ErrorResult
& aRv
);
51 static already_AddRefed
<URL
>
52 Constructor(const GlobalObject
& aGlobal
, const nsAString
& aUrl
,
53 const nsAString
& aBase
, ErrorResult
& aRv
);
55 static void CreateObjectURL(const GlobalObject
& aGlobal
,
57 const objectURLOptions
& aOptions
,
60 static void CreateObjectURL(const GlobalObject
& aGlobal
,
61 DOMMediaStream
& aStream
,
62 const objectURLOptions
& aOptions
,
65 static void CreateObjectURL(const GlobalObject
& aGlobal
,
67 const objectURLOptions
& aOptions
,
70 static void RevokeObjectURL(const GlobalObject
& aGlobal
,
71 const nsAString
& aURL
);
73 void GetHref(nsString
& aHref
, ErrorResult
& aRv
) const;
75 void SetHref(const nsAString
& aHref
, ErrorResult
& aRv
);
77 void GetOrigin(nsString
& aOrigin
, ErrorResult
& aRv
) const;
79 void GetProtocol(nsString
& aProtocol
, ErrorResult
& aRv
) const;
81 void SetProtocol(const nsAString
& aProtocol
, ErrorResult
& aRv
);
83 void GetUsername(nsString
& aUsername
, ErrorResult
& aRv
) const;
85 void SetUsername(const nsAString
& aUsername
, ErrorResult
& aRv
);
87 void GetPassword(nsString
& aPassword
, ErrorResult
& aRv
) const;
89 void SetPassword(const nsAString
& aPassword
, ErrorResult
& aRv
);
91 void GetHost(nsString
& aHost
, ErrorResult
& aRv
) const;
93 void SetHost(const nsAString
& aHost
, ErrorResult
& aRv
);
95 void GetHostname(nsString
& aHostname
, ErrorResult
& aRv
) const;
97 void SetHostname(const nsAString
& aHostname
, ErrorResult
& aRv
);
99 void GetPort(nsString
& aPort
, ErrorResult
& aRv
) const;
101 void SetPort(const nsAString
& aPort
, ErrorResult
& aRv
);
103 void GetPathname(nsString
& aPathname
, ErrorResult
& aRv
) const;
105 void SetPathname(const nsAString
& aPathname
, ErrorResult
& aRv
);
107 void GetSearch(nsString
& aRetval
, ErrorResult
& aRv
) const;
109 void SetSearch(const nsAString
& aArg
, ErrorResult
& aRv
);
111 URLSearchParams
* SearchParams();
113 void SetSearchParams(URLSearchParams
& aSearchParams
);
115 void GetHash(nsString
& aRetval
, ErrorResult
& aRv
) const;
117 void SetHash(const nsAString
& aArg
, ErrorResult
& aRv
);
119 void Stringify(nsString
& aRetval
, ErrorResult
& aRv
) const
121 GetHref(aRetval
, aRv
);
124 // URLSearchParamsObserver
125 void URLSearchParamsUpdated(URLSearchParams
* aSearchParams
) MOZ_OVERRIDE
;
128 nsIURI
* GetURI() const
133 void CreateSearchParamsIfNeeded();
135 void SetSearchInternal(const nsAString
& aSearch
);
137 void UpdateURLSearchParams();
139 static void CreateObjectURLInternal(const GlobalObject
& aGlobal
,
140 nsISupports
* aObject
,
141 const nsACString
& aScheme
,
142 const objectURLOptions
& aOptions
,
144 ErrorResult
& aError
);
146 nsCOMPtr
<nsIURI
> mURI
;
147 nsRefPtr
<URLSearchParams
> mSearchParams
;
149 friend class mozilla::dom::workers::URLProxy
;
152 bool IsChromeURI(nsIURI
* aURI
);
157 #endif /* URL_h___ */