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