Line data Source code
1 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 : /* This Source Code Form is subject to the terms of the Mozilla Public
4 : * License, v. 2.0. If a copy of the MPL was not distributed with this
5 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #ifndef mozilla_dom_location_h__
8 : #define mozilla_dom_location_h__
9 :
10 : #include "Workers.h"
11 : #include "WorkerPrivate.h"
12 : #include "nsWrapperCache.h"
13 :
14 : namespace mozilla {
15 : namespace dom {
16 :
17 : class WorkerLocation final : public nsWrapperCache
18 : {
19 : nsString mHref;
20 : nsString mProtocol;
21 : nsString mHost;
22 : nsString mHostname;
23 : nsString mPort;
24 : nsString mPathname;
25 : nsString mSearch;
26 : nsString mHash;
27 : nsString mOrigin;
28 :
29 0 : WorkerLocation(const nsAString& aHref,
30 : const nsAString& aProtocol,
31 : const nsAString& aHost,
32 : const nsAString& aHostname,
33 : const nsAString& aPort,
34 : const nsAString& aPathname,
35 : const nsAString& aSearch,
36 : const nsAString& aHash,
37 : const nsAString& aOrigin)
38 0 : : mHref(aHref)
39 : , mProtocol(aProtocol)
40 : , mHost(aHost)
41 : , mHostname(aHostname)
42 : , mPort(aPort)
43 : , mPathname(aPathname)
44 : , mSearch(aSearch)
45 : , mHash(aHash)
46 0 : , mOrigin(aOrigin)
47 : {
48 0 : MOZ_COUNT_CTOR(WorkerLocation);
49 0 : }
50 :
51 0 : ~WorkerLocation()
52 0 : {
53 0 : MOZ_COUNT_DTOR(WorkerLocation);
54 0 : }
55 :
56 : public:
57 :
58 0 : NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(WorkerLocation)
59 1 : NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(WorkerLocation)
60 :
61 : static already_AddRefed<WorkerLocation>
62 : Create(workers::WorkerPrivate::LocationInfo& aInfo);
63 :
64 : virtual JSObject*
65 : WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
66 :
67 0 : nsISupports* GetParentObject() const {
68 0 : return nullptr;
69 : }
70 :
71 0 : void Stringify(nsString& aHref) const
72 : {
73 0 : aHref = mHref;
74 0 : }
75 0 : void GetHref(nsString& aHref) const
76 : {
77 0 : aHref = mHref;
78 0 : }
79 0 : void GetProtocol(nsString& aProtocol) const
80 : {
81 0 : aProtocol = mProtocol;
82 0 : }
83 0 : void GetHost(nsString& aHost) const
84 : {
85 0 : aHost = mHost;
86 0 : }
87 0 : void GetHostname(nsString& aHostname) const
88 : {
89 0 : aHostname = mHostname;
90 0 : }
91 0 : void GetPort(nsString& aPort) const
92 : {
93 0 : aPort = mPort;
94 0 : }
95 0 : void GetPathname(nsString& aPathname) const
96 : {
97 0 : aPathname = mPathname;
98 0 : }
99 0 : void GetSearch(nsString& aSearch) const
100 : {
101 0 : aSearch = mSearch;
102 0 : }
103 0 : void GetHash(nsString& aHash) const
104 : {
105 0 : aHash = mHash;
106 0 : }
107 0 : void GetOrigin(nsString& aOrigin) const
108 : {
109 0 : aOrigin = mOrigin;
110 0 : }
111 : };
112 :
113 : } // namespace dom
114 : } // namespace mozilla
115 :
116 : #endif // mozilla_dom_location_h__
|