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

Side by Side Diff: Source/devtools/front_end/framework_support/EventListeners.js

Issue 1268353005: [DevTools] Support JQuery event listeners (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Rebased Created 5 years, 4 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
OLDNEW
(Empty)
1 /*
2 * Copyright 2015 The Chromium Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file.
5 */
6
7 WebInspector.EventListenersFrameworkSupport = {}
8
9 WebInspector.EventListenersFrameworkSupport._frameworkSupportInitializedSymbol = Symbol("frameworkSupportInitialized");
10
11 /**
12 * @param {?WebInspector.ExecutionContext} context
13 * @return {!Promise<void>}
14 */
15 WebInspector.EventListenersFrameworkSupport.initializeOnContext = function(conte xt)
16 {
17 return new Promise(initializeFrameworksSupport);
18
19 /**
20 * @param {function(?)} fulfill
21 * @param {function(*)} reject
22 */
23 function initializeFrameworksSupport(fulfill, reject)
24 {
25 var initializeFunction = ["(function(){",
26 initializeFrameworkUserEventListeners.toString (),
27 "initializeFrameworkUserEventListeners();",
28 initializeFrameworkInternalEventHandlers.toStr ing(),
29 "initializeFrameworkInternalEventHandlers();",
30 "})();"].join("\n");
31 if (!context) {
32 reject("Empty context");
33 return;
34 }
35 if (WebInspector.EventListenersFrameworkSupport._frameworkSupportInitial izedSymbol in context) {
36 fulfill(undefined);
37 return;
38 }
39 context[WebInspector.EventListenersFrameworkSupport._frameworkSupportIni tializedSymbol] = true;
40 context.evaluate(initializeFunction, "EventListenersFrameworkSupport", f alse, true, true, false, fulfill);
41 }
42 }
43
44 function initializeFrameworkUserEventListeners()
45 {
46 // We should call this function once per context.
47 self.devtoolsFrameworkUserEventListeners = self.devtoolsFrameworkUserEventLi steners || [];
paulirish 2015/08/14 21:03:16 self.devtoolsFrameworkEventListeners I understand
48 self.devtoolsFrameworkUserEventListeners.push(jQueryUserEventListeners);
49
50 /**
51 * @param {!Object} node
52 * @return {!Array<!{type: string, listener: function(), useCapture: boolean }>}
53 */
54 function jQueryUserEventListeners(node)
55 {
56 if (!(node instanceof Node))
57 return [];
58 var hasJQuery = (typeof jQuery !== 'undefined') && jQuery.fn;
59 if (!hasJQuery)
60 return [];
61 var listeners = [];
62 var data = jQuery._data || jQuery.data;
63 if (typeof data === "function") {
64 var events = data(node, "events");
65 for (var type in events) {
66 for (var key in events[type]) {
67 var frameworkListener = events[type][key];
68 if (typeof frameworkListener === "object" || typeof framewor kListener === "function") {
69 var listener = {
70 handler: frameworkListener.handler || frameworkListe ner,
71 useCapture: true,
72 type: type
73 };
74 listeners.push(listener);
75 }
76 }
77 }
78 }
79 var entry = jQuery(node)[0];
80 if (entry) {
81 var entryEvents = entry["$events"];
82 for (var type in entryEvents) {
83 var events = entryEvents[type];
84 for (var key in events) {
85 if (typeof events[key] === "function") {
86 var listener = {
87 handler: events[key],
88 useCapture: true,
89 type: type
90 };
91 listeners.push(listener);
92 }
93 }
94 }
95 }
96 return listeners;
97 }
98 }
99
100 function initializeFrameworkInternalEventHandlers()
101 {
102 // We should call this function once per context.
103 self.devtoolsFrameworkInternalEventHandlers = self.devtoolsFrameworkInternal EventHandlers || [];
104 self.devtoolsFrameworkInternalEventHandlers.push(jQueryInternalEventHandlers );
105
106 /**
107 * @param {!Object} node
108 * @return {!Array<function()>}
109 */
110 function jQueryInternalEventHandlers(node)
111 {
112 if (!(node instanceof Node))
113 return [];
114 var hasJQuery = (typeof jQuery !== 'undefined') && jQuery.fn;
115 if (!hasJQuery)
116 return [];
117 var handlers = [];
118 var data = jQuery._data || jQuery.data;
119 if (typeof data === "function") {
120 var nodeData = data(node);
121 if (typeof nodeData.handle === "function")
122 handlers.push(nodeData.handle);
123 }
124 var entry = jQuery(node)[0];
125 if (entry && entry["$handle"])
126 handlers.push(entry["$handle"]);
127 return handlers;
128 }
129 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698