NullPointerException in DateToSqlDateConverter (#12284)
DateToSqlDateConverter throws a NullPointerException when the provided
value is null, thus violating the interface contract. If the provided
value is null, then the methods should return null.
Fabian Lange [Thu, 12 Sep 2013 12:16:37 +0000 (14:16 +0200)]
fixed incorrect name for close-pressed.png for windows in black theme (#12563)
The scss file and the light and normal style suggest that the name should be
"-pressed". This is what this patch fixes. I have considered renaming all
"-pressed" to "-active", to be consistent with e.g. "maximize-active.png"
but decided against due to compatibility concerns.
Fabian Lange [Mon, 2 Sep 2013 13:49:53 +0000 (15:49 +0200)]
Allow creating TextBox or SuggestionPopup when extending VFilterSelect (#12491)
This patch adds two methods, that one can override when extending VFilterSelect.
By doing so, the developer can for example change the behavior of setting text,
or performing clicks in the suggestion popup.
This change is backwards compatible, as it just offers two new methods to
override.
TestHideTimeAndSeparator didn't specify a locale, which
caused it to fail if the locale on the system where it
ran was different from the one on the system where the
test was created.
Henrik Paul [Tue, 20 Aug 2013 12:47:54 +0000 (15:47 +0300)]
Table ignores Container updates while painting (#12258)
Vaadin threw an IllegalStateException if a Container was updated while
Table was being painted. SQLContainer was known to invalidate its cached
size during a Table repaint, resulting in an ItemSetChangeEvent. This fix
has been copied over from how ComboBox handles this situation.
Avoid leaking memory from inherited ThreadLocales. Fixes #12401
The issue is fixed by changing the normal HashMap inside the inheritable
thread local to a map implementation holding only weak references to the
values (WeakValueMap).
Also included is a test UI that starts threads, which run until the JVM
is quit. This along with VisualVM was used to reproduce the issue and
verify the fix.
Henri Sara [Wed, 28 Aug 2013 09:34:53 +0000 (12:34 +0300)]
Use the add() path of CssLayout only when appending to the end (#11284)
This should get the benefits of the previous optimization on initial
rendering without negatively affecting the performance when modifying a
layout with complex non-leaf children.
Henri Sara [Thu, 22 Aug 2013 08:55:38 +0000 (11:55 +0300)]
Optimize large Vertical/HorizontalLayout client side (#12420, #10899)
Spacing is now only handled at the beginning and end of hierarchy
updates, not for every component separately.
Some more profiling data on potential hotspots is also generated when
Profiler is used.
Henri Sara [Thu, 22 Aug 2013 08:03:47 +0000 (11:03 +0300)]
Optimize resetting of state when detaching components (#10899, #11284)
This has a significant impact on some older browsers, especially IE8.
This change also adds hierarchy update profiling statements to
help find hotspots.
John Ahlroos [Thu, 22 Aug 2013 08:10:18 +0000 (11:10 +0300)]
Fixed failing TabKeyboardNavigation test #12433
The test fails on Opera 12 since the assertText is done before the
tabsheet has had time to change the tab content. Added a small waiting
period after the tab is changed before the assert is made to fix the
issue.
John Ahlroos [Wed, 21 Aug 2013 11:51:50 +0000 (14:51 +0300)]
Fixed test broken by PopupDateField communication change #6252
After #6252 the value is no longer communicated to the server
immediatly but only once the popup is closed. Changed the test to assume
the new behaviour.
John Ahlroos [Wed, 21 Aug 2013 10:34:37 +0000 (13:34 +0300)]
Fixed test broken by fixes to drag&drop #12406
Due to the fixes to the VDragAndDropManager the drop location became a
lot more accurate and so changed where the drops were made in the test.
To fix it I adjusted the pixel position within the drop target element to account for the
changed accuracy.
John Ahlroos [Tue, 20 Aug 2013 10:30:47 +0000 (13:30 +0300)]
Fixed DragAndDropWrapper using wrong drop target in IE8 #12406
VDragAndDropManager was assuming that the target element will always be
inside the cloned "drag image" element while dragging. This assumption
is false since the "drag image" can be 0x0px or transparent effectivly
disabling dragging.
Since Testbench 2 is also very flaky in using the Vaadin locators with
the drag/drop commands I replaced the locators with shorter locators
using a debug id to make the test more readable and stable.
Henrik Paul [Thu, 15 Aug 2013 05:59:03 +0000 (08:59 +0300)]
Make sure that no fileIds are replayed to the client (#12330)
Due to how ProxyReceivers are constructed and serialized, we don't want
to resend the ProxyReceivers for files that already are in the queue.
Either we needed to change the way ProxyReceivers behave, or just make
sure that they aren't resent. I chose the double-check method.
Disable failing calendar Actions Menu Test (#12181)
This test cannot be completed in a smart fashion until TestBench 3 is in
use, because of differences in the DOM structure created by GWT for IE
and Opera, versus Webkit and Gecko browsers. TB2 requires identical DOM
structure for assertion queries to work.
The session might be invalidated before lockSession() acquires the lock.
Check if the session is still valid after locking and ensure
SessionExpiredException is thrown if not.
Fabian Lange [Wed, 17 Jul 2013 09:44:57 +0000 (11:44 +0200)]
Fixes parsing of multiple push messages in streaming mode (#12197)
The current atmosphere code can handle messages split up using the message
length header. But it does not handle the case where the header is actually
split up itself.
This patch solves it by making sure the length header stays intact.
Corresponding atmosphere ticket:
https://github.com/Atmosphere/atmosphere/issues/1199
John Ahlroos [Fri, 26 Jul 2013 08:07:36 +0000 (11:07 +0300)]
Fixes button :active state on firefox #12126
When doing event.preventDefault() firefox will not trigger the :active
selector intentionally (see
https://bugzilla.mozilla.org/show_bug.cgi?id=771241).
Event.preventDefault() was added to prevent text selection in #10917
but it actually is not needed since the button also uses the
user-select:none css attribute which effectivly prevents the text selection.
Also now applying the previously browser specific (ie,opera) .v-pressed
classname to all browsers to make styling of the pressed state a bit easier
to do for all browsers and not reliant on the :active pseudo-class which is a
non-standard pseudo-class.
John Ahlroos [Thu, 25 Jul 2013 06:53:50 +0000 (09:53 +0300)]
Fixes light theme window sprites #12171
The close buttons images for the Window black theme was mistakenly
added to the white theme sprite and ended up in the middle of the
light theme window. Moved the black theme button images to the
black theme sprite.
Fabian Lange [Thu, 13 Jun 2013 13:11:39 +0000 (15:11 +0200)]
When InputStream cannot be opened while writing static resource response, display 404 instead of 500 (#10920)
A security audit revealed that it is possible to trigger an error 500 with
stack trace by just trying a directory traversal. An example of this can be
found in the sampler: http://demo.vaadin.com/sampler/VAADIN/widgetsets/
While there are other scenarios that can produce exceptions, in this place
Vaadin can handle it more graceful by just catching the exception and
returning 404.
Fabian Lange [Thu, 13 Jun 2013 12:51:08 +0000 (14:51 +0200)]
Make UploadInterruptedException visible (#12070)
When another threads interrupts the Upload, the UploadInterruptedException is
thrown. The respective StreamVariable will receive
streamingFailed(StreamingErrorEvent event) which contains the causing exception
via event.getException(). When the UploadInterruptedException is not public, it
is impossible to react on it in the StreamVariable (e.g. treating an
IOException differently from an UploadInterruptedException).