Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qv4urlobject_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:significant
4#ifndef QV4URLOBJECT_P_H
5#define QV4URLOBJECT_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include "qv4object_p.h"
20
21#include <QtCore/QString>
22#include <QtCore/QUrl>
23
25
26namespace QV4 {
27namespace Heap {
28// clang-format off
29#define UrlObjectMembers(class, Member)
30 Member(class, Pointer, String *, hash)
31 Member(class, Pointer, String *, host)
32 Member(class, Pointer, String *, hostname)
33 Member(class, Pointer, String *, href)
34 Member(class, Pointer, String *, origin)
35 Member(class, Pointer, String *, password)
36 Member(class, Pointer, String *, pathname)
37 Member(class, Pointer, String *, port)
38 Member(class, Pointer, String *, protocol)
39 Member(class, Pointer, String *, search)
40 Member(class, Pointer, String *, username)
41// clang-format on
42
43DECLARE_HEAP_OBJECT(UrlObject, Object)
44{
45 DECLARE_MARKOBJECTS(UrlObject)
46 void init() { Object::init(); }
47};
48
50{
51 void init(ExecutionEngine *engine);
52};
53
54// clang-format off
55#define UrlSearchParamsObjectMembers(class, Member)
56 Member(class, Pointer, ArrayObject *, params)
57 Member(class, Pointer, ArrayObject *, keys)
58 Member(class, Pointer, ArrayObject *, values)
59 Member(class, Pointer, UrlObject *, url)
60// clang-format on
61
62DECLARE_HEAP_OBJECT(UrlSearchParamsObject, Object)
63{
64 DECLARE_MARKOBJECTS(UrlSearchParamsObject)
65 void init() { Object::init(); }
66};
67
69{
70 void init(ExecutionEngine *engine);
71};
72}
73
75{
76 V4_OBJECT2(UrlObject, Object)
78 V4_PROTOTYPE(urlPrototype)
79
80 QString hash() const { return QLatin1String("#") + toQString(d()->hash); }
81 bool setHash(QString hash);
82
83 QString host() const { return toQString(d()->host); }
84 bool setHost(QString host);
85
86 QString hostname() const { return toQString(d()->hostname); }
87 bool setHostname(QString hostname);
88
89 QString href() const { return toQString(d()->href); }
90 bool setHref(QString href);
91
92 QString origin() const { return toQString(d()->origin); }
93
94 QString password() const { return toQString(d()->password); }
95 bool setPassword(QString password);
96
97 QString pathname() const { return toQString(d()->pathname); }
98 bool setPathname(QString pathname);
99
100 QString port() const { return toQString(d()->port); }
101 bool setPort(QString port);
102
103 QString protocol() const { return toQString(d()->protocol); }
104 bool setProtocol(QString protocol);
105
106 Q_QML_AUTOTEST_EXPORT QString search() const;
107 bool setSearch(QString search);
108
109 QString username() const { return toQString(d()->username); }
110 bool setUsername(QString username);
111
112 QUrl toQUrl() const;
113 void setUrl(const QUrl &url);
114
115private:
116 static QString toQString(const Heap::String *string)
117 {
118 return string ? string->toQString() : QString();
119 }
120
121 void updateOrigin();
122 void updateHost();
123};
124
125template<>
126inline const UrlObject *Value::as() const
127{
129 ? static_cast<const UrlObject *>(this)
130 : nullptr;
131}
132
134{
135 V4_OBJECT2(UrlCtor, FunctionObject)
136
138 int argc, const Value *);
139};
140
142{
143 V4_PROTOTYPE(objectPrototype)
144
146
147 static ReturnedValue method_getHash(const FunctionObject *, const Value *thisObject,
148 const Value *argv, int argc);
149 static ReturnedValue method_setHash(const FunctionObject *, const Value *thisObject,
150 const Value *argv, int argc);
151
152 static ReturnedValue method_getHost(const FunctionObject *, const Value *thisObject,
153 const Value *argv, int argc);
154 static ReturnedValue method_setHost(const FunctionObject *, const Value *thisObject,
155 const Value *argv, int argc);
156
157 static ReturnedValue method_getHostname(const FunctionObject *, const Value *thisObject,
158 const Value *argv, int argc);
159 static ReturnedValue method_setHostname(const FunctionObject *, const Value *thisObject,
160 const Value *argv, int argc);
161
162 static ReturnedValue method_getHref(const FunctionObject *, const Value *thisObject,
163 const Value *argv, int argc);
164 static ReturnedValue method_setHref(const FunctionObject *, const Value *thisObject,
165 const Value *argv, int argc);
166
167 static ReturnedValue method_getOrigin(const FunctionObject *, const Value *thisObject,
168 const Value *argv, int argc);
169
170 static ReturnedValue method_getPassword(const FunctionObject *, const Value *thisObject,
171 const Value *argv, int argc);
172 static ReturnedValue method_setPassword(const FunctionObject *, const Value *thisObject,
173 const Value *argv, int argc);
174
175 static ReturnedValue method_getPathname(const FunctionObject *, const Value *thisObject,
176 const Value *argv, int argc);
177 static ReturnedValue method_setPathname(const FunctionObject *, const Value *thisObject,
178 const Value *argv, int argc);
179
180 static ReturnedValue method_getPort(const FunctionObject *, const Value *thisObject,
181 const Value *argv, int argc);
182 static ReturnedValue method_setPort(const FunctionObject *, const Value *thisObject,
183 const Value *argv, int argc);
184
185 static ReturnedValue method_getProtocol(const FunctionObject *, const Value *thisObject,
186 const Value *argv, int argc);
187 static ReturnedValue method_setProtocol(const FunctionObject *, const Value *thisObject,
188 const Value *argv, int argc);
189
190 static ReturnedValue method_getSearch(const FunctionObject *, const Value *thisObject,
191 const Value *argv, int argc);
192 static ReturnedValue method_setSearch(const FunctionObject *, const Value *thisObject,
193 const Value *argv, int argc);
194
195 static ReturnedValue method_getUsername(const FunctionObject *, const Value *thisObject,
196 const Value *argv, int argc);
197 static ReturnedValue method_setUsername(const FunctionObject *, const Value *thisObject,
198 const Value *argv, int argc);
199
200 static ReturnedValue method_getSearchParams(const FunctionObject *, const Value *thisObject,
201 const Value *argv, int argc);
202};
203
205{
206 V4_OBJECT2(UrlSearchParamsObject, Object)
208 V4_PROTOTYPE(urlSearchParamsPrototype)
209
210 void initializeParams();
211 void initializeParams(QString params);
213 void initializeParams(ScopedObject& params);
214
215 QList<QStringList> params() const;
216 void setParams(QList<QStringList> params);
217 Heap::UrlObject *urlObject() const;
218 void setUrlObject(const UrlObject *url);
219
220 QString searchString() const;
221
222 QString nameAt(int index) const;
223 Heap::String * nameAtRaw(int index) const;
224 QString valueAt(int index) const;
225 Heap::String * valueAtRaw(int index) const;
226
227 void append(Heap::String *name, Heap::String *value);
228
229 int indexOf(QString name, int last = -1) const;
230 int length() const;
231
232 using Object::getOwnProperty;
233protected:
234 static OwnPropertyKeyIterator *virtualOwnPropertyKeys(const Object *m, Value *target);
235 static PropertyAttributes virtualGetOwnProperty(const Managed *m, PropertyKey id, Property *p);
236private:
237 QString stringAt(int index, int pairIndex) const;
238 Heap::String * stringAtRaw(int index, int pairIndex) const;
239};
240
241template<>
242inline const UrlSearchParamsObject *Value::as() const
243{
245 ? static_cast<const UrlSearchParamsObject *>(this)
246 : nullptr;
247}
248
250{
251 V4_OBJECT2(UrlSearchParamsCtor, FunctionObject)
252
254 int argc, const Value *);
255};
256
258{
259 V4_PROTOTYPE(objectPrototype)
260
262
263 static ReturnedValue method_toString(const FunctionObject *, const Value *thisObject,
264 const Value *argv, int argc);
265 static ReturnedValue method_sort(const FunctionObject *, const Value *thisObject,
266 const Value *argv, int argc);
267 static ReturnedValue method_append(const FunctionObject *, const Value *thisObject,
268 const Value *argv, int argc);
269 static ReturnedValue method_delete(const FunctionObject *, const Value *thisObject,
270 const Value *argv, int argc);
271 static ReturnedValue method_has(const FunctionObject *, const Value *thisObject,
272 const Value *argv, int argc);
273 static ReturnedValue method_set(const FunctionObject *, const Value *thisObject,
274 const Value *argv, int argc);
275 static ReturnedValue method_get(const FunctionObject *, const Value *thisObject,
276 const Value *argv, int argc);
277 static ReturnedValue method_getAll(const FunctionObject *, const Value *thisObject,
278 const Value *argv, int argc);
279 static ReturnedValue method_forEach(const FunctionObject *, const Value *thisObject,
280 const Value *argv, int argc);
281 static ReturnedValue method_entries(const FunctionObject *, const Value *thisObject,
282 const Value *argv, int argc);
283 static ReturnedValue method_keys(const FunctionObject *, const Value *thisObject,
284 const Value *argv, int argc);
285 static ReturnedValue method_values(const FunctionObject *, const Value *thisObject,
286 const Value *argv, int argc);
287
288};
289
290}
291
292QT_END_NAMESPACE
293
294#endif // QV4URLOBJECT_P_H
DECLARE_HEAP_OBJECT(UrlSearchParamsObject, Object)
DECLARE_HEAP_OBJECT(UrlObject, Object)
Definition qjsvalue.h:23
Scoped< Object > ScopedObject
Scoped< ArrayObject > ScopedArrayObject
#define Q_MANAGED_TYPE(type)
DEFINE_OBJECT_VTABLE(UrlCtor)
DEFINE_OBJECT_VTABLE(UrlSearchParamsObject)
DEFINE_OBJECT_VTABLE(UrlSearchParamsCtor)
static bool checkSearchParamsType(ExecutionEngine *v4, const Scoped< UrlSearchParamsObject > &o)
static bool checkUrlObjectType(ExecutionEngine *v4, const Scoped< UrlObject > &r)
DEFINE_OBJECT_VTABLE(UrlObject)
void init(ExecutionEngine *engine)
void init(ExecutionEngine *engine)
QString hostname() const
QString username() const
bool setSearch(QString search)
QString password() const
bool setPathname(QString pathname)
bool setHostname(QString hostname)
QString origin() const
void setUrl(const QUrl &url)
QString protocol() const
QString pathname() const
QUrl toQUrl() const
QString port() const
bool setHref(QString href)
bool setProtocol(QString protocol)
bool setUsername(QString username)
QString href() const
bool setPort(QString port)
bool setPassword(QString password)
bool setHost(QString host)
QString host() const
static ReturnedValue method_getPathname(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getPort(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getSearchParams(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setProtocol(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getUsername(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getProtocol(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setHostname(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setHref(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setSearch(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getHash(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setHost(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setPort(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getPassword(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getOrigin(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setUsername(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getSearch(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setPassword(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getHost(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getHostname(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getHref(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setPathname(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_setHash(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
void setParams(QList< QStringList > params)
QString valueAt(int index) const
void initializeParams(ScopedArrayObject &params)
QList< QStringList > params() const
Heap::UrlObject * urlObject() const
int indexOf(QString name, int last=-1) const
void initializeParams(QString params)
Heap::String * nameAtRaw(int index) const
void append(Heap::String *name, Heap::String *value)
Heap::String * valueAtRaw(int index) const
void setUrlObject(const UrlObject *url)
static OwnPropertyKeyIterator * virtualOwnPropertyKeys(const Object *m, Value *target)
QString nameAt(int index) const
void initializeParams(ScopedObject &params)
static PropertyAttributes virtualGetOwnProperty(const Managed *m, PropertyKey id, Property *p)
static ReturnedValue method_keys(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_forEach(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_get(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_sort(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_delete(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_getAll(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_toString(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_append(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_has(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_set(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_entries(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)
static ReturnedValue method_values(const FunctionObject *, const Value *thisObject, const Value *argv, int argc)