aboutsummaryrefslogtreecommitdiffstats
path: root/tests
Commit message (Collapse)AuthorAgeFilesLines
...
* | qv4arrayobject: Implement Array.prototype.copyWithin as per ES7Robin Burchell2018-05-301-25/+0
| | | | | | | | | | | | | | The remaining two failures are due to Proxy being missing. Change-Id: I6cc5177cd958d98600cc2ba3b1e1a18bc420530c Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Fail early if process crashes in QQmlProfilerService testUlf Hermann2018-05-301-0/+2
| | | | | | | | | | | | | | | | There is no point in waiting for a different exit status if we already know that the process has crashed. Change-Id: I9a5129bb4310a851d3852291374ea2de23ef04b1 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Fix language change support for qsTr in ListElementSimon Hausmann2018-05-282-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We must store translations by binding reference in order to support translation changes. This is similar to commit db15c3455971f47b86078a44a30e0f0a13b54204. [ChangeLog][QtQml] Fix QQmlEngine::retranslate() with ListElement objects that use translation functions such as qsTr. Task-number: QTBUG-68350 Change-Id: Ie5b4d5beb0505a260b524da820c0ce1142893d54 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | The first branch in a ( ? : ) operator can always include the in keywordLars Knoll2018-05-281-1/+0
| | | | | | | | | | | | | | Fix the grammar to be compliant with the spec in this case. Change-Id: I5740c9427db6f5c6c2551d4e23f1f14070e497fb Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
* | Implement toPrimitive() the way the ES7 spec wants itLars Knoll2018-05-281-33/+0
| | | | | | | | | | | | | | | | Add Dat.prototype[Symbol.toPrimitive] and make use of those methods in the toPrimitive implementation. Change-Id: I82a9a94dcae6822100de364373b3f4de1e3d749b Reviewed-by: Robin Burchell <robin.burchell@crimson.no>
* | TableView: switch to use TableView.cellWidth/cellHeightRichard Moe Gustavsen2018-05-285-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This is logically more correct since TableView will override width / height anyway to make the delegates fit into the table if they are not as wide/tall as the widest column/row. And it gets even more problematic when we recycle delegates, since in that case we need to keep the original width binding of the delegate to calulate the size of new columns. And this all fits better by using attached properties instead. Change-Id: Ia5f2acd2bfc45f3fb160c3782191ad8da9f780e6 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: J-P Nurmi <jpnurmi@qt.io>
* | qv4arrayobject: Implement Array.of from ES7Robin Burchell2018-05-271-12/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | One small difficulty: We can't accurately tell whether a thisObject is a constructor or not, so right now we're just swallowing all exceptions and creating an array if they occur. This isn't correct, but it isn't trivial to fix, either: I think we would have to somehow mark our builtins that are constructors, and allow those, but use the array fallback for other builtins, calling user functions and bubbling up if they throw. This is probably good enough for the time being though, as writing something like: function Test() { throw "Foo"; } Array.of.call(Test) ... is probably not very likely, compared to more "usual" use. Change-Id: Ied341a7fa9c3a7fd907e2815c019bc431171ce62 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | Fix multi line string literals using backquotesLars Knoll2018-05-261-0/+12
| | | | | | | | | | | | Task-number: QTBUG-67476 Change-Id: Ia8c6863ad35c8a92298e5dffd750d17628200573 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devQt Forward Merge Bot2018-05-263-224/+286
|\| | | | | | | Change-Id: I626068886d4440b569dbeb1789b1ebfa480000c5
| * QML Debugger: Don't crash when encoding JSON dataUlf Hermann2018-05-251-1/+62
| | | | | | | | | | | | | | | | | | Apparently QVariant::save cannot deal with QJsonObject and friends. Transform them into QVariants before sending them over the wire. Task-number: QTBUG-68474 Change-Id: I8fc9fade4915c2b40f8d16aea51ea6ff65247dc1 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Fix crash when modifying list model in worker threadSimon Hausmann2018-05-241-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If we call get() on a model in a worker thread, we may end up creating a ModelNodeMetaObject (aka cacheObject). Subsequent mutation of properties may make us end up in emitDirectNotifies(). However since we can't have bindings in there, we should shortcut/suppress the notify emission, which we can do by checking ddata->context via qmlEngine(). The previous code crashed when qmlEngine() return a null pointer but QQmlEnginePrivate::get(const QQmlEngine *) would attempt to dereference the parameter. Started-by: Slava Monich<slava.monich@jolla.com> Change-Id: I880619c686436c053692faafa5dba2c96c2ace96 Reviewed-by: Robin Burchell <robin.burchell@crimson.no> Reviewed-by: Slava Monich <slava.monich@jolla.com>
| * tst_gradient.qml: fix warnings about multiple var declarationsMitch Curtis2018-05-241-115/+115
| | | | | | | | | | Change-Id: Iccfb86de6f8c14d10fcf12e1b7cbd58a13754aa7 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * tst_gradient.qml: fix warnings about type coercionMitch Curtis2018-05-241-108/+108
| | | | | | | | | | Change-Id: Ic3ab7cb4fa1772a0d92c06285f9cddf3378bd411 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | qv4arrayobject: Implement Array.prototype.includes from ES7Robin Burchell2018-05-251-20/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We also add a sameValueZero helper, to make life easier. Remaining failures: built-ins/Array/prototype/includes/get-prop.js fails (due to missing Proxy) built-ins/Array/prototype/includes/length-boundaries.js fails length-boundaries failure is due to strange treatment of edge number values in Value, I think, I haven't yet been able to rectify that one. Change-Id: Idacca528d88fb052d19a5d244662927f502f20d2 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | qv4arrayobject: Implement Array.prototype.fill according to ES7Robin Burchell2018-05-251-13/+0
| | | | | | | | | | | | Task-number: QTBUG-56824 Change-Id: Ib12b9fe5ebdd5375f17cf4927eb9b4e292731932 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | TableView: check if the model can produce items before loadingRichard Moe Gustavsen2018-05-252-0/+45
| | | | | | | | | | | | | | | | | | | | If you assign a non-empty model, the model can still return a count of zero if something else is amiss, like the delegate being null. So we need to do en extra check for this before we load the first top-left item, otherwise we'll hit an assert later in the loading process. Change-Id: I747868faf7955b8784b2957505ae03e5b1aa0b45 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Implement Object.is and Object.getOwnPropertySymbolsLars Knoll2018-05-241-24/+0
| | | | | | | | | | Change-Id: Id64f91f6bf1abbcfa28590a43fb4f8673db6730b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Fix the inheritance structure for typed arraysLars Knoll2018-05-241-124/+0
| | | | | | | | | | Change-Id: I8a16c1f5e0252b4ea85ff8f623beb39df747e383 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Fix JSON[Symbol.toStringTag]Lars Knoll2018-05-241-1/+0
| | | | | | | | | | Change-Id: I33c29cc4d023be4ee996a4dc1fb4356da59e60d6 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Fix Function.prototype.nameLars Knoll2018-05-241-1/+0
| | | | | | | | | | Change-Id: I2ace040cc8f65d34412909bf677252b097ab0aa3 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Fix the length property of various functionsLars Knoll2018-05-241-32/+0
| | | | | | | | | | Change-Id: Ic782c8c9e211db25ac9e51840957db72ac1116fb Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devLars Knoll2018-05-2418-3/+209
|\| | | | | | | Change-Id: I0127f2c16de1d930bdd8cbccd42ec6785f31ab96
| * V4 debugger: Allow retrieval of non-CallContext scopesUlf Hermann2018-05-233-1/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We need to encode the scope type properly and we need to return something from the "scope" command. Previously the client didn't even get notified about QML contexts and couldn't actually retrieve anything but call context. The other scope types are not terribly interesting right now, but at least for the global context it should be possible to provide more data in the future. Task-number: QTBUG-68218 Change-Id: I88d3dbc15a93f19b00f6f12365e4fb64ec78862e Reviewed-by: hjk <hjk@qt.io> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * On network redirects, update finalUrl, not urlUlf Hermann2018-05-237-1/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We want all further imports to be relative to the redirected URL, not the base one. Note that this will incorporate any prior URL interceptions into the final URL if a redirect happens. We don't really want this to happen because the result of interception is not meant to be the base for further URL lookup. However, as interception occurs before redirection, this is unavoidable. Don't use URL interceptors on remote URLs. Task-number: QTBUG-67882 Change-Id: I2717bdd4de119ac67caa08fdccc041432025abff Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Fix crash when incubating objects with non-existent initial propertiesSimon Hausmann2018-05-233-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When incubation is triggered from C++ and reaches the state of setting the initial properties (as supplied to incubateObject), we'd set engine->currentStackFrame to a CppStackFrame that provides access to the correct QML context. As we're not called from the interpreter, the v4Function pointer would be a null pointer. If during the initial property setting an exception is thrown (due to non-existent property access) and a back-trace is created, we'd end up dereferencing v4Function. Change-Id: I7f6b0ba7893bfb4186f55d4c213b4bb602d29aa0 Task-number: QTBUG-68416 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
| * Fix crash when modifying objects used as prototypesLars Knoll2018-05-231-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changing the prototype of an object back and forth leads to a 'cyclic' reference in the internal class transition tables. If one of those objects then gets a new property, we would get an infinite stack recursion trying to update the internal class IDs of the classes using this prototype. Fixed by skipping protochanges and vtable changes in the update code. That's ok, as those classes will always be reached through other paths from the empty class. Task-number: QTBUG-68369 Change-Id: Ie54ca5171a92f8e8b146a91376e435478ff70185 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * Ensure we restore QML-defined enumsMichael Brasser2018-05-233-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | This code path was previously missed, leading to some AOT-compiled types generating errors of the form: Unable to assign [undefined] to int [ChangeLog][QtQml] Fix QML declared enums with CONFIG+=qtquickcompiler. Change-Id: Ib46a2b2505aa3863f091a6ccdebf8425e62fc38f Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
| * tst_qquickanimatedsprite: add all QML files to OTHER_FILESMitch Curtis2018-05-161-1/+1
| | | | | | | | | | | | | | Makes it easier to open them via the locator, for example. Change-Id: I8a5a0beba315da25b14bf2d519974e175f39567f Reviewed-by: Andy Nichols <andy.nichols@qt.io>
* | TableView: load and unload edges in the same loopRichard Moe Gustavsen2018-05-232-0/+141
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Normally when you flick the table around, a column (row) will be flicked out of view on one side, while another column will be flicked in and loaded on the opposite side. But if you flick really fast, you sometimes manage to flick in and out several columns in one go before tableview gets an updatePolish call to catch up. In the latter case, we would then first unload all flicked-out columns, and then afterwards continue loading all flicked-in columns. This approach is currently not a big problem, but it will be once we start recycling delegate items. Because then we should take care to not overflow the pool with unloaded column items, since the pool will most likely have a maximum size. So we therefore change the algorithm a bit so that we always alternate between unloading and loading one column at a time, rather than unload several columns in one go before we start loading new ones. Change-Id: Ia0f1968a4b3579e4445e1f7b6e68a28a1d2b360b Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | TableView: fall back to use default column/row sizeRichard Moe Gustavsen2018-05-232-2/+30
| | | | | | | | | | | | | | | | | | | | | | | | If we cannot determine the size of a row or column, we need to fall back to some size other than 0 while layouting. The reason for this is that we fill up with as many rows and columns that fits inside the viewport. But if e.g the width of column is zero, we will never make any progress, and therefore just keep loading and loading columns. Change-Id: I96ea410dc5a75831e44c2924172254634598b680 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Implement Object.setPrototypeOf()Lars Knoll2018-05-231-5/+0
| | | | | | | | | | Change-Id: I4488ea4855a52bc7fd386d2eec8c35def83f2785 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Fixup the throwTypeError internal functionLars Knoll2018-05-231-4/+0
| | | | | | | | | | | | | | Make the function conform to section 9.2.7.1 of the spec. Change-Id: Ieb3295198f407d4404e06a54efb51a8b8496bbd7 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Implement String.prototype.padEnd/padStartLars Knoll2018-05-231-20/+0
| | | | | | | | | | Change-Id: I3ff082fd2d7764f87dd079901750fe668f553521 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Implement String.prototype.normalizeLars Knoll2018-05-231-9/+0
| | | | | | | | | | Change-Id: Ic018606ddb92772705bbb06aaed07722827737ea Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Print function identifier when calling toString() on a functionMitch Curtis2018-05-232-1/+28
| | | | | | | | | | | | Task-number: QTBUG-50669 Change-Id: Ia0e9491b12ca1db1da2bfa8eb5ca8bbe4658f699 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Add QQuickHandlerPoint::modifiers propertyShawn Rutledge2018-05-181-2/+3
| | | | | | | | | | | | | | | | | | The event includes it; this exposes it to QML, for the benefit of conditional JS logic in Pointer Handler use cases. Task-number: QTBUG-68101 Change-Id: I3f04c5db7f5aef461edb6168922b70e3fb3bda37 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
* | MultiPointHandler: add a centroid propertyShawn Rutledge2018-05-182-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | One of the reasons we were so fond of using SinglePointHandler for the "simple" handlers like TapHandler and DragHandler is that it has the point property, which is easy to bind to in QML. But multi-point handlers tend to use the centroid as the focal point or fulcrum of the transformation, so exposing the centroid as a QQuickHandlerPoint gadget rather than just a QPointF has all the same advantages as the point property in SinglePointHandler, including letting the QQuickHandlerPoint instance store state between events (press position, grab position, last known position etc.) Change-Id: I4a955fa21b54b7ebb50b0ee2c942fb98eeccb560 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
* | Allow partial creation of more than 10 QQmlComponent instancesRichard Weickelt2018-05-181-0/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The recursion detection in QQmlComponent erroneously triggered when calling beginCreate() on >= 10 different instances. This may happen by intention and is not necessarily a sign of recursion. Since beginCreate() does never invoke a potentially nested Qt.createComponent(), but completeCreate() does, it is better to modify the creationDepth counter in completeCreate(). This also leads to simpler code. The test, however, can remain in beginCreate(). Task-number: QTBUG-47633 Change-Id: If413a8b08421d321d6a426ec16600996cb3f6ea1 Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au> Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Fix race condition in async image response handlingSimon Hausmann2018-05-171-0/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It may happen that the finished() signal is emitted from a super quick image loading thread in the implementation before we had a chance to connect to the signal in Qt Quick. In that case, record the emission through a private connection established in the constructor. The unit test simulates this scenario by emitting the signal before returning the object, but in a real world scenario it may happen that the response object is used in a separate thread that ends up emitting the signal. That may also happen before the thread that will try to connect to the signal runs. Task-number: QTBUG-59601 Change-Id: I14de9719db47f4bca2e8a2c6659343cfb4deb526 Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
* | Remove bindings that have no dependenciesSimon Hausmann2018-05-163-2/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After the initial enabling of a binding we can quickly determine if there is a chance whether this binding will be re-evaluated again in the future as a consequence of dependency changes (properties or translations). If that is not the case, then we can save memory by removing that binding again. One implementation consequence of this change is that such constant bindings used with the "when" property of states require a proper reference count increase, which was previously implicit through the binding association with the target object. In tst_qqmlecmascript a test that verifies that we don't create run-time bindings for assignments of literal "null" to QObject pointer properties now also covers the more complex case where we don't know the property at parse time. We still evaluate the binding once though and perform one property assignment. Similarly on the QtQuick Designer Support API test side a binding such as x: Math.max(0, 200) will not create a persistent binding anymore and needs a tweak to remain. On a large scale application this optimization saved up to 5% of all bindings on start-up (~9000 of ~180000). On Linux x86-64 one binding is approximately 144 bytes, so the savings are in the range of ~1.2 MB of heap, as well as reduced fragmentation. Task-number: QTBUG-64541 Change-Id: Id3653008346fdf36611f5b4c4e82f5f78b5319aa Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | TableView: ensure we don't update viewport rect while loading edgesRichard Moe Gustavsen2018-05-161-0/+144
| | | | | | | | | | | | | | | | | | | | | | Flickable will change the viewport recursively while we're loading/unloading rows/columns. This will confuse TableView and might cause it to freeze. The correct time to update the internal viewport rect is from inside updatePolish(), where we have better control over the current state. Change-Id: I94f964b8b0f6920ffe31cedd7a461f3853998be3 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* | Implement String.fromCodePointLars Knoll2018-05-151-9/+0
| | | | | | | | | | | | | | And add a zero termination in String.fromCharCode. Change-Id: Id86b9e35bfbf2e41f3a461d7b8f4c108df30f741 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Implement String.prototype.codePointAtLars Knoll2018-05-151-11/+0
| | | | | | | | | | Change-Id: I30f19d750ee4cde767912c87bbc53d3abc0f6bb5 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Implement Symbol.species getter functionsLars Knoll2018-05-151-12/+0
| | | | | | | | | | Change-Id: I18b3e382e679f95d7cb53b4ed03be2513ea0204b Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Move a couple more tests into the 'wont fix' categoryLars Knoll2018-05-151-7/+7
| | | | | | | | | | | | | | | | Those tests also rely on 'let' not being a keyword, a feature that we won't implement. Change-Id: I508474cfb30a22c65fba0a7492fb5f8a90893536 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
* | Merge remote-tracking branch 'origin/5.11' into devLiang Qi2018-05-156-0/+70
|\| | | | | | | | | | | | | Conflicts: src/qml/qml/qqmltypeloader.cpp Change-Id: If9874faf23e813b05ee4cf042133a528d73ba72a
| * Fix bug where Ungrab event was not sentJan Arve Sæther2018-05-111-0/+41
| | | | | | | | | | | | | | | | | | | | | | | | clearGrabbers() will also clear QQuickWindow::mouseGrabberItem(), so we have to retrieve a copy of the mouse grabber item in advance of calling clearGrabbers(). This could happen when a filtering parent actually called grabMouse() on mouse release(!) event. Change-Id: I287214dbdff802707be625d73c38dd9c5d723aef Task-number: QTBUG-68030 Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
| * Fix .import within .js files with CONFIG+=qtquickcompilerSimon Hausmann2018-05-115-0/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When loading a .js file without QQC, we scan the sources and use the ScriptDirectivesCollector to extract things like .pragma library or .import ahead of time. That information is passed on to the compilation unit generator for serialization. When compiling .js files ahead of time, we also used the same collector, but we forgot to save the data into the right location before serialization, so we essentially lost the imports. This patch fixes that by centralizing this code into the ScriptDirectivesCollector itself. [ChangeLog][QtQml] Fix regression with .import in .js files not working when using CONFIG+=qtquickcompiler. Change-Id: I5413c14b1b8bd3114a997011534fe55cdb7634aa Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | v4: add the remaining Math.log functionsShawn Rutledge2018-05-151-12/+0
| | | | | | | | | | | | | | We only had natural log, now we have base 2 and base 10 and log1p. Change-Id: I26e3a50a27821671cf2fb4ed3905a357c23bbecc Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* | TableView: remove using a floatingPointMarginRichard Moe Gustavsen2018-05-152-2/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The floatingPointMargin was added at an early stage to avoid that we ended up in a locked situation where we loaded and unloaded the same edge continuously without being able to exit the loading loop. This was done wrongly because we didn't take spacing into account in QQuickTableViewPrivate::canLoadTableEdge (spacing was usually one pixel, coincidentally the same as the floatingPointMargin). This has now been fixed in a previous patch, so we can remove the faulty floatingPointMargin as well. Change-Id: I3caa7808298a1954a3c02f609bad98c3c2c2426a Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>