aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLauro Neto <lauro.neto@openbossa.org>2011-08-08 15:20:24 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:54:42 -0300
commita8e05ed6fe93de2480b82961036353421a7677af (patch)
treefb38d65dadf39e19033f5872e7123603b7ca8bcf
parent9a78c19fb889534d96a437c86e9f2c72291b592b (diff)
Add test for qml plugin.
Simple test. No asserts. If broken should segfault
-rw-r--r--tests/QtWebKit/qml_plugin_test.py60
-rw-r--r--tests/QtWebKit/qmlplugin/dummy.pys1
-rw-r--r--tests/QtWebKit/qmlplugin/index.html5
-rw-r--r--tests/QtWebKit/qmlplugin/main.py66
4 files changed, 132 insertions, 0 deletions
diff --git a/tests/QtWebKit/qml_plugin_test.py b/tests/QtWebKit/qml_plugin_test.py
new file mode 100644
index 000000000..607b88f9b
--- /dev/null
+++ b/tests/QtWebKit/qml_plugin_test.py
@@ -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()
diff --git a/tests/QtWebKit/qmlplugin/dummy.pys b/tests/QtWebKit/qmlplugin/dummy.pys
new file mode 100644
index 000000000..0b7469da4
--- /dev/null
+++ b/tests/QtWebKit/qmlplugin/dummy.pys
@@ -0,0 +1 @@
+Foobar!
diff --git a/tests/QtWebKit/qmlplugin/index.html b/tests/QtWebKit/qmlplugin/index.html
new file mode 100644
index 000000000..db0d6b5b2
--- /dev/null
+++ b/tests/QtWebKit/qmlplugin/index.html
@@ -0,0 +1,5 @@
+<html><body>
+ <h1>Custom Plugin</h1>
+ <object type="application/x-dummy" data="./dummy.pys" text="My text">
+ </object>
+</body></html>
diff --git a/tests/QtWebKit/qmlplugin/main.py b/tests/QtWebKit/qmlplugin/main.py
new file mode 100644
index 000000000..62e83d36c
--- /dev/null
+++ b/tests/QtWebKit/qmlplugin/main.py
@@ -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()