Merge lp:~rpadovani/oxide/type-info into lp:~oxide-developers/oxide/oxide.trunk

Proposed by Riccardo Padovani on 2015-05-25
Status: Merged
Approved by: Olivier Tilloy on 2015-10-20
Approved revision: 1108
Merged at revision: 1226
Proposed branch: lp:~rpadovani/oxide/type-info
Merge into: lp:~oxide-developers/oxide/oxide.trunk
Diff against target: 982 lines (+931/-3)
5 files modified
CMakeLists.txt (+3/-2)
qt/CMakeLists.txt (+1/-1)
qt/qmlplugin/CMakeLists.txt (+17/-0)
qt/qmlplugin/oxide.qmltypes (+909/-0)
qt/qmlplugin/qmldir (+1/-0)
To merge this branch: bzr merge lp:~rpadovani/oxide/type-info
Reviewer Review Type Date Requested Status
Olivier Tilloy Approve on 2015-10-20
Chris Coulson 2015-05-25 Pending
Review via email: mp+260065@code.launchpad.net

Commit Message

Add oxide.qmltypes in qmlplugin directory

Description of the Change

Add oxide.qmltypes in qmlplugin directory as explained in http://doc.qt.io/qt-5/qtqml-modules-qmldir.html#writing-a-qmltypes-file

To post a comment you must log in.
lp:~rpadovani/oxide/type-info updated on 2015-05-25
1090. By Riccardo Padovani on 2015-05-25

Add oxide.qmltypes file

Olivier Tilloy (osomon) wrote :

Could we maybe have a build target that re-generates this file? That would help ensuring that it doesn’t get outdated too easily.

lp:~rpadovani/oxide/type-info updated on 2015-05-27
1091. By Riccardo Padovani on 2015-05-27

Add build target to CMake

Olivier Tilloy (osomon) wrote :

On the paper that looks ok, but when I run cmake with -DGENERATE_QMLTYPES=1, the oxide.qmltypes file gets emptied (the file is still there, but it is empty).

I’m not sure whether this has something to do with it, but I’m seeing this message when running cmake:

    QQmlComponent: Component is not ready

Also, instead of "${CMAKE_SOURCE_DIR}/qt/qmlplugin", please use "${CMAKE_CURRENT_SOURCE_DIR}".

review: Needs Fixing
lp:~rpadovani/oxide/type-info updated on 2015-05-28
1092. By Riccardo Padovani on 2015-05-28

Fix CMake var

1093. By Riccardo Padovani on 2015-05-28

Merge from upstream

Riccardo Padovani (rpadovani) wrote :

I'm a bit confused. I leave a comment here just to remember tomorrow, when I'll
investigate a bit more.

So, it works only with installed version of Oxide.

I didn't find any documentation, the only one is the output you've when you run
qmlplugindump without arguments.

There are two way to use it:
Usage: qmlplugindump [-v] [-noinstantiate] [-defaultplatform] [-[non]relocatable] module.uri version [module/import/path]
       qmlplugindump [-v] [-noinstantiate] -path path/to/qmldir/directory [version]

The first one doesn't work: I tried with all possible combination of
[module/import/path] but it always give you (if you have -v flag)

file:///[module/import/path]/typelist.qml:2:1: module "com.canonical.Oxide" version 1.8 is not installed

I've no idea of what typelist.qml is supposed to be, but anyway it seems it
doesn't try to load the path but first checks the module.

So I tried the second command, and as path flag I set this one:
/home/rpadovani/Ubuntu/touch/oxide/trunk/objdir/out/imports/com/canonical/Oxide

Now the error is different:
file:///home/rpadovani/Ubuntu/touch/oxide/trunk/objdir/out/imports/com/canonical/Oxide/typelist.qml:2:1: plugin cannot be loaded for module "": Cannot load library /home/rpadovani/Ubuntu/touch/oxide/trunk/objdir/out/imports/com/canonical/Oxide/libqmloxideplugin.so: (/home/rpadovani/Ubuntu/touch/oxide/trunk/objdir/out/imports/com/canonical/Oxide/libqmloxideplugin.so: undefined symbol: _ZN20OxideQFindController16staticMetaObjectE)

Now I have to investigare what's this fail

Olivier Tilloy (osomon) wrote :

I’ve got it to work (manually) by setting LD_LIBRARY_PATH and QML2_IMPORT_PATH to allow qmlplugindump to locate libOxideQtCore.so.0 and libqmloxideplugin.so.
From my local build dir:

    LD_LIBRARY_PATH=$PWD/out/chromium/Release/lib:$PWD/out/lib QML2_IMPORT_PATH=$PWD/out/imports qmlplugindump -v -noinstantiate com.canonical.Oxide 1.8 out/imports/com/canonical/Oxide > ../qt/qmlplugin/oxide.qmltypes

However this shouldn’t be run at configure time (when running cmake), but rather at build time, after building the two .so.

I guess modifying the checked-in version in the source tree is ok, it will actually be a useful tool to help developers visualize API changes.

lp:~rpadovani/oxide/type-info updated on 2015-06-03
1094. By Riccardo Padovani on 2015-06-03

Work on qmlplugindump

1095. By Riccardo Padovani on 2015-06-03

Merge from upstream

Riccardo Padovani (rpadovani) wrote :

Mhh, I wasn't able to have it working with Oxide 1.9 (while it works with 1.8).

Anyway, does the approach make any sense? (well, I just copied your code and replaved directories with vars).

Is right to use execute_process()? I tried also add_custom_command(), but I wasn't able to have it working...

Olivier Tilloy (osomon) wrote :

According to http://www.cmake.org/cmake/help/v3.3/command/execute_process.html:

 « The execute_process() command is a newer more powerful version of exec_program(), but the old command has been kept for compatibility. Both commands run while CMake is processing the project prior to build system generation. Use add_custom_target() and add_custom_command() to create custom commands that run at build time. »

So what you want is to use is add_custom_command().

Note that it is fine to have oxide.qmltypes initially generated and checked in the branch (your last revision removed it).

It doesn’t work for 1.9 because there are no new APIs in 1.9 yet (if you check the contents of registerTypes() in qt/qmlplugin/oxide_qml_plugin.cc, you’ll see that the highest version number used in registering types is 1.8). It’s probably ok to have this target fail if there are no new APIs yet, however in that case the oxide.qmltypes file shouldn’t be overwritten.

lp:~rpadovani/oxide/type-info updated on 2015-06-07
1096. By Riccardo Padovani on 2015-06-06

Add 1.8 qmltypes

1097. By Riccardo Padovani on 2015-06-07

First working build

Riccardo Padovani (rpadovani) wrote :

Ok, I did some progresses: now the file is generated, but

- the build fails if there isn't anything new in the release (like with 1.9 right now). If you use 1.8 it works like a charm.

- I'm sure it could be written in a better way, but I found nothing

- In the header it uses an absolute path: // This file was auto-generated by:
// 'qmlplugindump -v -noinstantiate com.canonical.Oxide 1.8 /home/rpadovani/Ubuntu/touch/oxide/trunk/objdir/out/imports/com/canonical/Oxide'

This means every commit will have a diff on that line.

Any suggestion?

Olivier Tilloy (osomon) wrote :

I’m testing this on the latest trunk, and it doesn’t look like the file is correctly re-generated: there is now a new API version of WebContext (1.9), however when running cmake and make again, oxide.qmltypes is not updated.

Regarding the absolute path, if we could arrange for qmlplugindump to be called with a QMLPLUGIN_OUTPUT_DIR that has its build-specific prefix removed, that should do the trick. You may need the WORKING_DIRECTORY option to add_custom_command.

lp:~rpadovani/oxide/type-info updated on 2015-06-22
1098. By Riccardo Padovani on 2015-06-22

Merge from upstream

1099. By Riccardo Padovani on 2015-06-22

Fix qmltype file generation and add file for 1.9

Riccardo Padovani (rpadovani) wrote :

I finally managed to have it working, sorry for the long wait!

Olivier Tilloy (osomon) wrote :

This works well indeed.

However, thinking about it again, I’m not sure that we want this file checked in the source tree. Wouldn’t it be enough to have it generated at build time under ${QMLPLUGIN_OUTPUT_DIR}/${OXIDE_QMLPLUGIN_MODULE_NAME} ?

It would also need to be installed to ${QT_INSTALL_QML}/${OXIDE_QMLPLUGIN_MODULE_NAME}.

lp:~rpadovani/oxide/type-info updated on 2015-06-28
1100. By Riccardo Padovani on 2015-06-28

Install qmltype file

Riccardo Padovani (rpadovani) wrote :

Well, I think could be useful having it because, as you said, 'modifying the checked-in version in the source tree is ok, it will actually be a useful tool to help developers visualize API changes'.

I added the INSTALL command for the file

Olivier Tilloy (osomon) wrote :

According to http://www.cmake.org/cmake/help/v3.0/command/set.html, you could use the following syntax to set LD_LIBRARY_PATH and QML2_IMPORT_PATH to run qmlplugindump:

    set(ENV{LD_LIBRARY_PATH} ${CHROMIUM_OUTPUT_DIR}/Release/lib:${LIB_OUTPUT_DIR})
    set(ENV{QML2_IMPORT_PATH} ${QMLPLUGIN_OUTPUT_DIR})

I haven’t tested it myself, but it’s worth a shot.

Olivier Tilloy (osomon) wrote :

> Well, I think could be useful having it because, as you said, 'modifying the
> checked-in version in the source tree is ok, it will actually be a useful tool
> to help developers visualize API changes'.

True. I’m turning schizophrenic in this review…

lp:~rpadovani/oxide/type-info updated on 2015-06-29
1101. By Riccardo Padovani on 2015-06-29

Use set command instead of export

Riccardo Padovani (rpadovani) wrote :

> According to http://www.cmake.org/cmake/help/v3.0/command/set.html, you could
> use the following syntax to set LD_LIBRARY_PATH and QML2_IMPORT_PATH to run
> qmlplugindump:
>
> set(ENV{LD_LIBRARY_PATH}
> ${CHROMIUM_OUTPUT_DIR}/Release/lib:${LIB_OUTPUT_DIR})
> set(ENV{QML2_IMPORT_PATH} ${QMLPLUGIN_OUTPUT_DIR})
>
> I haven’t tested it myself, but it’s worth a shot.

Indeed it works, but it needs the "

Thanks for pointing it to me!

Olivier Tilloy (osomon) wrote :

I’m merging into the latest trunk, running cmake and then make, and I’m getting the following error:

make[2]: Entering directory '/home/osomon/dev/phablet/oxide/trunk/objdir-x64-release'
cd /home/osomon/dev/phablet/oxide/trunk/objdir-x64-release/out/imports && qmlplugindump -v -noinstantiate com.canonical.Oxide 1.9 com/canonical/Oxide > /home/osomon/dev/phablet/oxide/trunk/qt/qmlplugin/oxide.qmltypes
QQmlComponent: Component is not ready
qt/qmlplugin/CMakeFiles/generate_oxide_qmltypes.dir/build.make:49: recipe for target 'qt/qmlplugin/CMakeFiles/generate_oxide_qmltypes' failed
make[2]: *** [qt/qmlplugin/CMakeFiles/generate_oxide_qmltypes] Error 3
make[2]: Leaving directory '/home/osomon/dev/phablet/oxide/trunk/objdir-x64-release'
CMakeFiles/Makefile2:2098: recipe for target 'qt/qmlplugin/CMakeFiles/generate_oxide_qmltypes.dir/all' failed
make[1]: *** [qt/qmlplugin/CMakeFiles/generate_oxide_qmltypes.dir/all] Error 2

review: Needs Fixing
lp:~rpadovani/oxide/type-info updated on 2015-06-30
1102. By Riccardo Padovani on 2015-06-30

Return to export command due http://www.cmake.org/Bug/view.php?id=5145

1103. By Riccardo Padovani on 2015-06-30

Use env instead of export

Olivier Tilloy (osomon) wrote :

Please add a dependency (https://cmake.org/cmake/help/v3.3/command/add_dependencies.html#command:add_dependencies) of generate_oxide_qmltypes on ${OXIDE_QMLPLUGIN}, to ensure the targets are built in the right order.

Also, I don’t think that installing oxide.qmltypes should be conditioned by whether we’re cross-compiling or not, given that the file already exists in trunk anyway. Can you remind me (and explain in a comment maybe) why we’re not generating the file when cross-compiling by the way?

review: Needs Fixing
Riccardo Padovani (rpadovani) wrote :

> Please add a dependency (https://cmake.org/cmake/help/v3.3/command/add_depende
> ncies.html#command:add_dependencies) of generate_oxide_qmltypes on
> ${OXIDE_QMLPLUGIN}, to ensure the targets are built in the right order.

Done.

> Also, I don’t think that installing oxide.qmltypes should be conditioned by
> whether we’re cross-compiling or not, given that the file already exists in
> trunk anyway. Can you remind me (and explain in a comment maybe) why we’re not
> generating the file when cross-compiling by the way?

To be honest, I don't remember at all, and I don't find any valid reason right now, so I removed it

lp:~rpadovani/oxide/type-info updated on 2015-10-18
1104. By Riccardo Padovani on 2015-10-18

Add dependency of generate_oxide_qmltypes on ${OXIDE_QMLPLUGIN}

Olivier Tilloy (osomon) wrote :

45 +# Only generate typeinfo if not cross compiling

This comment should be removed if the conditional on cross-compilation is removed. BUT, I just ran a build of your branch in a chroot to cross-build it, and got this error: "qmlplugindump: could not find a Qt installation of ''". We might be able to fix it by installing additional dependencies in the chroot, but there’s little use to it, as cross-building is only used for local testing (building for armhf on an x86 laptop). So I’d suggest adding back the conditional that you just removed, and that should be good to merge.

Can you please update the local copy of oxide.qmltypes to the latest changes in trunk (trunk is now at 1.11 and there have been some API changes/additions)?

review: Needs Fixing
lp:~rpadovani/oxide/type-info updated on 2015-10-19
1105. By Riccardo Padovani on 2015-10-19

Readd check for crosscompiling

1106. By Riccardo Padovani on 2015-10-19

Merge from trunk

1107. By Riccardo Padovani on 2015-10-19

Update oxide.qmltypes to 1.11

Riccardo Padovani (rpadovani) wrote :

Done :-)

Olivier Tilloy (osomon) wrote :

Thanks Riccardo, this looks good. I wonder if the install() stance should be conditional? I’d say it shouldn’t, because the file should always be installed. But it doesn’ẗ really matter.

When merging in to the latest trunk, the generate_oxide_qmltypes target fails to build, because it invokes the command with version 1.12, and there is nothing under 1.12 yet. This wipes the contents of oxide.qmltypes. Ideally, this kind of error should be caught and the file should be restored to its current version if that happens, to avoid failing the build entirely. Not sure if that’s possible. If not, I’m okay with merging this as is.

Olivier Tilloy (osomon) wrote :

> Ideally, this kind of error should be caught and the file should be
> restored to its current version if that happens, to avoid failing the
> build entirely. Not sure if that’s possible. If not, I’m okay with
> merging this as is.

qmlplugindump exits with a return code of 3 (EXIT_IMPORTERROR) in this case. It should be possible to test the value of the exit code and act accordingly.

Olivier Tilloy (osomon) wrote :

Okay, I think I found a way to do what I was suggesting above.

Since the output file gets overwritten in case of an error, we cannot redirect the output of the command directly to ${CMAKE_CURRENT_SOURCE_DIR}/oxide.qmltypes. Instead, we can redirect it to a temporary file (under ${CMAKE_CURRENT_BINARY_DIR}), and if the command was successful, copy it to the source dir, otherwise just ignore it.
We also want the custom target to always succeed, because not having new APIs should not be considered a valid condition for failing the build.

I’m pasting a diff that should apply cleanly on top of your branch and that implements that suggestion. Please take a look and let me know what you think.

=== modified file 'qt/qmlplugin/CMakeLists.txt'
--- qt/qmlplugin/CMakeLists.txt 2015-10-19 07:56:29 +0000
+++ qt/qmlplugin/CMakeLists.txt 2015-10-20 07:13:18 +0000
@@ -87,10 +87,12 @@
   add_custom_target(generate_oxide_qmltypes ALL
     COMMAND env "LD_LIBRARY_PATH=${CHROMIUM_OUTPUT_DIR}/Release/lib:${LIB_OUTPUT_DIR}"
             env "QML2_IMPORT_PATH=${QMLPLUGIN_OUTPUT_DIR}"
- qmlplugindump -v -noinstantiate com.canonical.Oxide ${OXIDE_VERSION_MAJOR}.${OXIDE_VERSION_MINOR} ${OXIDE_QMLPLUGIN_MODULE_NAME} > ${CMAKE_CURRENT_SOURCE_DIR}/oxide.qmltypes
- WORKING_DIRECTORY ${QMLPLUGIN_OUTPUT_DIR}
- )
+ qmlplugindump -v -noinstantiate com.canonical.Oxide ${OXIDE_VERSION_MAJOR}.${OXIDE_VERSION_MINOR} ${OXIDE_QMLPLUGIN_MODULE_NAME} > ${CMAKE_CURRENT_BINARY_DIR}/oxide.qmltypes
+ && cp ${CMAKE_CURRENT_BINARY_DIR}/oxide.qmltypes ${CMAKE_CURRENT_SOURCE_DIR}/
+ || true
+ WORKING_DIRECTORY ${QMLPLUGIN_OUTPUT_DIR})
   add_dependencies(generate_oxide_qmltypes ${OXIDE_QMLPLUGIN})
+endif()

- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/oxide.qmltypes DESTINATION ${QT_INSTALL_QML}/${OXIDE_QMLPLUGIN_MODULE_NAME})
-endif()
+install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/oxide.qmltypes
+ DESTINATION ${QT_INSTALL_QML}/${OXIDE_QMLPLUGIN_MODULE_NAME})

lp:~rpadovani/oxide/type-info updated on 2015-10-20
1108. By Riccardo Padovani on 2015-10-20

Don't wipe oxide.qmltypes file if for any reason qmlplugindump fails

Olivier Tilloy (osomon) wrote :

Thanks, this looks good to me!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2015-05-04 14:44:32 +0000
3+++ CMakeLists.txt 2015-10-20 07:43:23 +0000
4@@ -63,7 +63,8 @@
5 execute_process(
6 COMMAND ${PYTHON} ${CMAKE_SOURCE_DIR}/build/scripts/get-version.py ${OXIDE_BUILD} ${comp}
7 OUTPUT_VARIABLE _OUTPUT
8- RESULT_VARIABLE _RESULT)
9+ RESULT_VARIABLE _RESULT
10+ OUTPUT_STRIP_TRAILING_WHITESPACE)
11 if(NOT _RESULT EQUAL 0)
12 message(FATAL_ERROR "Failed to get version number")
13 endif()
14@@ -190,7 +191,7 @@
15 endif()
16 list(APPEND _NINJA_BUILD_COMMAND all)
17 add_custom_target(
18- gyp_all COMMAND ${_NINJA_BUILD_COMMAND}
19+ gyp_all COMMAND ${_NINJA_BUILD_COMMAND}
20 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
21 COMMENT "Building the GYP \"all\" target")
22
23
24=== modified file 'qt/CMakeLists.txt'
25--- qt/CMakeLists.txt 2015-07-21 21:42:54 +0000
26+++ qt/CMakeLists.txt 2015-10-20 07:43:23 +0000
27@@ -65,7 +65,7 @@
28 IMMEDIATE @ONLY)
29 file(INSTALL ${CMAKE_CURRENT_BINARY_DIR}/run_qmlapp.sh
30 DESTINATION ${BIN_OUTPUT_DIR}
31- FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
32+ FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
33 GROUP_READ GROUP_EXECUTE
34 WORLD_READ WORLD_EXECUTE)
35
36
37=== modified file 'qt/qmlplugin/CMakeLists.txt'
38--- qt/qmlplugin/CMakeLists.txt 2015-08-25 07:02:54 +0000
39+++ qt/qmlplugin/CMakeLists.txt 2015-10-20 07:43:23 +0000
40@@ -81,3 +81,20 @@
41 install(FILES ${QMLPLUGIN_OUTPUT_DIR}/${OXIDE_QMLPLUGIN_MODULE_NAME}/qmldir
42 DESTINATION ${QT_INSTALL_QML}/${OXIDE_QMLPLUGIN_MODULE_NAME})
43 install(TARGETS ${OXIDE_QMLPLUGIN} DESTINATION ${QT_INSTALL_QML}/${OXIDE_QMLPLUGIN_MODULE_NAME})
44+
45+# Only generate typeinfo if not cross compiling
46+if(NOT CMAKE_CROSSCOMPILING)
47+ add_custom_target(generate_oxide_qmltypes ALL
48+ COMMAND env "LD_LIBRARY_PATH=${CHROMIUM_OUTPUT_DIR}/Release/lib:${LIB_OUTPUT_DIR}"
49+ env "QML2_IMPORT_PATH=${QMLPLUGIN_OUTPUT_DIR}"
50+ qmlplugindump -v -noinstantiate com.canonical.Oxide ${OXIDE_VERSION_MAJOR}.${OXIDE_VERSION_MINOR} ${OXIDE_QMLPLUGIN_MODULE_NAME} > ${CMAKE_CURRENT_BINARY_DIR}/oxide.qmltypes
51+ && cp ${CMAKE_CURRENT_BINARY_DIR}/oxide.qmltypes ${CMAKE_CURRENT_SOURCE_DIR}/
52+ || true
53+ WORKING_DIRECTORY ${QMLPLUGIN_OUTPUT_DIR}
54+ )
55+ add_dependencies(generate_oxide_qmltypes ${OXIDE_QMLPLUGIN})
56+
57+endif()
58+
59+install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/oxide.qmltypes
60+ DESTINATION ${QT_INSTALL_QML}/${OXIDE_QMLPLUGIN_MODULE_NAME})
61
62=== added file 'qt/qmlplugin/oxide.qmltypes'
63--- qt/qmlplugin/oxide.qmltypes 1970-01-01 00:00:00 +0000
64+++ qt/qmlplugin/oxide.qmltypes 2015-10-20 07:43:23 +0000
65@@ -0,0 +1,909 @@
66+import QtQuick.tooling 1.1
67+
68+// This file describes the plugin-supplied types contained in the library.
69+// It is used for QML tooling purposes only.
70+//
71+// This file was auto-generated by:
72+// 'qmlplugindump -v -noinstantiate com.canonical.Oxide 1.11 com/canonical/Oxide'
73+
74+Module {
75+ Component {
76+ name: "OxideQCertificateError"
77+ prototype: "QObject"
78+ exports: ["CertificateError 1.0"]
79+ isCreatable: false
80+ exportMetaObjectRevisions: [0]
81+ Enum {
82+ name: "Error"
83+ values: {
84+ "OK": 0,
85+ "ErrorBadIdentity": 1,
86+ "ErrorExpired": 2,
87+ "ErrorDateInvalid": 3,
88+ "ErrorAuthorityInvalid": 4,
89+ "ErrorRevoked": 5,
90+ "ErrorInvalid": 6,
91+ "ErrorInsecure": 7,
92+ "ErrorGeneric": 8
93+ }
94+ }
95+ Property { name: "url"; type: "QUrl"; isReadonly: true }
96+ Property { name: "isCancelled"; type: "bool"; isReadonly: true }
97+ Property { name: "isMainFrame"; type: "bool"; isReadonly: true }
98+ Property { name: "isSubresource"; type: "bool"; isReadonly: true }
99+ Property { name: "overridable"; type: "bool"; isReadonly: true }
100+ Property { name: "strictEnforcement"; type: "bool"; isReadonly: true }
101+ Property { name: "certificate"; type: "OxideQSslCertificate"; isReadonly: true }
102+ Property { name: "certError"; type: "Error"; isReadonly: true }
103+ Signal { name: "cancelled" }
104+ Method { name: "allow" }
105+ Method { name: "deny" }
106+ }
107+ Component {
108+ name: "OxideQFindController"
109+ prototype: "QObject"
110+ exports: ["FindController 1.8"]
111+ isCreatable: false
112+ exportMetaObjectRevisions: [0]
113+ Property { name: "text"; type: "string" }
114+ Property { name: "caseSensitive"; type: "bool" }
115+ Property { name: "count"; type: "int"; isReadonly: true }
116+ Property { name: "current"; type: "int"; isReadonly: true }
117+ Method { name: "next" }
118+ Method { name: "previous" }
119+ }
120+ Component {
121+ name: "OxideQGeolocationPermissionRequest"
122+ prototype: "OxideQSimplePermissionRequest"
123+ exports: ["GeolocationPermissionRequest 1.0"]
124+ isCreatable: false
125+ exportMetaObjectRevisions: [0]
126+ Property { name: "origin"; type: "QUrl"; isReadonly: true }
127+ Method { name: "accept" }
128+ }
129+ Component {
130+ name: "OxideQHttpAuthenticationRequest"
131+ prototype: "QObject"
132+ exports: ["HttpAuthenticationRequest 1.9"]
133+ isCreatable: false
134+ exportMetaObjectRevisions: [0]
135+ Property { name: "host"; type: "string"; isReadonly: true }
136+ Property { name: "realm"; type: "string"; isReadonly: true }
137+ Signal { name: "cancelled" }
138+ Method {
139+ name: "allow"
140+ Parameter { name: "username"; type: "string" }
141+ Parameter { name: "password"; type: "string" }
142+ }
143+ Method { name: "deny" }
144+ }
145+ Component {
146+ name: "OxideQNavigationRequest"
147+ prototype: "QObject"
148+ exports: ["NavigationRequest 1.0"]
149+ isCreatable: false
150+ exportMetaObjectRevisions: [0]
151+ Enum {
152+ name: "Disposition"
153+ values: {
154+ "DispositionCurrentTab": 0,
155+ "DispositionNewForegroundTab": 1,
156+ "DispositionNewBackgroundTab": 2,
157+ "DispositionNewPopup": 3,
158+ "DispositionNewWindow": 4
159+ }
160+ }
161+ Enum {
162+ name: "Action"
163+ values: {
164+ "ActionAccept": 0,
165+ "ActionReject": 255
166+ }
167+ }
168+ Property { name: "url"; type: "QUrl"; isReadonly: true }
169+ Property { name: "disposition"; type: "Disposition"; isReadonly: true }
170+ Property { name: "userGesture"; type: "bool"; isReadonly: true }
171+ Property { name: "action"; type: "Action" }
172+ }
173+ Component {
174+ name: "OxideQNewViewRequest"
175+ prototype: "QObject"
176+ exports: ["NewViewRequest 1.0"]
177+ isCreatable: false
178+ exportMetaObjectRevisions: [0]
179+ Enum {
180+ name: "Disposition"
181+ values: {
182+ "DispositionCurrentTab": 0,
183+ "DispositionNewForegroundTab": 1,
184+ "DispositionNewBackgroundTab": 2,
185+ "DispositionNewPopup": 3,
186+ "DispositionNewWindow": 4
187+ }
188+ }
189+ Property { name: "position"; type: "QRectF"; isReadonly: true }
190+ Property { name: "disposition"; type: "Disposition"; isReadonly: true }
191+ }
192+ Component {
193+ name: "OxideQPermissionRequest"
194+ prototype: "QObject"
195+ Property { name: "origin"; type: "QUrl"; isReadonly: true }
196+ Property { name: "embedder"; type: "QUrl"; isReadonly: true }
197+ Property { name: "isCancelled"; type: "bool"; isReadonly: true }
198+ Property { name: "url"; type: "QUrl"; isReadonly: true }
199+ Signal { name: "cancelled" }
200+ }
201+ Component {
202+ name: "OxideQQuickCookieManager"
203+ prototype: "QObject"
204+ exports: ["CookieManager 1.0", "CookieManager 1.3"]
205+ isCreatable: false
206+ exportMetaObjectRevisions: [0, 1]
207+ Signal {
208+ name: "setCookiesResponse"
209+ Parameter { name: "requestId"; type: "int" }
210+ Parameter { name: "failedCookies"; type: "QVariant" }
211+ }
212+ Signal {
213+ name: "getCookiesResponse"
214+ Parameter { name: "requestId"; type: "int" }
215+ Parameter { name: "cookies"; type: "QVariant" }
216+ }
217+ Signal {
218+ name: "deleteCookiesResponse"
219+ Parameter { name: "requestId"; type: "int" }
220+ Parameter { name: "numDeleted"; type: "int" }
221+ }
222+ Method {
223+ name: "setCookies"
224+ type: "int"
225+ Parameter { name: "url"; type: "QUrl" }
226+ Parameter { name: "cookies"; type: "QVariant" }
227+ }
228+ Method {
229+ name: "setNetworkCookies"
230+ type: "int"
231+ Parameter { name: "url"; type: "QUrl" }
232+ Parameter { name: "cookies"; type: "QList<QNetworkCookie>" }
233+ }
234+ Method {
235+ name: "getCookies"
236+ type: "int"
237+ Parameter { name: "url"; type: "QUrl" }
238+ }
239+ Method { name: "getAllCookies"; type: "int" }
240+ Method { name: "deleteAllCookies"; revision: 1; type: "int" }
241+ }
242+ Component {
243+ name: "OxideQQuickGlobal"
244+ prototype: "QObject"
245+ exports: ["Oxide 1.0"]
246+ isCreatable: false
247+ isSingleton: true
248+ exportMetaObjectRevisions: [0]
249+ Enum {
250+ name: "ProcessModel"
251+ values: {
252+ "ProcessModelMultiProcess": 0,
253+ "ProcessModelSingleProcess": 1,
254+ "ProcessModelProcessPerSiteInstance": 2,
255+ "ProcessModelProcessPerView": 3,
256+ "ProcessModelProcessPerSite": 4,
257+ "ProcessModelSitePerProcess": 5
258+ }
259+ }
260+ Property { name: "processModel"; type: "ProcessModel" }
261+ Property { name: "maxRendererProcessCount"; type: "int" }
262+ Property { name: "availableAudioCaptureDevices"; type: "QVariant"; isReadonly: true }
263+ Property { name: "availableVideoCaptureDevices"; type: "QVariant"; isReadonly: true }
264+ Method { name: "defaultWebContext"; type: "OxideQQuickWebContext*" }
265+ }
266+ Component {
267+ name: "OxideQQuickLocationBarController"
268+ prototype: "QObject"
269+ exports: ["LocationBarController 1.4", "LocationBarController 1.7"]
270+ isCreatable: false
271+ exportMetaObjectRevisions: [0, 1]
272+ Enum {
273+ name: "Mode"
274+ values: {
275+ "ModeAuto": 0,
276+ "ModeShown": 1,
277+ "ModeHidden": 2
278+ }
279+ }
280+ Property { name: "height"; type: "double" }
281+ Property { name: "mode"; type: "Mode" }
282+ Property { name: "animated"; revision: 1; type: "bool" }
283+ Property { name: "offset"; type: "double"; isReadonly: true }
284+ Property { name: "contentOffset"; type: "double"; isReadonly: true }
285+ Signal { name: "animatedChanged"; revision: 1 }
286+ Method {
287+ name: "show"
288+ revision: 1
289+ Parameter { name: "animate"; type: "bool" }
290+ }
291+ Method {
292+ name: "hide"
293+ revision: 1
294+ Parameter { name: "animate"; type: "bool" }
295+ }
296+ }
297+ Component {
298+ name: "OxideQQuickNavigationHistory"
299+ prototype: "QAbstractListModel"
300+ exports: ["NavigationHistory 1.0"]
301+ isCreatable: false
302+ exportMetaObjectRevisions: [0]
303+ Property { name: "currentIndex"; type: "int" }
304+ }
305+ Component {
306+ name: "OxideQQuickScriptMessage"
307+ prototype: "QObject"
308+ exports: ["ScriptMessage 1.0"]
309+ isCreatable: false
310+ exportMetaObjectRevisions: [0]
311+ Property { name: "frame"; type: "OxideQQuickWebFrame"; isReadonly: true; isPointer: true }
312+ Property { name: "context"; type: "QUrl"; isReadonly: true }
313+ Property { name: "id"; type: "string"; isReadonly: true }
314+ Property { name: "args"; type: "QVariant"; isReadonly: true }
315+ Property { name: "payload"; type: "QVariant"; isReadonly: true }
316+ Method {
317+ name: "reply"
318+ Parameter { name: "payload"; type: "QVariant" }
319+ }
320+ Method {
321+ name: "error"
322+ Parameter { name: "payload"; type: "QVariant" }
323+ }
324+ }
325+ Component {
326+ name: "OxideQQuickScriptMessageHandler"
327+ prototype: "QObject"
328+ exports: ["ScriptMessageHandler 1.0"]
329+ exportMetaObjectRevisions: [0]
330+ Property { name: "msgId"; type: "string" }
331+ Property { name: "contexts"; type: "QList<QUrl>" }
332+ Property { name: "callback"; type: "QJSValue" }
333+ }
334+ Component {
335+ name: "OxideQQuickScriptMessageRequest"
336+ prototype: "QObject"
337+ exports: ["ScriptMessageRequest 1.0"]
338+ isCreatable: false
339+ exportMetaObjectRevisions: [0]
340+ Enum {
341+ name: "ErrorCode"
342+ values: {
343+ "ErrorNone": 0,
344+ "ErrorInvalidContext": 1,
345+ "ErrorUncaughtException": 2,
346+ "ErrorNoHandler": 3,
347+ "ErrorHandlerReportedError": 4,
348+ "ErrorHandlerDidNotRespond": 5,
349+ "ErrorDestinationNotFound": 1
350+ }
351+ }
352+ Property { name: "onreply"; type: "QJSValue" }
353+ Property { name: "onerror"; type: "QJSValue" }
354+ Signal { name: "replyCallbackChanged" }
355+ Signal { name: "errorCallbackChanged" }
356+ }
357+ Component {
358+ name: "OxideQQuickUserScript"
359+ prototype: "QObject"
360+ exports: ["UserScript 1.0"]
361+ exportMetaObjectRevisions: [0]
362+ Property { name: "url"; type: "QUrl" }
363+ Property { name: "emulateGreasemonkey"; type: "bool" }
364+ Property { name: "matchAllFrames"; type: "bool" }
365+ Property { name: "incognitoEnabled"; type: "bool" }
366+ Property { name: "context"; type: "QUrl" }
367+ Signal { name: "scriptLoaded" }
368+ Signal { name: "scriptLoadFailed" }
369+ Signal { name: "scriptPropertyChanged" }
370+ }
371+ Component {
372+ name: "OxideQQuickWebContext"
373+ prototype: "QObject"
374+ exports: [
375+ "WebContext 1.0",
376+ "WebContext 1.3",
377+ "WebContext 1.6",
378+ "WebContext 1.9"
379+ ]
380+ exportMetaObjectRevisions: [0, 1, 2, 3]
381+ Enum {
382+ name: "CookiePolicy"
383+ values: {
384+ "CookiePolicyAllowAll": 0,
385+ "CookiePolicyBlockAll": 1,
386+ "CookiePolicyBlockThirdParty": 2
387+ }
388+ }
389+ Enum {
390+ name: "SessionCookieMode"
391+ values: {
392+ "SessionCookieModeEphemeral": 0,
393+ "SessionCookieModePersistent": 1,
394+ "SessionCookieModeRestored": 2
395+ }
396+ }
397+ Property { name: "product"; type: "string" }
398+ Property { name: "userAgent"; type: "string" }
399+ Property { name: "dataPath"; type: "QUrl" }
400+ Property { name: "cachePath"; type: "QUrl" }
401+ Property { name: "acceptLangs"; type: "string" }
402+ Property { name: "userScripts"; type: "OxideQQuickUserScript"; isList: true; isReadonly: true }
403+ Property { name: "cookiePolicy"; type: "CookiePolicy" }
404+ Property { name: "sessionCookieMode"; type: "SessionCookieMode" }
405+ Property { name: "popupBlockerEnabled"; type: "bool" }
406+ Property {
407+ name: "networkRequestDelegate"
408+ type: "OxideQQuickWebContextDelegateWorker"
409+ isPointer: true
410+ }
411+ Property {
412+ name: "storageAccessPermissionDelegate"
413+ type: "OxideQQuickWebContextDelegateWorker"
414+ isPointer: true
415+ }
416+ Property {
417+ name: "userAgentOverrideDelegate"
418+ type: "OxideQQuickWebContextDelegateWorker"
419+ isPointer: true
420+ }
421+ Property { name: "devtoolsEnabled"; type: "bool" }
422+ Property { name: "devtoolsPort"; type: "int" }
423+ Property { name: "devtoolsIp"; type: "string" }
424+ Property {
425+ name: "cookieManager"
426+ type: "OxideQQuickCookieManager"
427+ isReadonly: true
428+ isPointer: true
429+ }
430+ Property { name: "hostMappingRules"; revision: 1; type: "QStringList" }
431+ Property { name: "allowedExtraUrlSchemes"; revision: 1; type: "QStringList" }
432+ Property { name: "maxCacheSizeHint"; revision: 2; type: "int" }
433+ Property { name: "defaultAudioCaptureDeviceId"; revision: 3; type: "string" }
434+ Property { name: "defaultVideoCaptureDeviceId"; revision: 3; type: "string" }
435+ Property { name: "userAgentOverrides"; revision: 3; type: "QVariantList" }
436+ Property { name: "doNotTrackEnabled"; revision: 3; type: "bool" }
437+ Signal { name: "devtoolsBindIpChanged" }
438+ Signal { name: "hostMappingRulesChanged"; revision: 1 }
439+ Signal { name: "allowedExtraUrlSchemesChanged"; revision: 1 }
440+ Signal { name: "maxCacheSizeHintChanged"; revision: 2 }
441+ Signal { name: "defaultAudioCaptureDeviceIdChanged"; revision: 3 }
442+ Signal { name: "defaultVideoCaptureDeviceIdChanged"; revision: 3 }
443+ Signal { name: "userAgentOverridesChanged"; revision: 3 }
444+ Signal { name: "doNotTrackEnabledChanged"; revision: 3 }
445+ Method {
446+ name: "addUserScript"
447+ Parameter { name: "user_script"; type: "OxideQQuickUserScript"; isPointer: true }
448+ }
449+ Method {
450+ name: "removeUserScript"
451+ Parameter { name: "user_script"; type: "OxideQQuickUserScript"; isPointer: true }
452+ }
453+ }
454+ Component {
455+ name: "OxideQQuickWebContextDelegateWorker"
456+ prototype: "QObject"
457+ exports: ["WebContextDelegateWorker 1.0"]
458+ exportMetaObjectRevisions: [0]
459+ Property { name: "source"; type: "QUrl" }
460+ Signal {
461+ name: "message"
462+ Parameter { name: "message"; type: "QVariant" }
463+ }
464+ Signal {
465+ name: "error"
466+ Parameter { name: "error"; type: "string" }
467+ }
468+ Method {
469+ name: "sendMessage"
470+ Parameter { name: "message"; type: "QVariant" }
471+ }
472+ }
473+ Component {
474+ name: "OxideQQuickWebFrame"
475+ prototype: "QObject"
476+ exports: ["WebFrame 1.0"]
477+ isCreatable: false
478+ exportMetaObjectRevisions: [0]
479+ Property { name: "url"; type: "QUrl"; isReadonly: true }
480+ Property { name: "parentFrame"; type: "OxideQQuickWebFrame"; isReadonly: true; isPointer: true }
481+ Property { name: "childFrames"; type: "OxideQQuickWebFrame"; isList: true; isReadonly: true }
482+ Property {
483+ name: "messageHandlers"
484+ type: "OxideQQuickScriptMessageHandler"
485+ isList: true
486+ isReadonly: true
487+ }
488+ Method {
489+ name: "addMessageHandler"
490+ Parameter { name: "handler"; type: "OxideQQuickScriptMessageHandler"; isPointer: true }
491+ }
492+ Method {
493+ name: "removeMessageHandler"
494+ Parameter { name: "handler"; type: "OxideQQuickScriptMessageHandler"; isPointer: true }
495+ }
496+ Method {
497+ name: "sendMessage"
498+ type: "OxideQQuickScriptMessageRequest*"
499+ Parameter { name: "context"; type: "QUrl" }
500+ Parameter { name: "msg_id"; type: "string" }
501+ Parameter { name: "payload"; type: "QVariant" }
502+ }
503+ Method {
504+ name: "sendMessage"
505+ type: "OxideQQuickScriptMessageRequest*"
506+ Parameter { name: "context"; type: "QUrl" }
507+ Parameter { name: "msg_id"; type: "string" }
508+ }
509+ Method {
510+ name: "sendMessageNoReply"
511+ Parameter { name: "context"; type: "QUrl" }
512+ Parameter { name: "msg_id"; type: "string" }
513+ Parameter { name: "payload"; type: "QVariant" }
514+ }
515+ Method {
516+ name: "sendMessageNoReply"
517+ Parameter { name: "context"; type: "QUrl" }
518+ Parameter { name: "msg_id"; type: "string" }
519+ }
520+ }
521+ Component {
522+ name: "OxideQQuickWebView"
523+ defaultProperty: "data"
524+ prototype: "QQuickItem"
525+ exports: [
526+ "WebView 1.0",
527+ "WebView 1.11",
528+ "WebView 1.3",
529+ "WebView 1.4",
530+ "WebView 1.5",
531+ "WebView 1.8",
532+ "WebView 1.9"
533+ ]
534+ exportMetaObjectRevisions: [0, 6, 1, 2, 3, 4, 5]
535+ attachedType: "OxideQQuickWebViewAttached"
536+ Enum {
537+ name: "LogMessageSeverityLevel"
538+ values: {
539+ "LogSeverityVerbose": -1,
540+ "LogSeverityInfo": 0,
541+ "LogSeverityWarning": 1,
542+ "LogSeverityError": 2,
543+ "LogSeverityErrorReport": 3,
544+ "LogSeverityFatal": 4
545+ }
546+ }
547+ Enum {
548+ name: "ContentType"
549+ values: {
550+ "ContentTypeNone": 0,
551+ "ContentTypeMixedDisplay": 1,
552+ "ContentTypeMixedScript": 2
553+ }
554+ }
555+ Enum {
556+ name: "RestoreType"
557+ values: {
558+ "RestoreCurrentSession": 0,
559+ "RestoreLastSessionExitedCleanly": 1,
560+ "RestoreLastSessionCrashed": 2
561+ }
562+ }
563+ Enum {
564+ name: "WebProcessStatus"
565+ values: {
566+ "WebProcessRunning": 0,
567+ "WebProcessKilled": 1,
568+ "WebProcessCrashed": 2
569+ }
570+ }
571+ Enum {
572+ name: "EditCapabilities"
573+ values: {
574+ "NoCapability": 0,
575+ "UndoCapability": 1,
576+ "RedoCapability": 2,
577+ "CutCapability": 4,
578+ "CopyCapability": 8,
579+ "PasteCapability": 16,
580+ "EraseCapability": 32,
581+ "SelectAllCapability": 64
582+ }
583+ }
584+ Enum {
585+ name: "MediaType"
586+ values: {
587+ "MediaTypeNone": 0,
588+ "MediaTypeImage": 1,
589+ "MediaTypeVideo": 2,
590+ "MediaTypeAudio": 3,
591+ "MediaTypeCanvas": 4,
592+ "MediaTypePlugin": 5
593+ }
594+ }
595+ Enum {
596+ name: "MediaStatus"
597+ values: {
598+ "MediaStatusNone": 0,
599+ "MediaStatusInError": 1,
600+ "MediaStatusPaused": 2,
601+ "MediaStatusMuted": 4,
602+ "MediaStatusLoop": 8,
603+ "MediaStatusCanSave": 16,
604+ "MediaStatusHasAudio": 32,
605+ "MediaStatusCanToggleControls": 64,
606+ "MediaStatusControls": 128,
607+ "MediaStatusCanPrint": 256,
608+ "MediaStatusCanRotate": 512
609+ }
610+ }
611+ Enum {
612+ name: "EditingCommands"
613+ values: {
614+ "EditingCommandUndo": 0,
615+ "EditingCommandRedo": 1,
616+ "EditingCommandCut": 2,
617+ "EditingCommandCopy": 3,
618+ "EditingCommandPaste": 4,
619+ "EditingCommandErase": 5,
620+ "EditingCommandSelectAll": 6
621+ }
622+ }
623+ Property { name: "url"; type: "QUrl" }
624+ Property { name: "title"; type: "string"; isReadonly: true }
625+ Property { name: "icon"; type: "QUrl"; isReadonly: true }
626+ Property { name: "canGoBack"; type: "bool"; isReadonly: true }
627+ Property { name: "canGoForward"; type: "bool"; isReadonly: true }
628+ Property { name: "incognito"; type: "bool" }
629+ Property { name: "loading"; type: "bool"; isReadonly: true }
630+ Property { name: "fullscreen"; type: "bool" }
631+ Property { name: "loadProgress"; type: "int"; isReadonly: true }
632+ Property { name: "rootFrame"; type: "OxideQQuickWebFrame"; isReadonly: true; isPointer: true }
633+ Property {
634+ name: "messageHandlers"
635+ type: "OxideQQuickScriptMessageHandler"
636+ isList: true
637+ isReadonly: true
638+ }
639+ Property { name: "viewportWidth"; type: "double"; isReadonly: true }
640+ Property { name: "viewportHeight"; type: "double"; isReadonly: true }
641+ Property { name: "contentWidth"; type: "double"; isReadonly: true }
642+ Property { name: "contentHeight"; type: "double"; isReadonly: true }
643+ Property { name: "contentX"; type: "double"; isReadonly: true }
644+ Property { name: "contentY"; type: "double"; isReadonly: true }
645+ Property { name: "contextMenu"; revision: 4; type: "QQmlComponent"; isPointer: true }
646+ Property { name: "popupMenu"; type: "QQmlComponent"; isPointer: true }
647+ Property { name: "alertDialog"; type: "QQmlComponent"; isPointer: true }
648+ Property { name: "confirmDialog"; type: "QQmlComponent"; isPointer: true }
649+ Property { name: "promptDialog"; type: "QQmlComponent"; isPointer: true }
650+ Property { name: "beforeUnloadDialog"; type: "QQmlComponent"; isPointer: true }
651+ Property { name: "filePicker"; type: "QQmlComponent"; isPointer: true }
652+ Property { name: "context"; type: "OxideQQuickWebContext"; isPointer: true }
653+ Property { name: "preferences"; type: "OxideQWebPreferences"; isPointer: true }
654+ Property {
655+ name: "navigationHistory"
656+ type: "OxideQQuickNavigationHistory"
657+ isReadonly: true
658+ isPointer: true
659+ }
660+ Property {
661+ name: "securityStatus"
662+ type: "OxideQSecurityStatus"
663+ isReadonly: true
664+ isPointer: true
665+ }
666+ Property { name: "blockedContent"; type: "ContentType"; isReadonly: true }
667+ Property { name: "request"; type: "OxideQNewViewRequest"; isPointer: true }
668+ Property {
669+ name: "findController"
670+ revision: 4
671+ type: "OxideQFindController"
672+ isReadonly: true
673+ isPointer: true
674+ }
675+ Property { name: "restoreState"; revision: 2; type: "string" }
676+ Property { name: "restoreType"; revision: 2; type: "RestoreType" }
677+ Property { name: "currentState"; revision: 2; type: "string"; isReadonly: true }
678+ Property {
679+ name: "locationBarController"
680+ revision: 3
681+ type: "OxideQQuickLocationBarController"
682+ isReadonly: true
683+ isPointer: true
684+ }
685+ Property { name: "webProcessStatus"; revision: 4; type: "WebProcessStatus"; isReadonly: true }
686+ Signal { name: "loadingStateChanged"; revision: 1 }
687+ Signal {
688+ name: "loadEvent"
689+ revision: 1
690+ Parameter { name: "event"; type: "OxideQLoadEvent" }
691+ }
692+ Signal {
693+ name: "frameAdded"
694+ Parameter { name: "frame"; type: "OxideQQuickWebFrame"; isPointer: true }
695+ }
696+ Signal {
697+ name: "frameRemoved"
698+ Parameter { name: "frame"; type: "OxideQQuickWebFrame"; isPointer: true }
699+ }
700+ Signal { name: "contextMenuChanged"; revision: 4 }
701+ Signal {
702+ name: "fullscreenRequested"
703+ Parameter { name: "fullscreen"; type: "bool" }
704+ }
705+ Signal {
706+ name: "navigationRequested"
707+ Parameter { name: "request"; type: "OxideQNavigationRequest"; isPointer: true }
708+ }
709+ Signal {
710+ name: "newViewRequested"
711+ Parameter { name: "request"; type: "OxideQNewViewRequest"; isPointer: true }
712+ }
713+ Signal {
714+ name: "geolocationPermissionRequested"
715+ Parameter { name: "request"; type: "QJSValue" }
716+ }
717+ Signal {
718+ name: "mediaAccessPermissionRequested"
719+ revision: 4
720+ Parameter { name: "request"; type: "QJSValue" }
721+ }
722+ Signal {
723+ name: "notificationPermissionRequested"
724+ revision: 6
725+ Parameter { name: "request"; type: "QJSValue" }
726+ }
727+ Signal {
728+ name: "javaScriptConsoleMessage"
729+ Parameter { name: "level"; type: "LogMessageSeverityLevel" }
730+ Parameter { name: "message"; type: "string" }
731+ Parameter { name: "lineNumber"; type: "int" }
732+ Parameter { name: "sourceId"; type: "string" }
733+ }
734+ Signal {
735+ name: "downloadRequested"
736+ Parameter { name: "request"; type: "OxideQDownloadRequest" }
737+ }
738+ Signal {
739+ name: "certificateError"
740+ Parameter { name: "error"; type: "QJSValue" }
741+ }
742+ Signal {
743+ name: "prepareToCloseResponse"
744+ revision: 2
745+ Parameter { name: "proceed"; type: "bool" }
746+ }
747+ Signal { name: "closeRequested"; revision: 2 }
748+ Signal { name: "webProcessStatusChanged"; revision: 4 }
749+ Signal {
750+ name: "httpAuthenticationRequested"
751+ revision: 5
752+ Parameter { name: "request"; type: "QJSValue" }
753+ }
754+ Signal {
755+ name: "loadingChanged"
756+ Parameter { name: "loadEvent"; type: "OxideQLoadEvent" }
757+ }
758+ Method { name: "goBack" }
759+ Method { name: "goForward" }
760+ Method { name: "stop" }
761+ Method { name: "reload" }
762+ Method {
763+ name: "loadHtml"
764+ Parameter { name: "html"; type: "string" }
765+ Parameter { name: "baseUrl"; type: "QUrl" }
766+ }
767+ Method {
768+ name: "loadHtml"
769+ Parameter { name: "html"; type: "string" }
770+ }
771+ Method {
772+ name: "setCanTemporarilyDisplayInsecureContent"
773+ Parameter { name: "allow"; type: "bool" }
774+ }
775+ Method {
776+ name: "setCanTemporarilyRunInsecureContent"
777+ Parameter { name: "allow"; type: "bool" }
778+ }
779+ Method { name: "prepareToClose"; revision: 2 }
780+ Method {
781+ name: "addMessageHandler"
782+ Parameter { name: "handler"; type: "OxideQQuickScriptMessageHandler"; isPointer: true }
783+ }
784+ Method {
785+ name: "removeMessageHandler"
786+ Parameter { name: "handler"; type: "OxideQQuickScriptMessageHandler"; isPointer: true }
787+ }
788+ Method {
789+ name: "executeEditingCommand"
790+ revision: 4
791+ Parameter { name: "command"; type: "EditingCommands" }
792+ }
793+ }
794+ Component {
795+ name: "OxideQQuickWebViewAttached"
796+ prototype: "QObject"
797+ Property { name: "view"; type: "OxideQQuickWebView"; isReadonly: true; isPointer: true }
798+ }
799+ Component {
800+ name: "OxideQSecurityStatus"
801+ prototype: "QObject"
802+ exports: ["SecurityStatus 1.0"]
803+ isCreatable: false
804+ exportMetaObjectRevisions: [0]
805+ Enum {
806+ name: "SecurityLevel"
807+ values: {
808+ "SecurityLevelNone": 0,
809+ "SecurityLevelSecure": 1,
810+ "SecurityLevelSecureEV": 2,
811+ "SecurityLevelWarning": 3,
812+ "SecurityLevelError": 4
813+ }
814+ }
815+ Enum {
816+ name: "ContentStatusFlags"
817+ values: {
818+ "ContentStatusNormal": 0,
819+ "ContentStatusDisplayedInsecure": 1,
820+ "ContentStatusRanInsecure": 2
821+ }
822+ }
823+ Enum {
824+ name: "CertStatusFlags"
825+ values: {
826+ "CertStatusOk": 0,
827+ "CertStatusBadIdentity": 1,
828+ "CertStatusExpired": 2,
829+ "CertStatusDateInvalid": 4,
830+ "CertStatusAuthorityInvalid": 8,
831+ "CertStatusRevocationCheckFailed": 16,
832+ "CertStatusRevoked": 32,
833+ "CertStatusInvalid": 64,
834+ "CertStatusInsecure": 128,
835+ "CertStatusGenericError": 256
836+ }
837+ }
838+ Property { name: "securityLevel"; type: "SecurityLevel"; isReadonly: true }
839+ Property { name: "contentStatus"; type: "ContentStatusFlags"; isReadonly: true }
840+ Property { name: "certStatus"; type: "CertStatusFlags"; isReadonly: true }
841+ Property { name: "certificate"; type: "QVariant"; isReadonly: true }
842+ }
843+ Component {
844+ name: "OxideQSimplePermissionRequest"
845+ prototype: "OxideQPermissionRequest"
846+ Method { name: "allow" }
847+ Method { name: "deny" }
848+ }
849+ Component {
850+ name: "OxideQWebPreferences"
851+ prototype: "QObject"
852+ exports: ["WebPreferences 1.0"]
853+ exportMetaObjectRevisions: [0]
854+ Property { name: "standardFontFamily"; type: "string" }
855+ Property { name: "fixedFontFamily"; type: "string" }
856+ Property { name: "serifFontFamily"; type: "string" }
857+ Property { name: "sanSerifFontFamily"; type: "string" }
858+ Property { name: "remoteFontsEnabled"; type: "bool" }
859+ Property { name: "defaultEncoding"; type: "string" }
860+ Property { name: "defaultFontSize"; type: "uint" }
861+ Property { name: "defaultFixedFontSize"; type: "uint" }
862+ Property { name: "minimumFontSize"; type: "uint" }
863+ Property { name: "javascriptEnabled"; type: "bool" }
864+ Property { name: "allowScriptsToCloseWindows"; type: "bool" }
865+ Property { name: "javascriptCanAccessClipboard"; type: "bool" }
866+ Property { name: "hyperlinkAuditingEnabled"; type: "bool" }
867+ Property { name: "allowUniversalAccessFromFileUrls"; type: "bool" }
868+ Property { name: "allowFileAccessFromFileUrls"; type: "bool" }
869+ Property { name: "canDisplayInsecureContent"; type: "bool" }
870+ Property { name: "canRunInsecureContent"; type: "bool" }
871+ Property { name: "passwordEchoEnabled"; type: "bool" }
872+ Property { name: "loadsImagesAutomatically"; type: "bool" }
873+ Property { name: "shrinksStandaloneImagesToFit"; type: "bool" }
874+ Property { name: "textAreasAreResizable"; type: "bool" }
875+ Property { name: "localStorageEnabled"; type: "bool" }
876+ Property { name: "databasesEnabled"; type: "bool" }
877+ Property { name: "appCacheEnabled"; type: "bool" }
878+ Property { name: "tabsToLinks"; type: "bool" }
879+ Property { name: "caretBrowsingEnabled"; type: "bool" }
880+ Property { name: "touchEnabled"; type: "bool" }
881+ Signal { name: "sansSerifFontFamilyChanged" }
882+ }
883+ Component {
884+ name: "oxide::qmlplugin::DownloadRequest"
885+ prototype: "QQmlValueType"
886+ exports: ["DownloadRequest 1.0"]
887+ isCreatable: false
888+ exportMetaObjectRevisions: [0]
889+ Property { name: "url"; type: "QUrl"; isReadonly: true }
890+ Property { name: "mimeType"; type: "string"; isReadonly: true }
891+ Property { name: "shouldPrompt"; type: "bool"; isReadonly: true }
892+ Property { name: "suggestedFilename"; type: "string"; isReadonly: true }
893+ Property { name: "cookies"; type: "QStringList"; isReadonly: true }
894+ Property { name: "referrer"; type: "string"; isReadonly: true }
895+ Property { name: "userAgent"; type: "string"; isReadonly: true }
896+ }
897+ Component {
898+ name: "oxide::qmlplugin::LoadEvent"
899+ prototype: "QQmlValueType"
900+ exports: ["LoadEvent 1.0"]
901+ isCreatable: false
902+ exportMetaObjectRevisions: [0]
903+ Enum {
904+ name: "Type"
905+ values: {
906+ "TypeStarted": 0,
907+ "TypeStopped": 1,
908+ "TypeSucceeded": 2,
909+ "TypeFailed": 3,
910+ "TypeCommitted": 4,
911+ "TypeRedirected": 5
912+ }
913+ }
914+ Enum {
915+ name: "ErrorDomain"
916+ values: {
917+ "ErrorDomainNone": 0,
918+ "ErrorDomainInternal": 1,
919+ "ErrorDomainConnection": 2,
920+ "ErrorDomainCertificate": 3,
921+ "ErrorDomainHTTP": 4,
922+ "ErrorDomainCache": 5,
923+ "ErrorDomainFTP": 6,
924+ "ErrorDomainDNS": 7
925+ }
926+ }
927+ Property { name: "url"; type: "QUrl"; isReadonly: true }
928+ Property { name: "type"; type: "Type"; isReadonly: true }
929+ Property { name: "errorDomain"; type: "ErrorDomain"; isReadonly: true }
930+ Property { name: "errorString"; type: "string"; isReadonly: true }
931+ Property { name: "errorCode"; type: "int"; isReadonly: true }
932+ Property { name: "httpStatusCode"; revision: 2; type: "int"; isReadonly: true }
933+ Property { name: "originalUrl"; type: "QUrl"; isReadonly: true }
934+ Property { name: "isError"; revision: 1; type: "bool"; isReadonly: true }
935+ }
936+ Component {
937+ name: "oxide::qmlplugin::SslCertificate"
938+ prototype: "QQmlValueType"
939+ exports: ["SslCertificate 1.0"]
940+ isCreatable: false
941+ exportMetaObjectRevisions: [0]
942+ Enum {
943+ name: "PrincipalAttr"
944+ values: {
945+ "PrincipalAttrOrganizationName": 0,
946+ "PrincipalAttrCommonName": 1,
947+ "PrincipalAttrLocalityName": 2,
948+ "PrincipalAttrOrganizationUnitName": 3,
949+ "PrincipalAttrCountryName": 4,
950+ "PrincipalAttrStateOrProvinceName": 5
951+ }
952+ }
953+ Property { name: "serialNumber"; type: "string"; isReadonly: true }
954+ Property { name: "subjectDisplayName"; type: "string"; isReadonly: true }
955+ Property { name: "issuerDisplayName"; type: "string"; isReadonly: true }
956+ Property { name: "effectiveDate"; type: "QDateTime"; isReadonly: true }
957+ Property { name: "expiryDate"; type: "QDateTime"; isReadonly: true }
958+ Property { name: "fingerprintSHA1"; type: "string"; isReadonly: true }
959+ Property { name: "isExpired"; type: "bool"; isReadonly: true }
960+ Property { name: "issuer"; type: "QJSValue"; isReadonly: true }
961+ Method {
962+ name: "getSubjectInfo"
963+ type: "QStringList"
964+ Parameter { name: "attr"; type: "PrincipalAttr" }
965+ }
966+ Method {
967+ name: "getIssuerInfo"
968+ type: "QStringList"
969+ Parameter { name: "attr"; type: "PrincipalAttr" }
970+ }
971+ Method { name: "copy"; type: "OxideQSslCertificate" }
972+ Method { name: "toPem"; type: "string" }
973+ }
974+}
975
976=== modified file 'qt/qmlplugin/qmldir'
977--- qt/qmlplugin/qmldir 2014-09-29 20:00:11 +0000
978+++ qt/qmlplugin/qmldir 2015-10-20 07:43:23 +0000
979@@ -1,2 +1,3 @@
980 module com.canonical.Oxide
981 plugin qmloxideplugin
982+typeinfo oxide.qmltypes

Subscribers

People subscribed via source and target branches