| Index: sdk/lib/html/dart2js/html_dart2js.dart
|
| diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart
|
| index 0e1cf354904705aecdcceb1840baf1ad15f49e3e..c193c44edd135cbee776835c907210c6263d0525 100644
|
| --- a/sdk/lib/html/dart2js/html_dart2js.dart
|
| +++ b/sdk/lib/html/dart2js/html_dart2js.dart
|
| @@ -2611,14 +2611,23 @@ class Comment extends CharacterData {
|
| class CompositionEvent extends UIEvent {
|
| factory CompositionEvent(String type,
|
| {bool canBubble: false, bool cancelable: false, Window view,
|
| - String data}) {
|
| + String data, String locale}) {
|
| if (view == null) {
|
| view = window;
|
| }
|
| var e = document._createEvent("CompositionEvent");
|
| - e._initCompositionEvent(type, canBubble, cancelable, view, data);
|
| +
|
| + if (Device.isFirefox) {
|
| + // Firefox requires the locale parameter that isn't supported elsewhere.
|
| + JS('void', '#.initCompositionEvent(#, #, #, #, #, #)',
|
| + e, type, canBubble, cancelable, view, data, locale);
|
| + } else {
|
| + e._initCompositionEvent(type, canBubble, cancelable, view, data);
|
| + }
|
| +
|
| return e;
|
| }
|
| +
|
| // To suppress missing implicit constructor warnings.
|
| factory CompositionEvent._() { throw new UnsupportedError("Not supported"); }
|
|
|
| @@ -12818,18 +12827,7 @@ abstract class Element extends Node implements GlobalEventHandlers, ParentNode,
|
| const _CustomEventStreamProvider<WheelEvent>(
|
| Element._determineMouseWheelEventType);
|
|
|
| - static String _determineMouseWheelEventType(EventTarget e) {
|
| - if (JS('bool', '#.onwheel !== undefined', e)) {
|
| - // W3C spec, and should be IE9+, but IE has a bug exposing onwheel.
|
| - return 'wheel';
|
| - } else if (JS('bool', '#.onmousewheel !== undefined', e)) {
|
| - // Chrome & IE
|
| - return 'mousewheel';
|
| - } else {
|
| - // Firefox
|
| - return 'DOMMouseScroll';
|
| - }
|
| - }
|
| + static String _determineMouseWheelEventType(EventTarget e) => 'wheel';
|
|
|
| /**
|
| * Static factory designed to expose `transitionend` events to event
|
| @@ -31560,78 +31558,45 @@ class WebSocket extends EventTarget {
|
|
|
|
|
| @DomName('WheelEvent')
|
| -@Native("WheelEvent,MouseWheelEvent,MouseScrollEvent")
|
| +@Native("WheelEvent")
|
| class WheelEvent extends MouseEvent {
|
|
|
| factory WheelEvent(String type,
|
| - {Window view, int deltaX: 0, int deltaY: 0,
|
| + {Window view, int deltaX: 0, int deltaY: 0, int deltaZ: 0,
|
| + int deltaMode: 0,
|
| int detail: 0, int screenX: 0, int screenY: 0, int clientX: 0,
|
| int clientY: 0, int button: 0, bool canBubble: true,
|
| bool cancelable: true, bool ctrlKey: false, bool altKey: false,
|
| bool shiftKey: false, bool metaKey: false, EventTarget relatedTarget}) {
|
| +
|
| + var options = {
|
| + 'view': view,
|
| + 'deltaMode': deltaMode,
|
| + 'deltaX': deltaX,
|
| + 'deltaY': deltaY,
|
| + 'deltaZ': deltaZ,
|
| + 'detail': detail,
|
| + 'screenX': screenX,
|
| + 'screenY': screenY,
|
| + 'clientX': clientX,
|
| + 'clientY': clientY,
|
| + 'button': button,
|
| + 'bubbles': canBubble,
|
| + 'cancelable': cancelable,
|
| + 'ctrlKey': ctrlKey,
|
| + 'altKey': altKey,
|
| + 'shiftKey': shiftKey,
|
| + 'metaKey': metaKey,
|
| + 'relatedTarget': relatedTarget,
|
| + };
|
| +
|
| if (view == null) {
|
| view = window;
|
| }
|
| - var eventType = 'WheelEvent';
|
| - if (Device.isFirefox) {
|
| - eventType = 'MouseScrollEvents';
|
| - }
|
| - final event = document._createEvent(eventType);
|
| - // If polyfilling, then flip these because we'll flip them back to match
|
| - // the W3C standard:
|
| - // http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html#events-WheelEvent-deltaY
|
| - if (JS('bool', '#.deltaY === undefined', event)) {
|
| - deltaX = -deltaX;
|
| - deltaY = -deltaY;
|
| - }
|
| - if (event._hasInitWheelEvent) {
|
| - var modifiers = [];
|
| - if (ctrlKey) {
|
| - modifiers.push('Control');
|
| - }
|
| - if (altKey) {
|
| - modifiers.push('Alt');
|
| - }
|
| - if (shiftKey) {
|
| - modifiers.push('Shift');
|
| - }
|
| - if (metaKey) {
|
| - modifiers.push('Meta');
|
| - }
|
| - event._initWheelEvent(type, canBubble, cancelable, view, detail, screenX,
|
| - screenY, clientX, clientY, button, relatedTarget, modifiers.join(' '),
|
| - deltaX, deltaY, 0, 0);
|
| - } else if (event._hasInitMouseScrollEvent) {
|
| - var axis = 0;
|
| - var detail = 0;
|
| - if (deltaX != 0 && deltaY != 0) {
|
| - throw new UnsupportedError(
|
| - 'Cannot modify deltaX and deltaY simultaneously');
|
| - }
|
| - if (deltaY != 0) {
|
| - detail = deltaY;
|
| - axis = JS('int', 'MouseScrollEvent.VERTICAL_AXIS');
|
| - } else if (deltaX != 0) {
|
| - detail = deltaX;
|
| - axis = JS('int', 'MouseScrollEvent.HORIZONTAL_AXIS');
|
| - }
|
| - event._initMouseScrollEvent(type, canBubble, cancelable, view, detail,
|
| - screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey,
|
| - metaKey, button, relatedTarget, axis);
|
| - } else {
|
| - // Chrome does an auto-convert to pixels.
|
| - deltaY = deltaY ~/ 120;
|
| -
|
| - event._initMouseEvent(type, canBubble, cancelable, view, detail,
|
| - screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey,
|
| - metaKey, button, relatedTarget);
|
| - JS('void', '#.initWebKitWheelEvent(#, #, #, #, #, #, #, #, #, #, #)',
|
| - event, deltaX, deltaY,
|
| - view, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey,
|
| - metaKey);
|
| - }
|
| +
|
| + return JS('WheelEvent', 'new WheelEvent(#, #)',
|
| + type, convertDartToNative_Dictionary(options));
|
|
|
| - return event;
|
| }
|
|
|
| // To suppress missing implicit constructor warnings.
|
| @@ -31652,18 +31617,15 @@ class WheelEvent extends MouseEvent {
|
| @JSName('deltaX')
|
| @DomName('WheelEvent.deltaX')
|
| @DocsEditable()
|
| - @Experimental() // untriaged
|
| final double _deltaX;
|
|
|
| @JSName('deltaY')
|
| @DomName('WheelEvent.deltaY')
|
| @DocsEditable()
|
| - @Experimental() // untriaged
|
| final double _deltaY;
|
|
|
| @DomName('WheelEvent.deltaZ')
|
| @DocsEditable()
|
| - @Experimental() // untriaged
|
| final double deltaZ;
|
|
|
|
|
| @@ -31680,24 +31642,6 @@ class WheelEvent extends MouseEvent {
|
| if (JS('bool', '#.deltaY !== undefined', this)) {
|
| // W3C WheelEvent
|
| return this._deltaY;
|
| - } else if (JS('bool', '#.wheelDelta !== undefined', this)) {
|
| - // Chrome and IE
|
| - return -this._wheelDelta;
|
| - } else if (JS('bool', '#.detail !== undefined', this)) {
|
| - // Firefox
|
| -
|
| - // Handle DOMMouseScroll case where it uses detail and the axis to
|
| - // differentiate.
|
| - if (JS('bool', '#.axis == MouseScrollEvent.VERTICAL_AXIS', this)) {
|
| - var detail = this._detail;
|
| - // Firefox is normally the number of lines to scale (normally 3)
|
| - // so multiply it by 40 to get pixels to move, matching IE & WebKit.
|
| - if (detail.abs() < 100) {
|
| - return -detail * 40;
|
| - }
|
| - return -detail;
|
| - }
|
| - return 0;
|
| }
|
| throw new UnsupportedError(
|
| 'deltaY is not supported');
|
| @@ -31716,26 +31660,6 @@ class WheelEvent extends MouseEvent {
|
| if (JS('bool', '#.deltaX !== undefined', this)) {
|
| // W3C WheelEvent
|
| return this._deltaX;
|
| - } else if (JS('bool', '#.wheelDeltaX !== undefined', this)) {
|
| - // Chrome
|
| - return -this._wheelDeltaX;
|
| - } else if (JS('bool', '#.detail !== undefined', this)) {
|
| - // Firefox and IE.
|
| - // IE will have detail set but will not set axis.
|
| -
|
| - // Handle DOMMouseScroll case where it uses detail and the axis to
|
| - // differentiate.
|
| - if (JS('bool', '#.axis !== undefined && '
|
| - '#.axis == MouseScrollEvent.HORIZONTAL_AXIS', this, this)) {
|
| - var detail = this._detail;
|
| - // Firefox is normally the number of lines to scale (normally 3)
|
| - // so multiply it by 40 to get pixels to move, matching IE & WebKit.
|
| - if (detail < 100) {
|
| - return -detail * 40;
|
| - }
|
| - return -detail;
|
| - }
|
| - return 0;
|
| }
|
| throw new UnsupportedError(
|
| 'deltaX is not supported');
|
|
|