FLEX-35362 Added unit test to reproduce the bug. As expected, it currently fails.
diff --git a/frameworks/projects/spark/tests/spark/components/DropDownListBase_FLEX_35362_Tests.as b/frameworks/projects/spark/tests/spark/components/DropDownListBase_FLEX_35362_Tests.as
new file mode 100644
index 0000000..1c081df
--- /dev/null
+++ b/frameworks/projects/spark/tests/spark/components/DropDownListBase_FLEX_35362_Tests.as
@@ -0,0 +1,60 @@
+package spark.components {
+ import flash.events.Event;
+ import flash.events.EventDispatcher;
+ import flash.events.KeyboardEvent;
+ import flash.ui.Keyboard;
+
+ import org.flexunit.asserts.assertTrue;
+ import org.flexunit.async.Async;
+ import org.fluint.uiImpersonation.UIImpersonator;
+
+ public class DropDownListBase_FLEX_35362_Tests {
+ private var _sut:DropDownList;
+ private static const NO_ENTER_FRAMES_TO_ALLOW:int = 2;
+ private static var noEnterFramesRemaining:int = NaN;
+ private static const _finishNotifier:EventDispatcher = new EventDispatcher();
+
+ [Before]
+ public function setUp():void
+ {
+ _sut = new DropDownList();
+ }
+
+ [After]
+ public function tearDown():void
+ {
+ _sut = null;
+ UIImpersonator.removeAllChildren();
+ }
+
+ [Test(async, timeout=1000)]
+ public function test_pressing_END_right_after_opening_doesnt_trigger_fatal():void
+ {
+ //given
+ UIImpersonator.addChild(_sut);
+
+ noEnterFramesRemaining = NO_ENTER_FRAMES_TO_ALLOW;
+ UIImpersonator.testDisplay.addEventListener(Event.ENTER_FRAME, onEnterFrame);
+ Async.handleEvent(this, _finishNotifier, Event.COMPLETE, then_open_drop_down_and_press_key, 300);
+ }
+
+ private function then_open_drop_down_and_press_key(event:Event, passThroughData:Object):void
+ {
+ //when
+ _sut.openDropDown();
+ _sut.dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_DOWN, true, false, 0, Keyboard.END, 0, true, false, false, true, false));
+
+ //then - no fatal thrown
+ assertTrue(true);
+ }
+
+ private static function onEnterFrame(event:Event):void
+ {
+ if(!--noEnterFramesRemaining)
+ {
+ UIImpersonator.testDisplay.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
+ _finishNotifier.dispatchEvent(new Event(Event.COMPLETE));
+ }
+ }
+ }
+}