Add test for qml plugin.
Simple test. No asserts. If broken should segfault
This commit is contained in:
parent
96b4196d58
commit
aea22e98b9
4 changed files with 132 additions and 0 deletions
60
tests/QtWebKit/qml_plugin_test.py
Normal file
60
tests/QtWebKit/qml_plugin_test.py
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
from PySide.QtCore import QUrl, QTimer
|
||||||
|
from PySide.QtGui import QApplication, QLabel
|
||||||
|
from PySide.QtWebKit import QWebPluginFactory, QWebView, QWebSettings
|
||||||
|
|
||||||
|
from helper import UsesQApplication
|
||||||
|
|
||||||
|
class PluginFactory(QWebPluginFactory):
|
||||||
|
|
||||||
|
def plugins(self):
|
||||||
|
plugins = []
|
||||||
|
|
||||||
|
mime = self.MimeType()
|
||||||
|
mime.name = 'DummyFile'
|
||||||
|
mime.fileExtensions = ['.pys']
|
||||||
|
|
||||||
|
plugin = self.Plugin()
|
||||||
|
plugin.name = 'DummyPlugin'
|
||||||
|
plugin.mimeTypes = [mime]
|
||||||
|
|
||||||
|
plugins.append(plugin)
|
||||||
|
|
||||||
|
return plugins
|
||||||
|
|
||||||
|
def create(self, mimeType, url, argumentNames, argumentValues):
|
||||||
|
if mimeType != 'application/x-dummy':
|
||||||
|
return None
|
||||||
|
|
||||||
|
for name, value in zip(argumentNames, argumentValues):
|
||||||
|
if name == 'text':
|
||||||
|
text = value
|
||||||
|
else:
|
||||||
|
text = "Webkit plugins!"
|
||||||
|
|
||||||
|
widget = QLabel(text)
|
||||||
|
return widget
|
||||||
|
|
||||||
|
class TestPlugin(UsesQApplication):
|
||||||
|
|
||||||
|
def testPlugin(self):
|
||||||
|
view = QWebView()
|
||||||
|
fac = PluginFactory()
|
||||||
|
view.page().setPluginFactory(fac)
|
||||||
|
QWebSettings.globalSettings().setAttribute(QWebSettings.PluginsEnabled, True)
|
||||||
|
|
||||||
|
view.load(QUrl('./qmlplugin/index.html'))
|
||||||
|
|
||||||
|
view.resize(840, 600)
|
||||||
|
view.show()
|
||||||
|
|
||||||
|
QTimer.singleShot(500, self.app.quit)
|
||||||
|
|
||||||
|
self.app.exec_()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
1
tests/QtWebKit/qmlplugin/dummy.pys
Normal file
1
tests/QtWebKit/qmlplugin/dummy.pys
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Foobar!
|
||||||
5
tests/QtWebKit/qmlplugin/index.html
Normal file
5
tests/QtWebKit/qmlplugin/index.html
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
<html><body>
|
||||||
|
<h1>Custom Plugin</h1>
|
||||||
|
<object type="application/x-dummy" data="./dummy.pys" text="My text">
|
||||||
|
</object>
|
||||||
|
</body></html>
|
||||||
66
tests/QtWebKit/qmlplugin/main.py
Normal file
66
tests/QtWebKit/qmlplugin/main.py
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
|
||||||
|
'''QML PLugin for WebKit.
|
||||||
|
|
||||||
|
Adapted from QtLabs[1].
|
||||||
|
|
||||||
|
Usage: python main.py index.html
|
||||||
|
|
||||||
|
[1] http://blog.qtlabs.org.br/2011/05/30/transformando-o-qml-no-proximo-flash/
|
||||||
|
'''
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from PySide.QtCore import QUrl
|
||||||
|
from PySide.QtGui import QApplication
|
||||||
|
from PySide.QtDeclarative import QDeclarativeView
|
||||||
|
from PySide.QtWebKit import QWebPluginFactory, QWebView, QWebSettings
|
||||||
|
|
||||||
|
class PluginFactory(QWebPluginFactory):
|
||||||
|
|
||||||
|
def plugins(self):
|
||||||
|
plugins = []
|
||||||
|
|
||||||
|
mime = self.MimeType()
|
||||||
|
mime.name = 'QmlFile'
|
||||||
|
mime.fileExtensions = ['.qml']
|
||||||
|
|
||||||
|
plugin = self.Plugin()
|
||||||
|
plugin.name = 'QmlPlugin'
|
||||||
|
plugin.mimeTypes = [mime]
|
||||||
|
|
||||||
|
plugins.append(plugin)
|
||||||
|
|
||||||
|
return plugins
|
||||||
|
|
||||||
|
def create(self, mimeType, url, argumentNames, argumentValues):
|
||||||
|
if mimeType != 'application/x-qml':
|
||||||
|
return None
|
||||||
|
|
||||||
|
for name, value in zip(argumentNames, argumentValues):
|
||||||
|
if name == 'width':
|
||||||
|
width = int(value)
|
||||||
|
elif name == 'height':
|
||||||
|
height = int(value)
|
||||||
|
|
||||||
|
view = QDeclarativeView()
|
||||||
|
view.resize(width, height)
|
||||||
|
view.setSource(url)
|
||||||
|
|
||||||
|
return view
|
||||||
|
|
||||||
|
def main():
|
||||||
|
|
||||||
|
app = QApplication([])
|
||||||
|
|
||||||
|
view = QWebView()
|
||||||
|
fac = PluginFactory()
|
||||||
|
view.page().setPluginFactory(fac)
|
||||||
|
QWebSettings.globalSettings().setAttribute(QWebSettings.PluginsEnabled, True)
|
||||||
|
|
||||||
|
view.load(QUrl(sys.argv[1]))
|
||||||
|
|
||||||
|
view.resize(840, 600)
|
||||||
|
view.show()
|
||||||
|
|
||||||
|
return app.exec_()
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
Loading…
Add table
Add a link
Reference in a new issue