Bumping manifests a=b2g-bump
[gecko.git] / dom / base / URL.h
blob54a82a9e6e4a4092c493c992d3770aa39459f130
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 File;
27 class MediaSource;
28 class GlobalObject;
29 struct objectURLOptions;
31 namespace workers {
32 class URLProxy;
35 class URL MOZ_FINAL : public URLSearchParamsObserver
37 ~URL() {}
39 public:
40 NS_DECL_CYCLE_COLLECTING_ISUPPORTS
41 NS_DECL_CYCLE_COLLECTION_CLASS(URL)
43 explicit URL(nsIURI* aURI);
45 // WebIDL methods
46 JSObject*
47 WrapObject(JSContext* aCx);
49 static already_AddRefed<URL>
50 Constructor(const GlobalObject& aGlobal, const nsAString& aUrl,
51 URL& aBase, ErrorResult& aRv);
52 static already_AddRefed<URL>
53 Constructor(const GlobalObject& aGlobal, const nsAString& aUrl,
54 const nsAString& aBase, ErrorResult& aRv);
56 static void CreateObjectURL(const GlobalObject& aGlobal,
57 File& aBlob,
58 const objectURLOptions& aOptions,
59 nsString& aResult,
60 ErrorResult& aError);
61 static void CreateObjectURL(const GlobalObject& aGlobal,
62 DOMMediaStream& aStream,
63 const objectURLOptions& aOptions,
64 nsString& aResult,
65 ErrorResult& aError);
66 static void CreateObjectURL(const GlobalObject& aGlobal,
67 MediaSource& aSource,
68 const objectURLOptions& aOptions,
69 nsString& aResult,
70 ErrorResult& aError);
71 static void RevokeObjectURL(const GlobalObject& aGlobal,
72 const nsAString& aURL);
74 void GetHref(nsString& aHref, ErrorResult& aRv) const;
76 void SetHref(const nsAString& aHref, ErrorResult& aRv);
78 void GetOrigin(nsString& aOrigin, ErrorResult& aRv) const;
80 void GetProtocol(nsString& aProtocol, ErrorResult& aRv) const;
82 void SetProtocol(const nsAString& aProtocol, ErrorResult& aRv);
84 void GetUsername(nsString& aUsername, ErrorResult& aRv) const;
86 void SetUsername(const nsAString& aUsername, ErrorResult& aRv);
88 void GetPassword(nsString& aPassword, ErrorResult& aRv) const;
90 void SetPassword(const nsAString& aPassword, ErrorResult& aRv);
92 void GetHost(nsString& aHost, ErrorResult& aRv) const;
94 void SetHost(const nsAString& aHost, ErrorResult& aRv);
96 void GetHostname(nsString& aHostname, ErrorResult& aRv) const;
98 void SetHostname(const nsAString& aHostname, ErrorResult& aRv);
100 void GetPort(nsString& aPort, ErrorResult& aRv) const;
102 void SetPort(const nsAString& aPort, ErrorResult& aRv);
104 void GetPathname(nsString& aPathname, ErrorResult& aRv) const;
106 void SetPathname(const nsAString& aPathname, ErrorResult& aRv);
108 void GetSearch(nsString& aRetval, ErrorResult& aRv) const;
110 void SetSearch(const nsAString& aArg, ErrorResult& aRv);
112 URLSearchParams* SearchParams();
114 void SetSearchParams(URLSearchParams& aSearchParams);
116 void GetHash(nsString& aRetval, ErrorResult& aRv) const;
118 void SetHash(const nsAString& aArg, ErrorResult& aRv);
120 void Stringify(nsString& aRetval, ErrorResult& aRv) const
122 GetHref(aRetval, aRv);
125 // URLSearchParamsObserver
126 void URLSearchParamsUpdated(URLSearchParams* aSearchParams) MOZ_OVERRIDE;
128 private:
129 nsIURI* GetURI() const
131 return mURI;
134 void CreateSearchParamsIfNeeded();
136 void SetSearchInternal(const nsAString& aSearch);
138 void UpdateURLSearchParams();
140 static void CreateObjectURLInternal(const GlobalObject& aGlobal,
141 nsISupports* aObject,
142 const nsACString& aScheme,
143 const objectURLOptions& aOptions,
144 nsString& aResult,
145 ErrorResult& aError);
147 nsCOMPtr<nsIURI> mURI;
148 nsRefPtr<URLSearchParams> mSearchParams;
150 friend class mozilla::dom::workers::URLProxy;
153 bool IsChromeURI(nsIURI* aURI);
158 #endif /* URL_h___ */