summaryrefslogtreecommitdiffstats
path: root/src/webengine/api
Commit message (Collapse)AuthorAgeFilesLines
* Add findText to Quick APIPeter Varga2014-08-072-1/+33
| | | | | Change-Id: Ic0de45c1fe2a5537d61ad446c96fe8fda7c30966 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Get rid of QOpenGLContextPrivate::setGlobalShareContexJocelyn Turcotte2014-08-061-2/+4
| | | | | | | | | | | Manually import qt_(set_)gl_global_share_context from QtGui instead. The binary compatibility of those symbols should be maintained in QtGui, allowing us to avoid depending on private API. Change-Id: I1f954ec10a793c3195d3aec01409dde1bc767d64 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Move the runJavaScript function from experimental to public APIAndras Becsi2014-08-063-10/+11
| | | | | | | This is essential API that should be public. Change-Id: Ifbd86171933936112e2495ebed074faa2e52464d Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Clean up opaque pointer handling for QQuickWebEngineLoadRequestAndras Becsi2014-08-062-20/+30
| | | | | | | | | Hide QObject's d_ptr member and use the macros when accessing the private class. This patch also adds missing qt namespace macros to the implementation. Change-Id: I004e3ea52bf21618835724d218f2a405f77ca4d1 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Add QQuick API for intercepting navigation requestsAndras Becsi2014-08-065-0/+229
| | | | | | | | | | | | Add missing navigationRequested API to be able to intercept navigation requests. This is useful for ignoring requests for example in kiosk-like applications that want to restrinct navigation to a specific url or domain, or want to disable specific types of navigation requests (e.g. reloading, clicking links, form submissions). Change-Id: Ie375e635a3c3566527972d05f5d99b39489c5ca8 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Expose better error information in loadRequest.Pierre Rossi2014-08-041-0/+4
| | | | | | | | | | | | Use the chromium localized error strings for that purpose, otherwise the error description is always empty. While we're at it, let's tap into the chromium error pages, which should hopefully make sense for most errors, and add some static asserts to check that the qt quick enum and the core one are in sync. Change-Id: Icf8fa7c3bf4a674c60a10950422135fb6930447a Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* s/QWebEngine/QtWebEngine/gPierre Rossi2014-08-042-5/+10
| | | | | | | and make it a namespace Change-Id: I15c1af8c7d0d8ab213cdf7945109263fe461d2ac Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Don't inherit from Qt private typesJocelyn Turcotte2014-08-043-5/+9
| | | | | | | | | | | | | Do the d_ptr magic ourselves to avoid having to include private headers from qtcore, qtgui and qtdeclarative. It is hackish to hide QObject's d_ptr member to have the macros working in a public class, but if anything goes wrong we just need to replace the private macro convenience while maintaining the binary compatibility of the stored extra opaque pointer. Change-Id: Idb92f4f902826bef9068a5c2ef6ea31fc3fa15b2 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Don't use the private QQmlMetaType::defaultPropertyJocelyn Turcotte2014-08-011-2/+1
| | | | | | | | | Duplicate the small implementation of that function, which uses QMetaObject public API together with the semi-public fact that the meta class info named DefaultProperty needs to be fetched. Change-Id: I37413bd28a0b0ead55853e4e3db5864dfc39966b Reviewed-by: Michael Bruning <michael.bruning@digia.com>
* Fix tab focus in the widgets and QML webviewsJocelyn Turcotte2014-08-012-12/+0
| | | | | | | | | | | | | | | | | | | | Fixes: - Make sure that we call SetInitialFocus when giving focus through Tab This does the same as would WebContents::FocusThroughTabTraversal - Implement QWebEnginePagePrivate::passOnFocus - Set each new RWHVQtDelegate as the focus proxy of the QWebEngineView - Make sure that the widgets delegate accepts the tab focus policy Cleaups: - RenderWidgetHostViewQtDelegateQuick doesn't need to be a focus scope, it doesn't have any children - We don't need to reimplement QQuickWebEngineView::forceActiveFocus since the view is now a focus scope - Do not explicitly setFocus(true) on the QQuickWebEngineView, the application should decide this through the API Change-Id: I817dc2c895d4fff4aa3536c71ecc5d306bb3bee0 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Don't use the private QQuickItemPrivate::focusNextPrevJocelyn Turcotte2014-08-011-1/+3
| | | | | | | | | | Do what focusNextPrev does internally. Also fix the tab-focus by getting the next item relatively to the delegate (the scopedFocusItem()) instead of the view itself. Change-Id: I0d35a12bd5ef54d69df35b29ccdd55ac2301eec8 Reviewed-by: Michael Bruning <michael.bruning@digia.com> Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Don't use the private QGuiApplicationPrivate::platformIntegration()Jocelyn Turcotte2014-08-011-3/+1
| | | | | | | | Querying the platform names directly will be just as reliable as we are still only supporting a limited number of platforms. Change-Id: I9feba66b6ac23281db4d0ba675cc9a1e5560daea Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Drop 5.2 supportJocelyn Turcotte2014-08-011-5/+0
| | | | | | | We actually already depend on dev (5.4) in other areas. Change-Id: Iab297a51ab06209a96f11f97c74463d38203eda8 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Add loadVisuallyCommitted signal to the experimental Quick APISzabolcs David2014-08-013-0/+16
| | | | | | | | | This fixes the flaky QQuickWebEngineViewGraphics test and extends it with a new test case. Change-Id: I2d8a0762716cb9232fdea6473760e67ac2e7146d Reviewed-by: Andras Becsi <andras.becsi@digia.com> Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Qt Quick based accessibility glue codeFrederik Gladhorn2014-07-263-0/+77
| | | | | | | | With this patch the accessibility hierarchy inside webengine becomes accessible when navigating from Qt Quick based web views. Change-Id: Ic1c8caaa908bd32e4175ee9dcdb7a6bef89818b6 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Add core accessibilityFrederik Gladhorn2014-07-092-0/+7
| | | | | | | | | | | | | | | | This commit adds the basics to bridge the blink accessibility classes to QAccessibleInterfaces. Note that it needs two follow up commits to implement the bridging from the QWidget/Qt Quick worlds. [ChangeLog][Accessibility] QtWebEngine now has accessibility support, enabling assistive technology such as screen readers to work with it. Change-Id: Ied1d97e61a024115ac7a9245331211f6d9fac1b4 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com> Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Fix requests for audio and video permissionsFrederik Gladhorn2014-07-071-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | Requesting MediaAudioCapture would unconditionally ask for QQuickWebEngineViewExperimental::MediaAudioVideoDevices instead of MediaAudioDevices since the if wrongly tested for the same condition twice. In addition fix a warning: variable 'feature' is used uninitialized whenever 'if' condition is false api/qquickwebengineview.cpp:369:13: warning: variable 'feature' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized] else if (requestFlags.testFlag(WebContentsAdapterClient::MediaVideoCapture)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ api/qquickwebengineview.cpp:371:57: note: uninitialized use occurs here Q_EMIT e->featurePermissionRequested(securityOrigin, feature); ^~~~~~~ api/qquickwebengineview.cpp:369:9: note: remove the 'if' if its condition is always true else if (requestFlags.testFlag(WebContentsAdapterClient::MediaVideoCapture)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ api/qquickwebengineview.cpp:364:4: note: variable 'feature' is declared here QQuickWebEngineViewExperimental::Feature feature; ^ Change-Id: If63fbb5a59a71dede1d1829695f66c22849a4dcd Reviewed-by: Michael Bruning <michael.bruning@digia.com>
* Remove the xPath argument from runJavaScriptJocelyn Turcotte2014-05-121-2/+2
| | | | | | | | | | | | | | This value is only used internally by Chromium and risks being removed at anytime, for which we would then have to maintain a downstream implementation. Chromium also only supports frame values, while a complete support of the interface would require also supporting this xPath to point to individual document element by affecting the value of "this", the same way that QWebElement::evaluateJavaScript allowed in QtWebKit. Change-Id: Id0cb1b8e3bdf9a6db0ca786fb5eb46ffd726d165 Reviewed-by: Michael Bruning <michael.bruning@digia.com>
* Append MessageLevel postfix to the JavaScriptConsoleMessageLevel.Michael BrĂ¼ning2014-05-121-3/+3
| | | | | | | This keeps consistency with the other enum names. Change-Id: Idaedb8566fd770b05effeeba377b09a84bf0af12 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Move the WebEngineView.inspectable property to experimentalJocelyn Turcotte2014-05-093-15/+15
| | | | | | | | The property is still not properly implemented and we'll make it first go through the experimental tryout like other APIs we add. Change-Id: I6eb99fcebb7ca1fc33338d786585cfe7fbc0afd4 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Add test_baseUrlAfterLoadHtml QML test caseSzabolcs David2014-05-082-3/+3
| | | | | | | | Remove unreachableUrl support from WebContentsAdapter::setContent, because this argument behaves exactly the same as baseUrl. Change-Id: I36f92b99b7045c6d3b831481bb04d51a0e05772f Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Add linkHovered signal to the QQuickWebEngineViewSzabolcs David2014-05-053-0/+8
| | | | | | | | I dropped hovered title support from the QtWebKit API, it seems we don't need that logic. Change-Id: I5617c295344512a35aa526a6f1307f0b21f866d6 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Simple experimental WebRTC API for QtQuickPierre Rossi2014-04-292-1/+45
| | | | | Change-Id: I18059c2894893d28c03dc790037bdd3ff28cfd07 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Add WebRTC supportPierre Rossi2014-04-291-0/+1
| | | | | | | | | | | | | Reuse the MediaCaptureDevicesDispatcher from the chrome layer, pretty much as is, and wire it in with WebContentsDelegateQt and WebContentsAdapter/WebContentsAdapterClient for API delegation. We also need to ensure that our user agent string mentions Chrome and the Chrome version we're based on, in order to please websites that detect feature support that way. Change-Id: I0ddf8cd34e4add96bc36f59adfe8e0384e728d93 Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Do not assume that the webview only contains RWHV delegatesAndras Becsi2014-04-251-3/+2
| | | | | | | | | | | | | | This fixes an assertion for QML code like: WebEngineView { ... MouseArea { ... } } Change-Id: I7a9bfb801c81ea53c1cc830b44fe224a0b78db2d Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
* Fix how NewPopupDisposition is exposed in QQuickWebEngineViewJocelyn Turcotte2014-04-155-12/+13
| | | | | | | | | | | | | | | | | | I initially misintepreted the meaning of the enum, assuming that it meant that the window should possibly be blocked. The user_gesture parameter in WebContentsDelegate::AddNewContents is actually doing this, while the popup disposition means that JavaScript requested the window to be opened without one of the standard decoration (i.e. status bar, menu bar, tool bar, etc.). Update the QtQuick API to reflect this, renaming the "isPopup" parameter to a more familiar "isUserInitiated". The popup disposition is named "dialog" to match the previous QWebPage::WebModalDialog enum. Change-Id: Ib0c4bc53671fcf0dd9499aa1be2bbc8c494ba49e Reviewed-by: Michael Bruning <michael.bruning@digia.com>
* Map Javascript console message level to enum values.Michael BrĂ¼ning2014-04-143-4/+12
| | | | | | | | Translates the internally used LogSeverity values to enums defined by the QtWebEngine integration layer. Change-Id: I7da0983d4fb5c199e1a2436b5899a43cf6698784 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Remove the RenderWidgetHostViewQtDelegateQuickBase templateJocelyn Turcotte2014-04-081-3/+2
| | | | | | | We now only have a QQuickItem subclass and this isn't needed anymore. Change-Id: I3a10943e54f52d1554dc76ccc1841aaacd5171e2 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Get rid of the BackingStore rendering pathJocelyn Turcotte2014-04-082-27/+13
| | | | | | | | | Now that the widgets view is also using the delegated renderer, there are no supported configuration that use the BackingStore rendering path, itself on the way of deprecation in Chromium. Change-Id: I4ab889f6a7c65e8447c259faf2c7a98b88c1acf5 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Render the widgets view using the scene graph into a QOpenGLWidgetJocelyn Turcotte2014-04-081-3/+9
| | | | | | | | | | | | | | | This means that widgets application now need to setup the GL context sharing as well. QWebEngineWidgets::initialize() must be called, which has the same effect as QWebEngine::initialize(). The QtWebEngineWidgets now depends on the QtWebEngine module to make this happen. Since QOpenGLWidget is only available in Qt 5.3, this patch also disables the webenginewidgets module completely when building using Qt 5.2. Change-Id: I0e99a779d1eb080f2ccf5a338ff0763ad64e6eba Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Revert part of the RenderWidgetHostViewQtDelegate refactoringJocelyn Turcotte2014-04-082-2/+9
| | | | | | | | | | | This reverts parts of commit 9c198939be1ef064d1a2430a4b9991f2fe16f359. This does keeps the popup fixes and removes support for QWebEnginePage::setViewportSize and QWebEnginePage::render until we can evaluate the needs vs the cost of such feature. Change-Id: I1b55b751d463717b1462393ea8cd353422f8fdbb Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Fix reseting of the quick history list modelPeter Varga2014-04-034-11/+10
| | | | | | | With this fix the quick history list is updated like in the widget API. Change-Id: I19127a0055a3f1ab8a04da63d847249f6c4c23d9 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Make WebUI popups work with QtQuickPierre Rossi2014-04-022-3/+30
| | | | | | | | | | | | | This is used by popups for select elements and date pickers among other things. We can keep using the same RenderWidgetHostViewQtDelegate implementations for that purpose, and query QPA to decide if they should be wrapped into their own QQuickWindow. Longer term, we might want to optionally delegate that functionality to QML. Change-Id: I88540ca32a9a707d380dfbf486b7f7806b5b65ff Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Centralize OpenGL initializationSimon Hausmann2014-03-312-0/+81
| | | | | | | | | | We now require the user to use QWebEngine::initialize() in main (preferably) and print out an error message if this wasn't set up accordingly. This limits the use of private scene graph API to inside QWebEngine and offers public API for users of the API. Change-Id: I787c176a85ab7784dbc8787d9876960b4872959e Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Fix QQuickWebEngineForwardHistoryListModelPeter Varga2014-03-281-1/+1
| | | | | | | | | | The index calculation was wrong for the history items in the forward list model: model contained the current item too. Test has been added for check the previous and next element in the back and forward lists. Change-Id: I0e05881f05b67752e47b01236ffb9636d31a7dc2 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Fix typo: remove unused function prototype from headerPeter Varga2014-03-281-1/+0
| | | | | Change-Id: Icd56b33c9bd3fe0f906f5ea6257713ab509ba33d Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Fix typo in the qquickwebenginehistory headersAndras Becsi2014-03-272-2/+2
| | | | | | | hisOTry -> histTOry Change-Id: I4744721bbd50a76054e38de9578f1f27e92982db Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Base load signals on Blink loader eventsJocelyn Turcotte2014-03-212-14/+9
| | | | | | | | | | | | | | | | | | | | | | | | This mainly remove the use of the LoadingStateChanged callback, which is tied to DidStartLoading and DidStopLoading. Those signals are handled from the browser process side, also wrapping the time where the render process is initialized. We can't rely on those signals for loadStarted, but afterward rely on the Blink loader for loadFinished. We must use the same source for both. Instead only rely on Blink callbacks ultimately related to network events. This gives us a behavior closer to QtWebKit. The major compromise that this forces us to to accept is that loadStarted is now triggered asynchronously. This will basically break anything expecting loadStarted to be emitted synchronously from the load method. This also adjust autotests to get a few more passing. Initial-patch-by: Pierre Rossi <pierre.rossi@digia.com> Change-Id: Ib6c0170df891d1b7f8ed4dc1d483985523e267dc Reviewed-by: Pierre Rossi <pierre.rossi@gmail.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Add Quick's navigationHistoryPeter Varga2014-03-205-0/+432
| | | | | | | | Add QQuickWebEngineHistory and list models providing API for the quick's navigationHistory. Change-Id: Ia86c94b120cc5d0b4757fc62386fc7a0dcb3e341 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Fix focus in Quick APISzabolcs David2014-03-132-7/+17
| | | | | | | | | | | | | | | The forceActiveFocus() doesn't work in the QML tests. We need to call forceActiveFocus() in RenderWidgetHostViewQtDelegateQuick instead of the one in WebEngineView. To make this work, I replaced RWHV with QQuickWebEngineView in the focus chain. This is necessary in order to extend tst_loadUrl QML test with urlProperty test case. Change-Id: Ifba0c824a7ce9f00d328110233402d3563f967aa Reviewed-by: Zeno Albisser <zeno.albisser@digia.com> Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Add HTTP and proxy authentication signals directly to QWebEnginePageJocelyn Turcotte2014-02-281-0/+1
| | | | | | | | | | | | | | | | | | This allows handling calls that would be signaled by QNetworkAccessManager in QtWebKit. This pulls QtNetwork as a dependency of the QtWebEngineWidgets module to be able to use QAuthenticator, but isn't required otherwise. Only the request URL is available in the case of HTTP authentication (no access to HTTP request headers that the QNetworkReply would allow) and only the proxy host name in the case case of proxy authentication. This keeps the API synchronous the same way, as QtWebKit did, in favor of source compatibility at the cost of requiring a modal dialog, even though the implementation doesn't require it. Change-Id: I9e021def38e6107c9e66d2de8f86bd0328d543df Reviewed-by: Michael Bruning <michael.bruning@digia.com>
* Fixing QQuickWebEngineView.loadingChanged public API test caseAdam Kallai2014-02-253-12/+12
| | | | | | | | | Rename QQuickWebEngineView.loadingStateChanged signal name to QQuickWebEngineView.loadingChanged. Change-Id: I0e01034f7b2eea57f5211ff0d8258d9f27d278f0 Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu> Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* QtQuick: add runJavaScript.Pierre Rossi2014-02-192-3/+22
| | | | | | | | | | | Much like the widgets version. This should be helpful to start testing QWebChannel integration. Includes a very basic autotest that checks both approaches (with or without callback) through the view's title property. Change-Id: Id9c3e3736f36d53cecf1dd52e8811c4b921dcf08 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* Build fix for public API testSzabolcs David2014-02-182-2/+1
| | | | | | | | Patch by Jocelyn Turcotte This fixes the inclusion of private headers. Change-Id: I490336ac30571bf292d88e2747102c75027b8dc6 Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Make Qt 5.2 a minimum requirementPierre Rossi2014-02-141-7/+2
| | | | | | | | Cleanup version ifdefs and v8-private dependencies. Change-Id: Iac393c06dfba02499e60d713d9f4d04ef0c9e617 Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com> Reviewed-by: Andras Becsi <andras.becsi@digia.com>
* Implement QWebEnginePage::findTextJocelyn Turcotte2014-02-131-0/+1
| | | | | | | | | | | | | | | | | | | A few changes to the API: - Return the success result asynchronously. - FindWrapsAroundDocument and HighlightAllOccurrences are enabled by defaults and cannot be disabled. - Found text isn't updating the selection on the page like QtWebKit did, but triggers a separate state not available. A find count and current index could be exposed, but isn't in this case to keep the API delta lower. This also adds the possibility to pass bool results through the CallbackDirectory and add a new tst_QWebEnginePage::findTextResult test since the old test relied on the selection to be updated when the searched text is found. Change-Id: I8189b5aea8d832df183c6c1ae03e3f08198a9c45 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Implement QWebEnginePage::selectedTextJocelyn Turcotte2014-02-131-0/+1
| | | | | Change-Id: Idebde8da0befbea7ccc5942de1e09fcc61ce16d4 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Move the requestID argument before the resultJocelyn Turcotte2014-02-131-3/+3
| | | | | | | | | | This tries to get the order of declaration to be consistent. It also follows the order used by Chromium in some places where the routing_id usually comes first, then the request_id and then the result of the asynchronous request. Change-Id: I88e164dee67e1631161a222f7dd7a4679c3d3acd Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* QQuickWebEngineView new window API refactoringJocelyn Turcotte2014-02-135-81/+192
| | | | | | | | | | | | | | | | | | | | Improve the code and API in a few ways: - Expose a more discoverable "request" argument in the signal. - Use the request as the carrier of the backend WebContentsAdapter and get rid of our handle. - Put the adoption method (renamed to openIn) on the request object and keep the view API clean of a context-specific adoptHandle method. - Use an enum instead of strings for the new view destination. - Do not let JavaScript own the request object since it won't be necessary until we want to support asynchronous view attachment. We can create the request object on the heap and let the JavaScript engine own the object once we want to support it. - Move the request class to its own header. - Replace tabs.currentView by currentWebView in the quicknanobrowser qml code since we now need this property on the root object anyway. Change-Id: I40d7d15255f516ead9f3e414dd587bf345e6ca4b Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* Fix the new window crashJocelyn Turcotte2014-02-121-1/+1
| | | | | | Task-number: QTBUG-36472 Change-Id: I60267d6b9e2e99b20ddf604a0d6b0d8f2c8f1b27 Reviewed-by: Andras Becsi <andras.becsi@digia.com>