aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4urlobject_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/qml/jsruntime/qv4urlobject_p.h')
-rw-r--r--src/qml/jsruntime/qv4urlobject_p.h293
1 files changed, 293 insertions, 0 deletions
diff --git a/src/qml/jsruntime/qv4urlobject_p.h b/src/qml/jsruntime/qv4urlobject_p.h
new file mode 100644
index 0000000000..b3b76e1158
--- /dev/null
+++ b/src/qml/jsruntime/qv4urlobject_p.h
@@ -0,0 +1,293 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+#ifndef QV4URLOBJECT_P_H
+#define QV4URLOBJECT_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "qv4object_p.h"
+#include "qv4functionobject_p.h"
+
+#include <QtCore/QString>
+#include <QtCore/QUrl>
+
+QT_BEGIN_NAMESPACE
+
+namespace QV4 {
+namespace Heap {
+// clang-format off
+#define UrlObjectMembers(class, Member) \
+ Member(class, Pointer, String *, hash) \
+ Member(class, Pointer, String *, host) \
+ Member(class, Pointer, String *, hostname) \
+ Member(class, Pointer, String *, href) \
+ Member(class, Pointer, String *, origin) \
+ Member(class, Pointer, String *, password) \
+ Member(class, Pointer, String *, pathname) \
+ Member(class, Pointer, String *, port) \
+ Member(class, Pointer, String *, protocol) \
+ Member(class, Pointer, String *, search) \
+ Member(class, Pointer, String *, username)
+// clang-format on
+
+DECLARE_HEAP_OBJECT(UrlObject, Object)
+{
+ DECLARE_MARKOBJECTS(UrlObject)
+ void init() { Object::init(); }
+};
+
+struct UrlCtor : FunctionObject
+{
+ void init(ExecutionEngine *engine);
+};
+
+// clang-format off
+#define UrlSearchParamsObjectMembers(class, Member) \
+ Member(class, Pointer, ArrayObject *, params) \
+ Member(class, Pointer, ArrayObject *, keys) \
+ Member(class, Pointer, ArrayObject *, values) \
+ Member(class, Pointer, UrlObject *, url)
+// clang-format on
+
+DECLARE_HEAP_OBJECT(UrlSearchParamsObject, Object)
+{
+ DECLARE_MARKOBJECTS(UrlSearchParamsObject)
+ void init() { Object::init(); }
+};
+
+struct UrlSearchParamsCtor : FunctionObject
+{
+ void init(ExecutionEngine *engine);
+};
+}
+
+struct UrlObject : Object
+{
+ V4_OBJECT2(UrlObject, Object)
+ Q_MANAGED_TYPE(UrlObject)
+ V4_PROTOTYPE(urlPrototype)
+
+ QString hash() const { return QLatin1String("#") + toQString(d()->hash); }
+ bool setHash(QString hash);
+
+ QString host() const { return toQString(d()->host); }
+ bool setHost(QString host);
+
+ QString hostname() const { return toQString(d()->hostname); }
+ bool setHostname(QString hostname);
+
+ QString href() const { return toQString(d()->href); }
+ bool setHref(QString href);
+
+ QString origin() const { return toQString(d()->origin); }
+
+ QString password() const { return toQString(d()->password); }
+ bool setPassword(QString password);
+
+ QString pathname() const { return toQString(d()->pathname); }
+ bool setPathname(QString pathname);
+
+ QString port() const { return toQString(d()->port); }
+ bool setPort(QString port);
+
+ QString protocol() const { return toQString(d()->protocol); }
+ bool setProtocol(QString protocol);
+
+ Q_QML_AUTOTEST_EXPORT QString search() const;
+ bool setSearch(QString search);
+
+ QString username() const { return toQString(d()->username); }
+ bool setUsername(QString username);
+
+ QUrl toQUrl() const;
+ void setUrl(const QUrl &url);
+
+private:
+ static QString toQString(const Heap::String *string)
+ {
+ return string ? string->toQString() : QString();
+ }
+
+ void updateOrigin();
+ void updateHost();
+};
+
+template<>
+inline const UrlObject *Value::as() const
+{
+ return isManaged() && m()->internalClass->vtable->type == Managed::Type_UrlObject
+ ? static_cast<const UrlObject *>(this)
+ : nullptr;
+}
+
+struct UrlCtor : FunctionObject
+{
+ V4_OBJECT2(UrlCtor, FunctionObject)
+
+ static ReturnedValue virtualCallAsConstructor(const FunctionObject *, const Value *argv,
+ int argc, const Value *);
+};
+
+struct UrlPrototype : Object
+{
+ V4_PROTOTYPE(objectPrototype)
+
+ void init(ExecutionEngine *engine, Object *ctor);
+
+ static ReturnedValue method_getHash(const FunctionObject *, const Value *thisObject,
+ const Value *argv, int argc);
+ static ReturnedValue method_setHash(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_setHost(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_setHostname(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_setHref(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_getPassword(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_getPathname(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_getPort(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_getProtocol(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_getSearch(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_getUsername(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_getSearchParams(const FunctionObject *, const Value *thisObject,
+ const Value *argv, int argc);
+};
+
+struct UrlSearchParamsObject : Object
+{
+ V4_OBJECT2(UrlSearchParamsObject, Object)
+ Q_MANAGED_TYPE(UrlSearchParamsObject)
+ V4_PROTOTYPE(urlSearchParamsPrototype)
+
+ void initializeParams();
+ void initializeParams(QString params);
+ void initializeParams(ScopedArrayObject& params);
+ void initializeParams(ScopedObject& params);
+
+ QList<QStringList> params() const;
+ void setParams(QList<QStringList> params);
+ Heap::UrlObject *urlObject() const;
+ void setUrlObject(const UrlObject *url);
+
+ QString searchString() const;
+
+ QString nameAt(int index) const;
+ Heap::String * nameAtRaw(int index) const;
+ QString valueAt(int index) const;
+ Heap::String * valueAtRaw(int index) const;
+
+ void append(Heap::String *name, Heap::String *value);
+
+ int indexOf(QString name, int last = -1) const;
+ int length() const;
+
+ using Object::getOwnProperty;
+protected:
+ static OwnPropertyKeyIterator *virtualOwnPropertyKeys(const Object *m, Value *target);
+ static PropertyAttributes virtualGetOwnProperty(const Managed *m, PropertyKey id, Property *p);
+private:
+ QString stringAt(int index, int pairIndex) const;
+ Heap::String * stringAtRaw(int index, int pairIndex) const;
+};
+
+template<>
+inline const UrlSearchParamsObject *Value::as() const
+{
+ return isManaged() && m()->internalClass->vtable->type == Managed::Type_UrlSearchParamsObject
+ ? static_cast<const UrlSearchParamsObject *>(this)
+ : nullptr;
+}
+
+struct UrlSearchParamsCtor : FunctionObject
+{
+ V4_OBJECT2(UrlSearchParamsCtor, FunctionObject)
+
+ static ReturnedValue virtualCallAsConstructor(const FunctionObject *, const Value *argv,
+ int argc, const Value *);
+};
+
+struct UrlSearchParamsPrototype : Object
+{
+ V4_PROTOTYPE(objectPrototype)
+
+ void init(ExecutionEngine *engine, Object *ctor);
+
+ static ReturnedValue method_toString(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_append(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_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_get(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_forEach(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_keys(const FunctionObject *, const Value *thisObject,
+ const Value *argv, int argc);
+ static ReturnedValue method_values(const FunctionObject *, const Value *thisObject,
+ const Value *argv, int argc);
+
+};
+
+}
+
+QT_END_NAMESPACE
+
+#endif // QV4URLOBJECT_P_H