Artur [Fri, 11 Aug 2017 13:07:51 +0000 (16:07 +0300)]
Do not wait for icons to load before interacting with a combo box (#9717)
Icon load detection code does not handle error events so broken images
will cause tests to fail forever. In other cases also, it seems very
rare to need icons to be loaded before interacting with a combo box. If
there really are use cases for this, it would be better to have a method
to query if all icons are loaded so that special tests can use this method.
Henri Sara [Fri, 11 Aug 2017 08:09:58 +0000 (11:09 +0300)]
Make CurrentTimeMillisTest more stable (#9812)
Sometimes Chrome reports 1ms for very short times to thwart
timing attacks, and sometimes Firefox seems to report 0ms. Make
the test accept these special cases.
Add support for PhantomJS 2 which does support high res time.
Henri Sara [Wed, 9 Aug 2017 11:28:17 +0000 (14:28 +0300)]
Fix occasional empty rows in Table and TreeTable (#9800)
Picked from #9551 in 7.7
There's an intermittently happening issue with both Table and TreeTable,
which results in row data disappearing.
This change removes a method which is probably a vestigial one from over
five years ago and other changes are handling the things the method used
to perform. Currently the method removes rows deemed unnecessary from
the row buffer. The problem is, those rows are visible to the user and
removing causes row contents to be lost.
Also included are manually runnable test cases which demonstrate that
this removal actually prevents the issue from happening.
Grim [Wed, 9 Aug 2017 08:43:07 +0000 (08:43 +0000)]
Re(set) calendar time after calculating rollAmount (#9479)
by calling calendar.setTime(today);
after rollAmount has been initialized and given a value, we can reset the calendar's internal time back to the correct date. As it is currently implemented; calling calendar.getTime() will result in a wrong date, it returns the first of the month with the correct time.
The function addInitialEvents() is called AFTER the calendar's time has been subtracted from (by calculating the rollAmount), as such this results in an incorrect internal time and the 'Day' button does not switch to the correct day. Instead it shows the first of the month here too.
Martin Vysny [Tue, 8 Aug 2017 12:39:15 +0000 (15:39 +0300)]
Fix touching Grid column header on Android (#9196)
The fix allows both column-reorder handler and column-sort handlers to run
in parallel; on touchend it is decided whether we will perform sort or
reodering. This will enable user to sort on touch screens even with column
reordering enabled.
Henri Sara [Mon, 7 Aug 2017 07:05:44 +0000 (10:05 +0300)]
Exclude Firefox from JavaScriptPreloadingTest (#9784)
The test works on Firefox under low load, but not when
the browser VM is slow due to load, in which case Firefox
sometimes executes scripts out of order. This seems to be
due to a Firefox bug - the generated HTML looks correct.
Fix RadioButtonGroup selection updates to client (#9749)
This patch provides a simple fix for the majority of issues. There are still issues that should be fixes by refactoring parts of the logic in AbstractSingleSelect.
This patch does not unify the handling of empty values in the TestBench elements of various AbstractSingleSelects.
Artur [Mon, 24 Jul 2017 05:43:52 +0000 (08:43 +0300)]
Do full connector tracker cleanup when the session lock is released (#9707)
As there is no "request end" call after invoking UI.access() from a background thread,
the connector map was not earlier properly cleaned afterwards. If you toggled visibility of a
component from the background thread, the tracker state became inconsistent.
If this becomes a performance problem, it could probably be optimized to that cleanup
is done in request end and only at the end of access if not inside a request.
Dos Moonen [Wed, 19 Jul 2017 06:24:07 +0000 (08:24 +0200)]
More user friendly fail message (was NullPointerException) (#9665)
Yes, I should never have created "D:\eclipse workspaces" in the first
place.
No, I am not replacing "%20" with spaces, or creating an URI instance.
"D:\eclipse%20workspaces" is a valid folder and I'm not willing to go
down the rabbit hole and see what that turns into.
Tim Ward [Wed, 19 Jul 2017 06:17:46 +0000 (07:17 +0100)]
Tidy up the Vaadin OSGi whiteboard component (#9648)
The Vaadin OSGi integration component uses Declarative Services, but it does some odd things:
* It uses the whiteboard service's own bundle context to get hold of the service instance
* It has an asymmetric get/release for the whiteboard service, which could leak instances over time
* It releases service instances that it is still actively using
This change tidies up the service lifecycle by delegating the get/release to the Service Component Runtime managing the container (specifically by injecting the service instance). Using this injection also ensures that the Vaadin whiteboard service is obtained using this component's bundle context.
This change also simplifies the code a little by using the reference as the key to track the registrations. Different references for the same service are required to be equal so there is no issue with doing this.
This change does not alter the fact that the whiteboard service's bundle context is used to register the Http Whiteboard servlet, as this may be the intended behaviour. As a result the component should be prepared for an IllegalStateException when unregistering the service whiteboard service, which may already have been unregistered by the OSGi framework if the target bundle is stopping.
Andrew Spear [Mon, 17 Jul 2017 11:03:07 +0000 (06:03 -0500)]
Change sendMessage access modifier to protected. (#9622)
This allows extending AtmospherePushConnection, and then doing overriding sendMessage. One use case is to correlate the IP address and the message in the logs.
Use ZoneId rather than ZoneOffset for conversion (#9620)
Use ZoneId rather than ZoneOffset for conversion between model (Date) and presentation of LocalDateTime.
LocalDateToDateConverter (correctly) uses ZoneId, whereas LocalDateTimeToDateConverter (incorrectly) used a ZoneOffset. This fix aligns the two Converter implementations and makes the latter one more robust.
A ZoneOffset is a fixed time difference, e.g., +07:00, whereas a time zone - represented by a ZoneId - is more dynamic, including features like Daylight-Savings Time. A ZoneId returns one or more ZoneOffsets via its ZoneRules method. (ZoneOffsets have trivial ZoneRules that simply return the ZoneOffset.)
Since the date/time being displayed may be from any date on the calendar, the ZoneOffset imposes a negative limitation. Using ZoneId instead gets us past that limitation and allows a more robust set of conversion rules.
Pekka Hyvönen [Thu, 29 Jun 2017 07:01:05 +0000 (10:01 +0300)]
Fix invalid index in drop target Grid (#9604)
Was using length - 1 and 0 for getting the row element,
which caused client side exception when dragging over header or footer when the grid had enough rows.
This had no effect on UX, only exceptions thrown. Now using visible range instead.