| Index: LayoutTests/fast/events/mouse-event-buttons-attribute.html
|
| diff --git a/LayoutTests/fast/events/mouse-event-buttons-attribute.html b/LayoutTests/fast/events/mouse-event-buttons-attribute.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d5fef635a799aa2f8ff0f0142f1f99ab67c47a7e
|
| --- /dev/null
|
| +++ b/LayoutTests/fast/events/mouse-event-buttons-attribute.html
|
| @@ -0,0 +1,153 @@
|
| +<!DOCTYPE html>
|
| +<div id="region" style="width:100px; height:100px; position:absolute; left:0px; top:0px;"></div>
|
| +<script src="../../resources/js-test.js"></script>
|
| +<script>
|
| +
|
| +const L = 'leftButton';
|
| +const R = 'rightButton';
|
| +const M = 'middleButton';
|
| +const TABLE = {
|
| + 'leftButton': 1,
|
| + 'rightButton': 2,
|
| + 'middleButton': 4
|
| +};
|
| +const ME = 'MouseEvent';
|
| +const WE = 'WheelEvent';
|
| +const GE = 'GestureEvent';
|
| +
|
| +var buttons = -2;
|
| +var div = document.getElementById('region');
|
| +var testSet = [
|
| + { type: ME, name: 'dblclick', modifiers: [L], expectedModifiers: [], action: doubleClickAction },
|
| + { type: ME, name: 'click', modifiers: [L, R], expectedModifiers: [R], action: clickAction },
|
| + { type: ME, name: 'mousedown', modifiers: [L, M, R], action: clickAction },
|
| + { type: ME, name: 'mouseup', modifiers: [L, M, R], expectedModifiers: [M, R], action: clickAction },
|
| + { type: ME, name: 'mousemove', modifiers: [], action: moveAction },
|
| + { type: ME, name: 'mousemove', modifiers: [L], action: moveAction },
|
| + { type: ME, name: 'mouseenter', modifiers: [R, M], action: moveAction },
|
| + { type: ME, name: 'mouseleave', modifiers: [L, R], action: moveAction },
|
| + { type: ME, name: 'mouseover', modifiers: [L, M], action: moveAction },
|
| + { type: ME, name: 'mouseout', modifiers: [L], action: moveAction },
|
| + { type: ME, name: 'contextmenu', modifiers: [R], action: rightClickAction, showContextMenuOnMouseUp: false },
|
| + { type: ME, name: 'contextmenu', modifiers: [R], expectedModifiers: [], action: rightClickAction, showContextMenuOnMouseUp: true },
|
| + { type: WE, name: 'mousewheel', modifiers: [L, R], action: wheelAction },
|
| + { type: GE, name: 'dblclick', modifiers: [L], expectedModifiers: [], action: doubleTapAction },
|
| + { type: GE, name: 'click', modifiers: [L], expectedModifiers: [], action: tapAction },
|
| + { type: GE, name: 'mousedown', modifiers: [L], action: tapAction },
|
| + { type: GE, name: 'mouseup', modifiers: [L], expectedModifiers: [], action: tapAction },
|
| + { type: GE, name: 'mousemove', modifiers: [], action: tapAction },
|
| + { type: GE, name: 'mousedown', modifiers: [R], action: longPressAction },
|
| + { type: GE, name: 'contextmenu', modifiers: [R], action: longPressAction, showContextMenuOnMouseUp: false },
|
| + { type: GE, name: 'contextmenu', modifiers: [R], expectedModifiers: [], action: longPressAction, showContextMenuOnMouseUp: true },
|
| + { type: GE, name: 'contextmenu', modifiers: [R], action: longTapAction, showContextMenuOnMouseUp: false },
|
| + { type: GE, name: 'contextmenu', modifiers: [R], expectedModifiers: [], action: longTapAction, showContextMenuOnMouseUp: true },
|
| +];
|
| +
|
| +function eventHandler(e)
|
| +{
|
| + buttons = e.buttons;
|
| +}
|
| +
|
| +function moveAction(modifiers)
|
| +{
|
| + eventSender.mouseMoveTo(-1, -1, modifiers);
|
| + eventSender.mouseMoveTo(50, 50, modifiers);
|
| +}
|
| +
|
| +function clickAction(modifiers)
|
| +{
|
| + moveAction(modifiers);
|
| + eventSender.mouseDown(0, modifiers);
|
| + eventSender.mouseUp(0, modifiers);
|
| +}
|
| +
|
| +function rightClickAction(modifiers)
|
| +{
|
| + moveAction(modifiers);
|
| + eventSender.mouseDown(2, modifiers);
|
| + eventSender.mouseUp(2, modifiers);
|
| +}
|
| +
|
| +function doubleClickAction(modifiers)
|
| +{
|
| + clickAction(modifiers);
|
| + clickAction(modifiers);
|
| +}
|
| +
|
| +function wheelAction(modifiers)
|
| +{
|
| + moveAction(modifiers);
|
| + eventSender.mouseScrollBy(0, 120, false, true, modifiers);
|
| +}
|
| +
|
| +function tapAction(modifiers)
|
| +{
|
| + eventSender.gestureTap(50, 50);
|
| +}
|
| +
|
| +function longPressAction(modifiers)
|
| +{
|
| + eventSender.gestureLongPress(50, 50);
|
| +}
|
| +
|
| +function longTapAction(modifiers)
|
| +{
|
| + eventSender.gestureLongPress(50, 50);
|
| + eventSender.gestureLongTap(50, 50);
|
| +}
|
| +
|
| +function doubleTapAction(modifiers)
|
| +{
|
| + eventSender.gestureTap(50, 50, 2);
|
| +}
|
| +
|
| +function raiseEvent(n)
|
| +{
|
| + if (!window.eventSender)
|
| + return;
|
| +
|
| + div.addEventListener(testSet[n].name, eventHandler, false);
|
| + testSet[n].action(testSet[n].modifiers);
|
| + testSet[n].buttons = buttons;
|
| + div.removeEventListener(testSet[n].name, eventHandler, false);
|
| + buttons = -1;
|
| +}
|
| +
|
| +function expectedValue(testItem)
|
| +{
|
| + var modifiers;
|
| + if (testItem.expectedModifiers != undefined)
|
| + modifiers = testItem.expectedModifiers;
|
| + else
|
| + modifiers = testItem.modifiers;
|
| +
|
| + var value = 0;
|
| + for (var i = 0; i < modifiers.length; i++)
|
| + value |= TABLE[modifiers[i]];
|
| +
|
| + return value;
|
| +}
|
| +
|
| +function printTestInfo(testItem)
|
| +{
|
| + var modifiers = testSet[i].expectedModifiers || testSet[i].modifiers;
|
| + var expectedModifiersString = ' -> shouldBe([' + modifiers +'])';
|
| +
|
| + var showContextMenuOnMouseUp = "";
|
| + if (testSet[i].showContextMenuOnMouseUp != undefined)
|
| + showContextMenuOnMouseUp = " with |showContextMenuOnMouseUp=" +
|
| + testSet[i].showContextMenuOnMouseUp + "|";
|
| +
|
| + debug(testSet[i].type + '::' + testSet[i].name + showContextMenuOnMouseUp + ' '
|
| + + testSet[i].action.name + '([' + testSet[i].modifiers + '])' + expectedModifiersString);
|
| +}
|
| +
|
| +for (var i = 0; i < testSet.length; i++) {
|
| + internals.settings.setShowContextMenuOnMouseUp(testSet[i].showContextMenuOnMouseUp);
|
| + raiseEvent(i);
|
| + printTestInfo(testSet[i]);
|
| + shouldBeEqualToNumber('testSet[i].buttons', expectedValue(testSet[i]));
|
| + debug('');
|
| +}
|
| +
|
| +</script>
|
|
|