Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(222)

Unified Diff: sdk/lib/html/dart2js/html_dart2js.dart

Issue 1126463005: Clean up WheelEvent (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Review fixes" Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
Download patch
« no previous file with comments | « no previous file | sdk/lib/html/dartium/html_dartium.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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');
« no previous file with comments | « no previous file | sdk/lib/html/dartium/html_dartium.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698