From 36310501ff1d40cfe19a0e3dd544dd8aa7a97974 Mon Sep 17 00:00:00 2001 From: Kamil Jarosz Date: Tue, 4 Jun 2024 20:41:44 +0200 Subject: [PATCH] tests: Add avm2/focus_events_focusable test This test verifies the behavior of focus-related events when trying to focus various interactive objects. --- .../ButtonDisplayState.as | 20 ++ .../swfs/avm2/focus_events_focusable/Test.as | 200 ++++++++++++++++++ .../avm2/focus_events_focusable/input.json | 68 ++++++ .../avm2/focus_events_focusable/input.json.py | 47 ++++ .../avm2/focus_events_focusable/output.txt | 190 +++++++++++++++++ .../swfs/avm2/focus_events_focusable/test.swf | Bin 0 -> 3241 bytes .../avm2/focus_events_focusable/test.toml | 1 + 7 files changed, 526 insertions(+) create mode 100644 tests/tests/swfs/avm2/focus_events_focusable/ButtonDisplayState.as create mode 100644 tests/tests/swfs/avm2/focus_events_focusable/Test.as create mode 100644 tests/tests/swfs/avm2/focus_events_focusable/input.json create mode 100755 tests/tests/swfs/avm2/focus_events_focusable/input.json.py create mode 100644 tests/tests/swfs/avm2/focus_events_focusable/output.txt create mode 100644 tests/tests/swfs/avm2/focus_events_focusable/test.swf create mode 100644 tests/tests/swfs/avm2/focus_events_focusable/test.toml diff --git a/tests/tests/swfs/avm2/focus_events_focusable/ButtonDisplayState.as b/tests/tests/swfs/avm2/focus_events_focusable/ButtonDisplayState.as new file mode 100644 index 0000000000000..1790890ee074a --- /dev/null +++ b/tests/tests/swfs/avm2/focus_events_focusable/ButtonDisplayState.as @@ -0,0 +1,20 @@ +package { +import flash.display.Shape; + +internal class ButtonDisplayState extends Shape { + private var bgColor:uint; + private var size:uint; + + public function ButtonDisplayState(bgColor:uint, size:uint) { + this.bgColor = bgColor; + this.size = size; + draw(); + } + + private function draw():void { + graphics.beginFill(bgColor); + graphics.drawRect(0, 0, size, size); + graphics.endFill(); + } +} +} diff --git a/tests/tests/swfs/avm2/focus_events_focusable/Test.as b/tests/tests/swfs/avm2/focus_events_focusable/Test.as new file mode 100644 index 0000000000000..a0a95ba19187d --- /dev/null +++ b/tests/tests/swfs/avm2/focus_events_focusable/Test.as @@ -0,0 +1,200 @@ +package { + +import flash.display.InteractiveObject; +import flash.display.MovieClip; +import flash.display.SimpleButton; +import flash.display.Sprite; +import flash.events.Event; +import flash.events.FocusEvent; +import flash.events.KeyboardEvent; +import flash.events.MouseEvent; +import flash.text.TextField; + +[SWF(width="1100", height="200")] +public class Test extends MovieClip { + private var sprite: Sprite; + private var mc1: MovieClip; + private var mc2: MovieClip; + private var mc3: MovieClip; + private var mc4: MovieClip; + private var text1: TextField; + private var text2: TextField; + private var text3: TextField; + private var button1: SimpleButton; + private var button2: SimpleButton; + private var button3: SimpleButton; + + private var lastFocusedObject: InteractiveObject = null; + + public function Test() { + super(); + + sprite = newSprite(); + sprite.name = "sprite"; + sprite.x = 0; + sprite.y = 100; + sprite.tabEnabled = true; + sprite.tabIndex = 1; + mc1 = newMovieClip(false, true); + mc1.name = "mc1"; + mc1.x = 100; + mc1.y = 100; + mc1.tabEnabled = true; + mc1.tabIndex = 2; + mc2 = newMovieClip(true, true); + mc2.name = "mc2"; + mc2.x = 200; + mc2.y = 100; + mc2.tabEnabled = true; + mc2.tabIndex = 3; + mc3 = newMovieClip(true, false); + mc3.name = "mc3"; + mc3.x = 300; + mc3.y = 100; + mc3.tabEnabled = true; + mc3.tabIndex = 4; + mc4 = newMovieClip(false, false); + mc4.name = "mc4"; + mc4.x = 400; + mc4.y = 100; + mc3.tabIndex = 5; + text1 = newTextField(); + text1.name = "text1"; + text1.x = 500; + text1.y = 100; + text1.tabEnabled = true; + text1.tabIndex = 6; + text2 = newTextField(); + text2.type = "dynamic"; + text2.name = "text2"; + text2.x = 600; + text2.y = 100; + text2.tabEnabled = true; + text2.tabIndex = 7; + text3 = newTextField(); + text3.selectable = false; + text3.name = "text3"; + text3.x = 700; + text3.y = 100; + text3.tabEnabled = true; + text3.tabIndex = 8; + button1 = newButton(); + button1.name = "button1"; + button1.x = 800; + button1.y = 100; + button1.tabEnabled = true; + button1.tabIndex = 9; + button2 = newButton(); + button2.enabled = false; + button2.name = "button2"; + button2.x = 900; + button2.y = 100; + button2.tabEnabled = true; + button2.tabIndex = 10; + button3 = newButton(); + button3.useHandCursor = false; + button3.name = "button3"; + button3.x = 1000; + button3.y = 100; + button3.tabEnabled = true; + button3.tabIndex = 11; + + stage.addChild(sprite); + stage.addChild(mc1); + stage.addChild(mc2); + stage.addChild(mc3); + stage.addChild(mc4); + stage.addChild(text1); + stage.addChild(text2); + stage.addChild(text3); + stage.addChild(button1); + stage.addChild(button2); + stage.addChild(button3); + + stage.addEventListener("keyDown", function(evt:KeyboardEvent):void { + if (evt.keyCode == 27 && stage.focus != lastFocusedObject) { + trace("Currently focused object: " + stage.focus + (stage.focus == null ? "" : ", " + stage.focus.name)); + lastFocusedObject = stage.focus; + } + }); + + function eventListener(obj: InteractiveObject): Function { + return function(evt: Event): void { + var str; + if (evt is MouseEvent) { + str = evt.formatToString( + "MouseEvent", "type", "cancelable", "eventPhase", + "relatedObject", "ctrlKey", "altKey", "shiftKey"); + } else { + str = evt.toString(); + } + if (evt is FocusEvent && FocusEvent(evt).relatedObject) { + str += ", relatedObjectName=" + FocusEvent(evt).relatedObject.name; + } + trace(" " + obj.name + ", " + evt.target.name + ": " + str); + } + } + + for each (var obj: InteractiveObject in [ + sprite, mc1, mc2, mc3, mc4, text1, text2, text3, button1, button2, button3, + stage + ]) { + obj.addEventListener("focusIn", eventListener(obj)); + obj.addEventListener("focusOut", eventListener(obj)); + obj.addEventListener("mouseDown", eventListener(obj)); + obj.addEventListener("mouseUp", eventListener(obj)); + obj.addEventListener("click", eventListener(obj)); + obj.addEventListener("mouseFocusChange", eventListener(obj)); + obj.addEventListener("keyFocusChange", eventListener(obj)); + obj.addEventListener("rollOut", eventListener(obj)); + obj.addEventListener("rollOver", eventListener(obj)); + obj.addEventListener("mouseOver", eventListener(obj)); + } + } + + private function newSprite(): Sprite { + var s:Sprite = new Sprite(); + s.graphics.beginFill(0x00FFFF); + s.graphics.drawRect(0, 0, 100, 100); + s.graphics.endFill(); + return s; + } + + private function newMovieClip(buttonMode: Boolean, handCursor: Boolean): MovieClip { + var mc:MovieClip = new MovieClip(); + mc.buttonMode = buttonMode; + mc.useHandCursor = handCursor; + if (buttonMode) { + if (handCursor) { + mc.graphics.beginFill(0xFFCA00); + } else { + mc.graphics.beginFill(0xCAFF00); + } + } else { + mc.graphics.beginFill(0x00FF00); + } + mc.graphics.drawRect(0, 0, 100, 100); + mc.graphics.endFill(); + return mc; + } + + private function newTextField(): TextField { + var tf:TextField = new TextField(); + tf.type = "input"; + tf.border = true; + tf.width = 100; + tf.height = 100; + return tf; + } + + private function newButton(): SimpleButton { + var b:SimpleButton = new SimpleButton(); + b.downState = new ButtonDisplayState(0xFF0000, 100); + b.overState = new ButtonDisplayState(0x0000FF, 100); + b.upState = new ButtonDisplayState(0x000000, 100); + b.hitTestState = new ButtonDisplayState(0, 100); + b.useHandCursor = true; + return b; + } +} +} diff --git a/tests/tests/swfs/avm2/focus_events_focusable/input.json b/tests/tests/swfs/avm2/focus_events_focusable/input.json new file mode 100644 index 0000000000000..e2cb1b037fb19 --- /dev/null +++ b/tests/tests/swfs/avm2/focus_events_focusable/input.json @@ -0,0 +1,68 @@ +[ + { "type": "MouseMove", "pos": [1, 1] }, + { "type": "MouseDown", "pos": [1, 1], "btn": "Left" }, + { "type": "MouseUp", "pos": [1, 1], "btn": "Left" }, + { "type": "KeyDown", "key_code": 27 }, + { "type": "KeyUp", "key_code": 27 }, + { "type": "MouseMove", "pos": [1, 101] }, + { "type": "MouseDown", "pos": [1, 101], "btn": "Left" }, + { "type": "MouseUp", "pos": [1, 101], "btn": "Left" }, + { "type": "KeyDown", "key_code": 27 }, + { "type": "KeyUp", "key_code": 27 }, + { "type": "MouseMove", "pos": [101, 101] }, + { "type": "MouseDown", "pos": [101, 101], "btn": "Left" }, + { "type": "MouseUp", "pos": [101, 101], "btn": "Left" }, + { "type": "KeyDown", "key_code": 27 }, + { "type": "KeyUp", "key_code": 27 }, + { "type": "MouseMove", "pos": [201, 101] }, + { "type": "MouseDown", "pos": [201, 101], "btn": "Left" }, + { "type": "MouseUp", "pos": [201, 101], "btn": "Left" }, + { "type": "KeyDown", "key_code": 27 }, + { "type": "KeyUp", "key_code": 27 }, + { "type": "MouseMove", "pos": [301, 101] }, + { "type": "MouseDown", "pos": [301, 101], "btn": "Left" }, + { "type": "MouseUp", "pos": [301, 101], "btn": "Left" }, + { "type": "KeyDown", "key_code": 27 }, + { "type": "KeyUp", "key_code": 27 }, + { "type": "MouseMove", "pos": [401, 101] }, + { "type": "MouseDown", "pos": [401, 101], "btn": "Left" }, + { "type": "MouseUp", "pos": [401, 101], "btn": "Left" }, + { "type": "KeyDown", "key_code": 27 }, + { "type": "KeyUp", "key_code": 27 }, + { "type": "MouseMove", "pos": [501, 101] }, + { "type": "MouseDown", "pos": [501, 101], "btn": "Left" }, + { "type": "MouseUp", "pos": [501, 101], "btn": "Left" }, + { "type": "KeyDown", "key_code": 27 }, + { "type": "KeyUp", "key_code": 27 }, + { "type": "MouseMove", "pos": [601, 101] }, + { "type": "MouseDown", "pos": [601, 101], "btn": "Left" }, + { "type": "MouseUp", "pos": [601, 101], "btn": "Left" }, + { "type": "KeyDown", "key_code": 27 }, + { "type": "KeyUp", "key_code": 27 }, + { "type": "MouseMove", "pos": [701, 101] }, + { "type": "MouseDown", "pos": [701, 101], "btn": "Left" }, + { "type": "MouseUp", "pos": [701, 101], "btn": "Left" }, + { "type": "KeyDown", "key_code": 27 }, + { "type": "KeyUp", "key_code": 27 }, + { "type": "MouseMove", "pos": [801, 101] }, + { "type": "MouseDown", "pos": [801, 101], "btn": "Left" }, + { "type": "MouseUp", "pos": [801, 101], "btn": "Left" }, + { "type": "KeyDown", "key_code": 27 }, + { "type": "KeyUp", "key_code": 27 }, + { "type": "MouseMove", "pos": [901, 101] }, + { "type": "MouseDown", "pos": [901, 101], "btn": "Left" }, + { "type": "MouseUp", "pos": [901, 101], "btn": "Left" }, + { "type": "KeyDown", "key_code": 27 }, + { "type": "KeyUp", "key_code": 27 }, + { "type": "MouseMove", "pos": [1001, 101] }, + { "type": "MouseDown", "pos": [1001, 101], "btn": "Left" }, + { "type": "MouseUp", "pos": [1001, 101], "btn": "Left" }, + { "type": "KeyDown", "key_code": 27 }, + { "type": "KeyUp", "key_code": 27 }, + { "type": "MouseMove", "pos": [1, 1] }, + { "type": "MouseDown", "pos": [1, 1], "btn": "Left" }, + { "type": "MouseUp", "pos": [1, 1], "btn": "Left" }, + { "type": "KeyDown", "key_code": 27 }, + { "type": "KeyUp", "key_code": 27 }, + { "type": "Wait" } +] diff --git a/tests/tests/swfs/avm2/focus_events_focusable/input.json.py b/tests/tests/swfs/avm2/focus_events_focusable/input.json.py new file mode 100755 index 0000000000000..692f183c40b56 --- /dev/null +++ b/tests/tests/swfs/avm2/focus_events_focusable/input.json.py @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 + +coord_map = { + 'void': [1, 1], + 'sprite': [1, 101], + 'mc1': [101, 101], + 'mc2': [201, 101], + 'mc3': [301, 101], + 'mc4': [401, 101], + 'text1': [501, 101], + 'text2': [601, 101], + 'text3': [701, 101], + 'button1': [801, 101], + 'button2': [901, 101], + 'button3': [1001, 101], +} + +click_seq = [ + 'void', 'esc', + 'sprite', 'esc', + 'mc1', 'esc', + 'mc2', 'esc', + 'mc3', 'esc', + 'mc4', 'esc', + 'text1', 'esc', + 'text2', 'esc', + 'text3', 'esc', + 'button1', 'esc', + 'button2', 'esc', + 'button3', 'esc', + 'void', 'esc', +] + +print('[') + +for obj in click_seq: + if obj == 'esc': + print(f' {{ "type": "KeyDown", "key_code": 27 }},') + print(f' {{ "type": "KeyUp", "key_code": 27 }},') + continue + pos = coord_map[obj] + print(f' {{ "type": "MouseMove", "pos": {pos} }},') + print(f' {{ "type": "MouseDown", "pos": {pos}, "btn": "Left" }},') + print(f' {{ "type": "MouseUp", "pos": {pos}, "btn": "Left" }},') + +print(f' {{ "type": "Wait" }}') +print(']') diff --git a/tests/tests/swfs/avm2/focus_events_focusable/output.txt b/tests/tests/swfs/avm2/focus_events_focusable/output.txt new file mode 100644 index 0000000000000..ff771820bbaa0 --- /dev/null +++ b/tests/tests/swfs/avm2/focus_events_focusable/output.txt @@ -0,0 +1,190 @@ + null, null: [MouseEvent type="mouseDown" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, null: [MouseEvent type="mouseUp" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, null: [MouseEvent type="click" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + sprite, sprite: [MouseEvent type="rollOver" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + sprite, sprite: [MouseEvent type="mouseOver" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, sprite: [MouseEvent type="mouseOver" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, null: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=2 relatedObject=[object Sprite] shiftKey=false keyCode=0], relatedObjectName=sprite + sprite, sprite: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=2 relatedObject=null shiftKey=false keyCode=0] + null, sprite: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=3 relatedObject=null shiftKey=false keyCode=0] + sprite, sprite: [MouseEvent type="mouseDown" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, sprite: [MouseEvent type="mouseDown" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + sprite, sprite: [MouseEvent type="mouseUp" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, sprite: [MouseEvent type="mouseUp" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + sprite, sprite: [MouseEvent type="click" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, sprite: [MouseEvent type="click" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] +Currently focused object: [object Sprite], sprite + sprite, sprite: [MouseEvent type="rollOut" cancelable=false eventPhase=2 relatedObject=[object MovieClip] ctrlKey=false altKey=false shiftKey=false] + mc1, mc1: [MouseEvent type="rollOver" cancelable=false eventPhase=2 relatedObject=[object Sprite] ctrlKey=false altKey=false shiftKey=false] + mc1, mc1: [MouseEvent type="mouseOver" cancelable=false eventPhase=2 relatedObject=[object Sprite] ctrlKey=false altKey=false shiftKey=false] + null, mc1: [MouseEvent type="mouseOver" cancelable=false eventPhase=3 relatedObject=[object Sprite] ctrlKey=false altKey=false shiftKey=false] + sprite, sprite: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=2 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc1 + null, sprite: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=3 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc1 + sprite, sprite: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=2 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc1 + null, sprite: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=3 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc1 + mc1, mc1: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=2 relatedObject=[object Sprite] shiftKey=false keyCode=0], relatedObjectName=sprite + null, mc1: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=3 relatedObject=[object Sprite] shiftKey=false keyCode=0], relatedObjectName=sprite + mc1, mc1: [MouseEvent type="mouseDown" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, mc1: [MouseEvent type="mouseDown" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + mc1, mc1: [MouseEvent type="mouseUp" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, mc1: [MouseEvent type="mouseUp" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + mc1, mc1: [MouseEvent type="click" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, mc1: [MouseEvent type="click" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] +Currently focused object: [object MovieClip], mc1 + mc1, mc1: [MouseEvent type="rollOut" cancelable=false eventPhase=2 relatedObject=[object MovieClip] ctrlKey=false altKey=false shiftKey=false] + mc2, mc2: [MouseEvent type="rollOver" cancelable=false eventPhase=2 relatedObject=[object MovieClip] ctrlKey=false altKey=false shiftKey=false] + mc2, mc2: [MouseEvent type="mouseOver" cancelable=false eventPhase=2 relatedObject=[object MovieClip] ctrlKey=false altKey=false shiftKey=false] + null, mc2: [MouseEvent type="mouseOver" cancelable=false eventPhase=3 relatedObject=[object MovieClip] ctrlKey=false altKey=false shiftKey=false] + mc1, mc1: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=2 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc2 + null, mc1: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=3 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc2 + mc1, mc1: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=2 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc2 + null, mc1: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=3 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc2 + mc2, mc2: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=2 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc1 + null, mc2: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=3 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc1 + mc2, mc2: [MouseEvent type="mouseDown" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, mc2: [MouseEvent type="mouseDown" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + mc2, mc2: [MouseEvent type="mouseUp" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, mc2: [MouseEvent type="mouseUp" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + mc2, mc2: [MouseEvent type="click" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, mc2: [MouseEvent type="click" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] +Currently focused object: [object MovieClip], mc2 + mc2, mc2: [MouseEvent type="rollOut" cancelable=false eventPhase=2 relatedObject=[object MovieClip] ctrlKey=false altKey=false shiftKey=false] + mc3, mc3: [MouseEvent type="rollOver" cancelable=false eventPhase=2 relatedObject=[object MovieClip] ctrlKey=false altKey=false shiftKey=false] + mc3, mc3: [MouseEvent type="mouseOver" cancelable=false eventPhase=2 relatedObject=[object MovieClip] ctrlKey=false altKey=false shiftKey=false] + null, mc3: [MouseEvent type="mouseOver" cancelable=false eventPhase=3 relatedObject=[object MovieClip] ctrlKey=false altKey=false shiftKey=false] + mc2, mc2: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=2 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc3 + null, mc2: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=3 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc3 + mc2, mc2: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=2 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc3 + null, mc2: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=3 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc3 + mc3, mc3: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=2 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc2 + null, mc3: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=3 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc2 + mc3, mc3: [MouseEvent type="mouseDown" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, mc3: [MouseEvent type="mouseDown" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + mc3, mc3: [MouseEvent type="mouseUp" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, mc3: [MouseEvent type="mouseUp" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + mc3, mc3: [MouseEvent type="click" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, mc3: [MouseEvent type="click" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] +Currently focused object: [object MovieClip], mc3 + mc3, mc3: [MouseEvent type="rollOut" cancelable=false eventPhase=2 relatedObject=[object MovieClip] ctrlKey=false altKey=false shiftKey=false] + mc4, mc4: [MouseEvent type="rollOver" cancelable=false eventPhase=2 relatedObject=[object MovieClip] ctrlKey=false altKey=false shiftKey=false] + mc4, mc4: [MouseEvent type="mouseOver" cancelable=false eventPhase=2 relatedObject=[object MovieClip] ctrlKey=false altKey=false shiftKey=false] + null, mc4: [MouseEvent type="mouseOver" cancelable=false eventPhase=3 relatedObject=[object MovieClip] ctrlKey=false altKey=false shiftKey=false] + mc3, mc3: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=2 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc4 + null, mc3: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=3 relatedObject=[object MovieClip] shiftKey=false keyCode=0], relatedObjectName=mc4 + mc3, mc3: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=2 relatedObject=null shiftKey=false keyCode=0] + null, mc3: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=3 relatedObject=null shiftKey=false keyCode=0] + mc4, mc4: [MouseEvent type="mouseDown" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, mc4: [MouseEvent type="mouseDown" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + mc4, mc4: [MouseEvent type="mouseUp" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, mc4: [MouseEvent type="mouseUp" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + mc4, mc4: [MouseEvent type="click" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, mc4: [MouseEvent type="click" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] +Currently focused object: null + mc4, mc4: [MouseEvent type="rollOut" cancelable=false eventPhase=2 relatedObject=[object TextField] ctrlKey=false altKey=false shiftKey=false] + text1, text1: [MouseEvent type="rollOver" cancelable=false eventPhase=2 relatedObject=[object MovieClip] ctrlKey=false altKey=false shiftKey=false] + text1, text1: [MouseEvent type="mouseOver" cancelable=false eventPhase=2 relatedObject=[object MovieClip] ctrlKey=false altKey=false shiftKey=false] + null, text1: [MouseEvent type="mouseOver" cancelable=false eventPhase=3 relatedObject=[object MovieClip] ctrlKey=false altKey=false shiftKey=false] + null, null: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=2 relatedObject=[object TextField] shiftKey=false keyCode=0], relatedObjectName=text1 + text1, text1: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=2 relatedObject=null shiftKey=false keyCode=0] + null, text1: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=3 relatedObject=null shiftKey=false keyCode=0] + text1, text1: [MouseEvent type="mouseDown" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, text1: [MouseEvent type="mouseDown" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + text1, text1: [MouseEvent type="mouseUp" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, text1: [MouseEvent type="mouseUp" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + text1, text1: [MouseEvent type="click" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, text1: [MouseEvent type="click" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] +Currently focused object: [object TextField], text1 + text1, text1: [MouseEvent type="rollOut" cancelable=false eventPhase=2 relatedObject=[object TextField] ctrlKey=false altKey=false shiftKey=false] + text2, text2: [MouseEvent type="rollOver" cancelable=false eventPhase=2 relatedObject=[object TextField] ctrlKey=false altKey=false shiftKey=false] + text2, text2: [MouseEvent type="mouseOver" cancelable=false eventPhase=2 relatedObject=[object TextField] ctrlKey=false altKey=false shiftKey=false] + null, text2: [MouseEvent type="mouseOver" cancelable=false eventPhase=3 relatedObject=[object TextField] ctrlKey=false altKey=false shiftKey=false] + text1, text1: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=2 relatedObject=[object TextField] shiftKey=false keyCode=0], relatedObjectName=text2 + null, text1: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=3 relatedObject=[object TextField] shiftKey=false keyCode=0], relatedObjectName=text2 + text1, text1: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=2 relatedObject=[object TextField] shiftKey=false keyCode=0], relatedObjectName=text2 + null, text1: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=3 relatedObject=[object TextField] shiftKey=false keyCode=0], relatedObjectName=text2 + text2, text2: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=2 relatedObject=[object TextField] shiftKey=false keyCode=0], relatedObjectName=text1 + null, text2: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=3 relatedObject=[object TextField] shiftKey=false keyCode=0], relatedObjectName=text1 + text2, text2: [MouseEvent type="mouseDown" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, text2: [MouseEvent type="mouseDown" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + text2, text2: [MouseEvent type="mouseUp" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, text2: [MouseEvent type="mouseUp" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + text2, text2: [MouseEvent type="click" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, text2: [MouseEvent type="click" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] +Currently focused object: [object TextField], text2 + text2, text2: [MouseEvent type="rollOut" cancelable=false eventPhase=2 relatedObject=[object TextField] ctrlKey=false altKey=false shiftKey=false] + text3, text3: [MouseEvent type="rollOver" cancelable=false eventPhase=2 relatedObject=[object TextField] ctrlKey=false altKey=false shiftKey=false] + text3, text3: [MouseEvent type="mouseOver" cancelable=false eventPhase=2 relatedObject=[object TextField] ctrlKey=false altKey=false shiftKey=false] + null, text3: [MouseEvent type="mouseOver" cancelable=false eventPhase=3 relatedObject=[object TextField] ctrlKey=false altKey=false shiftKey=false] + text2, text2: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=2 relatedObject=[object TextField] shiftKey=false keyCode=0], relatedObjectName=text3 + null, text2: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=3 relatedObject=[object TextField] shiftKey=false keyCode=0], relatedObjectName=text3 + text2, text2: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=2 relatedObject=[object TextField] shiftKey=false keyCode=0], relatedObjectName=text3 + null, text2: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=3 relatedObject=[object TextField] shiftKey=false keyCode=0], relatedObjectName=text3 + text3, text3: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=2 relatedObject=[object TextField] shiftKey=false keyCode=0], relatedObjectName=text2 + null, text3: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=3 relatedObject=[object TextField] shiftKey=false keyCode=0], relatedObjectName=text2 + text3, text3: [MouseEvent type="mouseDown" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, text3: [MouseEvent type="mouseDown" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + text3, text3: [MouseEvent type="mouseUp" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, text3: [MouseEvent type="mouseUp" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + text3, text3: [MouseEvent type="click" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, text3: [MouseEvent type="click" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] +Currently focused object: [object TextField], text3 + text3, text3: [MouseEvent type="rollOut" cancelable=false eventPhase=2 relatedObject=[object SimpleButton] ctrlKey=false altKey=false shiftKey=false] + button1, button1: [MouseEvent type="rollOver" cancelable=false eventPhase=2 relatedObject=[object TextField] ctrlKey=false altKey=false shiftKey=false] + button1, button1: [MouseEvent type="mouseOver" cancelable=false eventPhase=2 relatedObject=[object TextField] ctrlKey=false altKey=false shiftKey=false] + null, button1: [MouseEvent type="mouseOver" cancelable=false eventPhase=3 relatedObject=[object TextField] ctrlKey=false altKey=false shiftKey=false] + text3, text3: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=2 relatedObject=[object SimpleButton] shiftKey=false keyCode=0], relatedObjectName=button1 + null, text3: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=3 relatedObject=[object SimpleButton] shiftKey=false keyCode=0], relatedObjectName=button1 + text3, text3: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=2 relatedObject=[object SimpleButton] shiftKey=false keyCode=0], relatedObjectName=button1 + null, text3: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=3 relatedObject=[object SimpleButton] shiftKey=false keyCode=0], relatedObjectName=button1 + button1, button1: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=2 relatedObject=[object TextField] shiftKey=false keyCode=0], relatedObjectName=text3 + null, button1: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=3 relatedObject=[object TextField] shiftKey=false keyCode=0], relatedObjectName=text3 + button1, button1: [MouseEvent type="mouseDown" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, button1: [MouseEvent type="mouseDown" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + button1, button1: [MouseEvent type="mouseUp" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, button1: [MouseEvent type="mouseUp" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + button1, button1: [MouseEvent type="click" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, button1: [MouseEvent type="click" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] +Currently focused object: [object SimpleButton], button1 + button1, button1: [MouseEvent type="rollOut" cancelable=false eventPhase=2 relatedObject=[object SimpleButton] ctrlKey=false altKey=false shiftKey=false] + button2, button2: [MouseEvent type="rollOver" cancelable=false eventPhase=2 relatedObject=[object SimpleButton] ctrlKey=false altKey=false shiftKey=false] + button2, button2: [MouseEvent type="mouseOver" cancelable=false eventPhase=2 relatedObject=[object SimpleButton] ctrlKey=false altKey=false shiftKey=false] + null, button2: [MouseEvent type="mouseOver" cancelable=false eventPhase=3 relatedObject=[object SimpleButton] ctrlKey=false altKey=false shiftKey=false] + button1, button1: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=2 relatedObject=[object SimpleButton] shiftKey=false keyCode=0], relatedObjectName=button2 + null, button1: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=3 relatedObject=[object SimpleButton] shiftKey=false keyCode=0], relatedObjectName=button2 + button1, button1: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=2 relatedObject=[object SimpleButton] shiftKey=false keyCode=0], relatedObjectName=button2 + null, button1: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=3 relatedObject=[object SimpleButton] shiftKey=false keyCode=0], relatedObjectName=button2 + button2, button2: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=2 relatedObject=[object SimpleButton] shiftKey=false keyCode=0], relatedObjectName=button1 + null, button2: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=3 relatedObject=[object SimpleButton] shiftKey=false keyCode=0], relatedObjectName=button1 + button2, button2: [MouseEvent type="mouseDown" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, button2: [MouseEvent type="mouseDown" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + button2, button2: [MouseEvent type="mouseUp" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, button2: [MouseEvent type="mouseUp" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + button2, button2: [MouseEvent type="click" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, button2: [MouseEvent type="click" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] +Currently focused object: [object SimpleButton], button2 + button2, button2: [MouseEvent type="rollOut" cancelable=false eventPhase=2 relatedObject=[object SimpleButton] ctrlKey=false altKey=false shiftKey=false] + button3, button3: [MouseEvent type="rollOver" cancelable=false eventPhase=2 relatedObject=[object SimpleButton] ctrlKey=false altKey=false shiftKey=false] + button3, button3: [MouseEvent type="mouseOver" cancelable=false eventPhase=2 relatedObject=[object SimpleButton] ctrlKey=false altKey=false shiftKey=false] + null, button3: [MouseEvent type="mouseOver" cancelable=false eventPhase=3 relatedObject=[object SimpleButton] ctrlKey=false altKey=false shiftKey=false] + button2, button2: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=2 relatedObject=[object SimpleButton] shiftKey=false keyCode=0], relatedObjectName=button3 + null, button2: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=3 relatedObject=[object SimpleButton] shiftKey=false keyCode=0], relatedObjectName=button3 + button2, button2: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=2 relatedObject=[object SimpleButton] shiftKey=false keyCode=0], relatedObjectName=button3 + null, button2: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=3 relatedObject=[object SimpleButton] shiftKey=false keyCode=0], relatedObjectName=button3 + button3, button3: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=2 relatedObject=[object SimpleButton] shiftKey=false keyCode=0], relatedObjectName=button2 + null, button3: [FocusEvent type="focusIn" bubbles=true cancelable=false eventPhase=3 relatedObject=[object SimpleButton] shiftKey=false keyCode=0], relatedObjectName=button2 + button3, button3: [MouseEvent type="mouseDown" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, button3: [MouseEvent type="mouseDown" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + button3, button3: [MouseEvent type="mouseUp" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, button3: [MouseEvent type="mouseUp" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + button3, button3: [MouseEvent type="click" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, button3: [MouseEvent type="click" cancelable=false eventPhase=3 relatedObject=null ctrlKey=false altKey=false shiftKey=false] +Currently focused object: [object SimpleButton], button3 + button3, button3: [MouseEvent type="rollOut" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + button3, button3: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=2 relatedObject=null shiftKey=false keyCode=0] + null, button3: [FocusEvent type="mouseFocusChange" bubbles=true cancelable=true eventPhase=3 relatedObject=null shiftKey=false keyCode=0] + button3, button3: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=2 relatedObject=null shiftKey=false keyCode=0] + null, button3: [FocusEvent type="focusOut" bubbles=true cancelable=false eventPhase=3 relatedObject=null shiftKey=false keyCode=0] + null, null: [MouseEvent type="mouseDown" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, null: [MouseEvent type="mouseUp" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] + null, null: [MouseEvent type="click" cancelable=false eventPhase=2 relatedObject=null ctrlKey=false altKey=false shiftKey=false] +Currently focused object: null diff --git a/tests/tests/swfs/avm2/focus_events_focusable/test.swf b/tests/tests/swfs/avm2/focus_events_focusable/test.swf new file mode 100644 index 0000000000000000000000000000000000000000..bd257d992e0829e38043a6fd7449eb3c904371a0 GIT binary patch literal 3241 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 bnH{eg5A-2`2tE{G(CkACjRE*KxAIS`hucWz literal 0 HcmV?d00001 diff --git a/tests/tests/swfs/avm2/focus_events_focusable/test.toml b/tests/tests/swfs/avm2/focus_events_focusable/test.toml new file mode 100644 index 0000000000000..cf6123969a1d6 --- /dev/null +++ b/tests/tests/swfs/avm2/focus_events_focusable/test.toml @@ -0,0 +1 @@ +num_ticks = 1