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

Side by Side Diff: pkg/polymer/lib/src/events.dart

Issue 582113002: fix findController for non-dart elements (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: support native elements, and add tests Created 6 years, 3 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:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/polymer/CHANGELOG.md ('k') | pkg/polymer/pubspec.yaml » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /// Code from declaration/events.js 5 /// Code from declaration/events.js
6 part of polymer; 6 part of polymer;
7 7
8 /// An extension of [polymer_expressions.PolymerExpressions] that adds support 8 /// An extension of [polymer_expressions.PolymerExpressions] that adds support
9 /// for binding events using `on-eventName` using [PolymerEventBindings]. 9 /// for binding events using `on-eventName` using [PolymerEventBindings].
10 // TODO(jmesserly): the JS layering is a bit odd, with polymer-dev implementing 10 // TODO(jmesserly): the JS layering is a bit odd, with polymer-dev implementing
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 } 45 }
46 46
47 /// A mixin for a [BindingDelegate] to add Polymer event support. 47 /// A mixin for a [BindingDelegate] to add Polymer event support.
48 /// This is included in [PolymerExpressions]. 48 /// This is included in [PolymerExpressions].
49 abstract class PolymerEventBindings { 49 abstract class PolymerEventBindings {
50 /// Finds the event controller for this node. 50 /// Finds the event controller for this node.
51 Element findController(Node node) { 51 Element findController(Node node) {
52 while (node.parentNode != null) { 52 while (node.parentNode != null) {
53 if (node is Polymer && node.eventController != null) { 53 if (node is Polymer && node.eventController != null) {
54 return node.eventController; 54 return node.eventController;
55 } else if (node is Element) {
56 // If it is a normal element, js polymer element, or dart wrapper to a
57 // js polymer element, then we try js interop.
58 var eventController =
59 new JsObject.fromBrowserObject(node)['eventController'];
60 if (eventController != null) return eventController;
55 } 61 }
56 node = node.parentNode; 62 node = node.parentNode;
57 } 63 }
58 return node is ShadowRoot ? node.host : null; 64 return node is ShadowRoot ? node.host : null;
59 } 65 }
60 66
61 EventListener getEventHandler(controller, target, String method) => (e) { 67 EventListener getEventHandler(controller, target, String method) => (e) {
62 if (controller == null || controller is! Polymer) { 68 if (controller == null || controller is! Polymer) {
63 controller = findController(target); 69 controller = findController(target);
64 } 70 }
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 return map; 169 return map;
164 }(); 170 }();
165 171
166 // Dart note: we need this function because we have additional renames JS does 172 // Dart note: we need this function because we have additional renames JS does
167 // not have. The JS renames are simply case differences, whereas we have ones 173 // not have. The JS renames are simply case differences, whereas we have ones
168 // like doubleclick -> dblclick and stripping the webkit prefix. 174 // like doubleclick -> dblclick and stripping the webkit prefix.
169 String _eventNameFromType(String eventType) { 175 String _eventNameFromType(String eventType) {
170 final result = _reverseEventTranslations[eventType]; 176 final result = _reverseEventTranslations[eventType];
171 return result != null ? result : eventType; 177 return result != null ? result : eventType;
172 } 178 }
OLDNEW
« no previous file with comments | « pkg/polymer/CHANGELOG.md ('k') | pkg/polymer/pubspec.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698