Bumping manifests a=b2g-bump
[gecko.git] / dom / base / URL.h
blob080937a12e8250a2a19a5cb7368f41e94d1884d0
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/. */
5 #ifndef URL_h___
6 #define URL_h___
8 #include "mozilla/dom/BindingDeclarations.h"
9 #include "mozilla/dom/URLSearchParams.h"
10 #include "nsCycleCollectionParticipant.h"
11 #include "nsAutoPtr.h"
12 #include "nsString.h"
14 class nsIDOMBlob;
15 class nsIPrincipal;
16 class nsISupports;
17 class nsIURI;
19 namespace mozilla {
21 class ErrorResult;
22 class DOMMediaStream;
24 namespace dom {
26 class MediaSource;
27 class GlobalObject;
28 struct objectURLOptions;
30 namespace workers {
31 class URLProxy;
34 class URL MOZ_FINAL : public URLSearchParamsObserver
36 ~URL() {}
38 public:
39 NS_DECL_CYCLE_COLLECTING_ISUPPORTS
40 NS_DECL_CYCLE_COLLECTION_CLASS(URL)
42 explicit URL(nsIURI* aURI);
44 // WebIDL methods
45 JSObject*
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,
56 nsIDOMBlob* aBlob,
57 const objectURLOptions& aOptions,
58 nsString& aResult,
59 ErrorResult& aError);
60 static void CreateObjectURL(const GlobalObject& aGlobal,
61 DOMMediaStream& aStream,
62 const objectURLOptions& aOptions,
63 nsString& aResult,
64 ErrorResult& aError);
65 static void CreateObjectURL(const GlobalObject& aGlobal,
66 MediaSource& aSource,
67 const objectURLOptions& aOptions,
68 nsString& aResult,
69 ErrorResult& aError);
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;
127 private:
128 nsIURI* GetURI() const
130 return mURI;
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,
143 nsString& aResult,
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___ */