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

Side by Side Diff: chrome/tools/test/reference_build/chrome_linux/resources/inspector/DOMAgent.js

Issue 177049: On Linux, move the passing of filedescriptors to a dedicated socketpair(). (Closed)
Patch Set: Removed *.d files from reference build Created 11 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
OLDNEW
(Empty)
1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * Copyright (C) 2009 Joseph Pecoraro
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met:
8 *
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * * Redistributions in binary form must reproduce the above
12 * copyright notice, this list of conditions and the following disclaimer
13 * in the documentation and/or other materials provided with the
14 * distribution.
15 * * Neither the name of Google Inc. nor the names of its
16 * contributors may be used to endorse or promote products derived from
17 * this software without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 */
31
32 WebInspector.DOMNode = function(doc, payload) {
33 this.ownerDocument = doc;
34
35 this.id = payload.id;
36 this.nodeType = payload.nodeType;
37 this.nodeName = payload.nodeName;
38 this._nodeValue = payload.nodeValue;
39 this.textContent = this.nodeValue;
40
41 this.attributes = [];
42 this._attributesMap = {};
43 if (payload.attributes)
44 this._setAttributesPayload(payload.attributes);
45
46 this._childNodeCount = payload.childNodeCount;
47 this.children = null;
48
49 this.nextSibling = null;
50 this.prevSibling = null;
51 this.firstChild = null;
52 this.lastChild = null;
53 this.parentNode = null;
54
55 if (payload.children)
56 this._setChildrenPayload(payload.children);
57
58 this._computedStyle = null;
59 this.style = null;
60 this._matchedCSSRules = [];
61
62 if (this.nodeType == Node.ELEMENT_NODE) {
63 if (this.nodeName == "HTML")
64 this.ownerDocument.documentElement = this;
65 if (this.nodeName == "BODY")
66 this.ownerDocument.body = this;
67 }
68 }
69
70 WebInspector.DOMNode.prototype = {
71 hasAttributes: function()
72 {
73 return this.attributes.length > 0;
74 },
75
76 hasChildNodes: function() {
77 return this._childNodeCount > 0;
78 },
79
80 get nodeValue() {
81 return this._nodeValue;
82 },
83
84 set nodeValue(value) {
85 if (this.nodeType != Node.TEXT_NODE)
86 return;
87 var self = this;
88 var callback = function()
89 {
90 self._nodeValue = value;
91 self.textContent = value;
92 };
93 this.ownerDocument._domAgent.setTextNodeValueAsync(this, value, callback );
94 },
95
96 getAttribute: function(name)
97 {
98 var attr = this._attributesMap[name];
99 return attr ? attr.value : undefined;
100 },
101
102 setAttribute: function(name, value)
103 {
104 var self = this;
105 var callback = function()
106 {
107 var attr = self._attributesMap[name];
108 if (attr)
109 attr.value = value;
110 else
111 attr = self._addAttribute(name, value);
112 };
113 this.ownerDocument._domAgent.setAttributeAsync(this, name, value, callba ck);
114 },
115
116 removeAttribute: function(name)
117 {
118 var self = this;
119 var callback = function()
120 {
121 delete self._attributesMap[name];
122 for (var i = 0; i < self.attributes.length; ++i) {
123 if (self.attributes[i].name == name) {
124 self.attributes.splice(i, 1);
125 break;
126 }
127 }
128 };
129 this.ownerDocument._domAgent.removeAttributeAsync(this, name, callback);
130 },
131
132 _setAttributesPayload: function(attrs)
133 {
134 for (var i = 0; i < attrs.length; i += 2)
135 this._addAttribute(attrs[i], attrs[i + 1]);
136 },
137
138 _insertChild: function(prev, payload)
139 {
140 var node = new WebInspector.DOMNode(this.ownerDocument, payload);
141 if (!prev)
142 // First node
143 this.children = [ node ];
144 else
145 this.children.splice(this.children.indexOf(prev) + 1, 0, node);
146 this._renumber();
147 return node;
148 },
149
150 removeChild_: function(node)
151 {
152 this.children.splice(this.children.indexOf(node), 1);
153 node.parentNode = null;
154 this._renumber();
155 },
156
157 _setChildrenPayload: function(payloads)
158 {
159 this.children = [];
160 for (var i = 0; i < payloads.length; ++i) {
161 var payload = payloads[i];
162 var node = new WebInspector.DOMNode(this.ownerDocument, payload);
163 this.children.push(node);
164 }
165 this._renumber();
166 },
167
168 _renumber: function()
169 {
170 this._childNodeCount = this.children.length;
171 if (this._childNodeCount == 0) {
172 this.firstChild = null;
173 this.lastChild = null;
174 return;
175 }
176 this.firstChild = this.children[0];
177 this.lastChild = this.children[this._childNodeCount - 1];
178 for (var i = 0; i < this._childNodeCount; ++i) {
179 var child = this.children[i];
180 child.nextSibling = i + 1 < this._childNodeCount ? this.children[i + 1] : null;
181 child.prevSibling = i - 1 >= 0 ? this.children[i - 1] : null;
182 child.parentNode = this;
183 }
184 },
185
186 _addAttribute: function(name, value)
187 {
188 var attr = {
189 "name": name,
190 "value": value,
191 "_node": this
192 };
193 this._attributesMap[name] = attr;
194 this.attributes.push(attr);
195 },
196
197 _setStyles: function(computedStyle, inlineStyle, styleAttributes, matchedCSS Rules)
198 {
199 this._computedStyle = new WebInspector.CSSStyleDeclaration(computedStyle );
200 this.style = new WebInspector.CSSStyleDeclaration(inlineStyle);
201
202 for (var name in styleAttributes) {
203 if (this._attributesMap[name])
204 this._attributesMap[name].style = new WebInspector.CSSStyleDecla ration(styleAttributes[name]);
205 }
206
207 this._matchedCSSRules = [];
208 for (var i = 0; i < matchedCSSRules.length; i++)
209 this._matchedCSSRules.push(WebInspector.CSSStyleDeclaration.parseRul e(matchedCSSRules[i]));
210 },
211
212 _clearStyles: function()
213 {
214 this.computedStyle = null;
215 this.style = null;
216 for (var name in this._attributesMap)
217 this._attributesMap[name].style = null;
218 this._matchedCSSRules = null;
219 }
220 }
221
222 WebInspector.DOMDocument = function(domAgent, defaultView, payload)
223 {
224 WebInspector.DOMNode.call(this, this, payload);
225 this._listeners = {};
226 this._domAgent = domAgent;
227 this.defaultView = defaultView;
228 }
229
230 WebInspector.DOMDocument.prototype = {
231
232 addEventListener: function(name, callback)
233 {
234 var listeners = this._listeners[name];
235 if (!listeners) {
236 listeners = [];
237 this._listeners[name] = listeners;
238 }
239 listeners.push(callback);
240 },
241
242 removeEventListener: function(name, callback)
243 {
244 var listeners = this._listeners[name];
245 if (!listeners)
246 return;
247
248 var index = listeners.indexOf(callback);
249 if (index != -1)
250 listeners.splice(index, 1);
251 },
252
253 _fireDomEvent: function(name, event)
254 {
255 var listeners = this._listeners[name];
256 if (!listeners)
257 return;
258
259 for (var i = 0; i < listeners.length; ++i) {
260 var listener = listeners[i];
261 listener.call(this, event);
262 }
263 }
264 }
265
266 WebInspector.DOMDocument.prototype.__proto__ = WebInspector.DOMNode.prototype;
267
268
269 WebInspector.DOMWindow = function(domAgent)
270 {
271 this._domAgent = domAgent;
272 }
273
274 WebInspector.DOMWindow.prototype = {
275 get document()
276 {
277 return this._domAgent.document;
278 },
279
280 get Node()
281 {
282 return WebInspector.DOMNode;
283 },
284
285 get Element()
286 {
287 return WebInspector.DOMNode;
288 },
289
290 Object: function()
291 {
292 },
293
294 getComputedStyle: function(node)
295 {
296 return node._computedStyle;
297 },
298
299 getMatchedCSSRules: function(node, pseudoElement, authorOnly)
300 {
301 return node._matchedCSSRules;
302 }
303 }
304
305 WebInspector.DOMAgent = function() {
306 this._window = new WebInspector.DOMWindow(this);
307 this._idToDOMNode = null;
308 this.document = null;
309
310 // TODO: update ElementsPanel to not track embedded iframes - it is already being handled
311 // in the agent backend.
312
313 // Whitespace is ignored in InspectorDOMAgent already -> no need to filter.
314 // TODO: Either remove all of its usages or push value into the agent backen d.
315 Preferences.ignoreWhitespace = false;
316 }
317
318 WebInspector.DOMAgent.prototype = {
319 get domWindow()
320 {
321 return this._window;
322 },
323
324 getChildNodesAsync: function(parent, callback)
325 {
326 var children = parent.children;
327 if (children) {
328 callback(children);
329 return;
330 }
331 function mycallback() {
332 callback(parent.children);
333 }
334 var callId = WebInspector.Callback.wrap(mycallback);
335 InspectorController.getChildNodes(callId, parent.id);
336 },
337
338 setAttributeAsync: function(node, name, value, callback)
339 {
340 var mycallback = this._didApplyDomChange.bind(this, node, callback);
341 InspectorController.setAttribute(WebInspector.Callback.wrap(mycallback), node.id, name, value);
342 },
343
344 removeAttributeAsync: function(node, name, callback)
345 {
346 var mycallback = this._didApplyDomChange.bind(this, node, callback);
347 InspectorController.removeAttribute(WebInspector.Callback.wrap(mycallbac k), node.id, name);
348 },
349
350 setTextNodeValueAsync: function(node, text, callback)
351 {
352 var mycallback = this._didApplyDomChange.bind(this, node, callback);
353 InspectorController.setTextNodeValue(WebInspector.Callback.wrap(mycallba ck), node.id, text);
354 },
355
356 _didApplyDomChange: function(node, callback, success)
357 {
358 if (!success)
359 return;
360 callback();
361 // TODO(pfeldman): Fix this hack.
362 var elem = WebInspector.panels.elements.treeOutline.findTreeElement(node );
363 if (elem) {
364 elem._updateTitle();
365 }
366 },
367
368 _attributesUpdated: function(nodeId, attrsArray)
369 {
370 var node = this._idToDOMNode[nodeId];
371 node._setAttributesPayload(attrsArray);
372 },
373
374 nodeForId: function(nodeId) {
375 return this._idToDOMNode[nodeId];
376 },
377
378 _setDocument: function(payload)
379 {
380 this.document = new WebInspector.DOMDocument(this, this._window, payload );
381 this._idToDOMNode = {};
382 this._idToDOMNode[payload.id] = this.document;
383 this._bindNodes(this.document.children);
384 WebInspector.panels.elements.reset();
385 },
386
387 _setDetachedRoot: function(payload)
388 {
389 var root = new WebInspector.DOMNode(this.document, payload);
390 this._idToDOMNode[payload.id] = root;
391 },
392
393 _setChildNodes: function(parentId, payloads)
394 {
395 var parent = this._idToDOMNode[parentId];
396 parent._setChildrenPayload(payloads);
397 this._bindNodes(parent.children);
398 },
399
400 _bindNodes: function(children)
401 {
402 for (var i = 0; i < children.length; ++i) {
403 var child = children[i];
404 this._idToDOMNode[child.id] = child;
405 if (child.children)
406 this._bindNodes(child.children);
407 }
408 },
409
410 _childNodeCountUpdated: function(nodeId, newValue)
411 {
412 var node = this._idToDOMNode[nodeId];
413 node._childNodeCount = newValue;
414 var outline = WebInspector.panels.elements.treeOutline;
415 var treeElement = outline.findTreeElement(node);
416 if (treeElement) {
417 treeElement.hasChildren = newValue;
418 treeElement.whitespaceIgnored = Preferences.ignoreWhitespace;
419 }
420 },
421
422 _childNodeInserted: function(parentId, prevId, payload)
423 {
424 var parent = this._idToDOMNode[parentId];
425 var prev = this._idToDOMNode[prevId];
426 var node = parent._insertChild(prev, payload);
427 this._idToDOMNode[node.id] = node;
428 var event = { target : node, relatedNode : parent };
429 this.document._fireDomEvent("DOMNodeInserted", event);
430 },
431
432 _childNodeRemoved: function(parentId, nodeId)
433 {
434 var parent = this._idToDOMNode[parentId];
435 var node = this._idToDOMNode[nodeId];
436 parent.removeChild_(node);
437 var event = { target : node, relatedNode : parent };
438 this.document._fireDomEvent("DOMNodeRemoved", event);
439 delete this._idToDOMNode[nodeId];
440 }
441 }
442
443 WebInspector.Cookies = {}
444
445 WebInspector.Cookies.getCookiesAsync = function(callback)
446 {
447 function mycallback(cookies, cookiesString) {
448 if (cookiesString)
449 callback(WebInspector.Cookies.buildCookiesFromString(cookiesString), false);
450 else
451 callback(cookies, true);
452 }
453 var callId = WebInspector.Callback.wrap(mycallback);
454 InspectorController.getCookies(callId);
455 }
456
457 WebInspector.Cookies.buildCookiesFromString = function(rawCookieString)
458 {
459 var rawCookies = rawCookieString.split(/;\s*/);
460 var cookies = [];
461
462 if (!(/^\s*$/.test(rawCookieString))) {
463 for (var i = 0; i < rawCookies.length; ++i) {
464 var cookie = rawCookies[i];
465 var delimIndex = cookie.indexOf("=");
466 var name = cookie.substring(0, delimIndex);
467 var value = cookie.substring(delimIndex + 1);
468 var size = name.length + value.length;
469 cookies.push({ name: name, value: value, size: size });
470 }
471 }
472
473 return cookies;
474 }
475
476 WebInspector.CSSStyleDeclaration = function(payload)
477 {
478 this.id = payload.id;
479 this.width = payload.width;
480 this.height = payload.height;
481 this.__disabledProperties = payload.__disabledProperties;
482 this.__disabledPropertyValues = payload.__disabledPropertyValues;
483 this.__disabledPropertyPriorities = payload.__disabledPropertyPriorities;
484 this.uniqueStyleProperties = payload.uniqueStyleProperties;
485 this._shorthandValues = payload.shorthandValues;
486 this._propertyMap = {};
487 this._longhandProperties = {};
488 this.length = payload.properties.length;
489
490 for (var i = 0; i < this.length; ++i) {
491 var property = payload.properties[i];
492 var name = property.name;
493 this[i] = name;
494 this._propertyMap[name] = property;
495 }
496
497 // Index longhand properties.
498 for (var i = 0; i < this.uniqueStyleProperties.length; ++i) {
499 var name = this.uniqueStyleProperties[i];
500 var property = this._propertyMap[name];
501 if (property.shorthand) {
502 var longhands = this._longhandProperties[property.shorthand];
503 if (!longhands) {
504 longhands = [];
505 this._longhandProperties[property.shorthand] = longhands;
506 }
507 longhands.push(name);
508 }
509 }
510 }
511
512 WebInspector.CSSStyleDeclaration.parseStyle = function(payload)
513 {
514 return new WebInspector.CSSStyleDeclaration(payload);
515 }
516
517 WebInspector.CSSStyleDeclaration.parseRule = function(payload)
518 {
519 var rule = {};
520 rule.id = payload.id;
521 rule.selectorText = payload.selectorText;
522 rule.style = new WebInspector.CSSStyleDeclaration(payload.style);
523 rule.style.parentRule = rule;
524 rule.isUserAgent = payload.isUserAgent;
525 rule.isUser = payload.isUser;
526 rule.isViaInspector = payload.isViaInspector;
527 if (payload.parentStyleSheet)
528 rule.parentStyleSheet = { href: payload.parentStyleSheet.href };
529
530 return rule;
531 }
532
533 WebInspector.CSSStyleDeclaration.prototype = {
534 getPropertyValue: function(name)
535 {
536 var property = this._propertyMap[name];
537 return property ? property.value : "";
538 },
539
540 getPropertyPriority: function(name)
541 {
542 var property = this._propertyMap[name];
543 return property ? property.priority : "";
544 },
545
546 getPropertyShorthand: function(name)
547 {
548 var property = this._propertyMap[name];
549 return property ? property.shorthand : "";
550 },
551
552 isPropertyImplicit: function(name)
553 {
554 var property = this._propertyMap[name];
555 return property ? property.implicit : "";
556 },
557
558 styleTextWithShorthands: function()
559 {
560 var cssText = "";
561 var foundProperties = {};
562 for (var i = 0; i < this.length; ++i) {
563 var individualProperty = this[i];
564 var shorthandProperty = this.getPropertyShorthand(individualProperty );
565 var propertyName = (shorthandProperty || individualProperty);
566
567 if (propertyName in foundProperties)
568 continue;
569
570 if (shorthandProperty) {
571 var value = this.getPropertyValue(shorthandProperty);
572 var priority = this.getShorthandPriority(shorthandProperty);
573 } else {
574 var value = this.getPropertyValue(individualProperty);
575 var priority = this.getPropertyPriority(individualProperty);
576 }
577
578 foundProperties[propertyName] = true;
579
580 cssText += propertyName + ": " + value;
581 if (priority)
582 cssText += " !" + priority;
583 cssText += "; ";
584 }
585
586 return cssText;
587 },
588
589 getLonghandProperties: function(name)
590 {
591 return this._longhandProperties[name] || [];
592 },
593
594 getShorthandValue: function(shorthandProperty)
595 {
596 return this._shorthandValues[shorthandProperty];
597 },
598
599 getShorthandPriority: function(shorthandProperty)
600 {
601 var priority = this.getPropertyPriority(shorthandProperty);
602 if (priority)
603 return priority;
604
605 var longhands = this._longhandProperties[shorthandProperty];
606 return longhands ? this.getPropertyPriority(longhands[0]) : null;
607 }
608 }
609
610 WebInspector.attributesUpdated = function()
611 {
612 this.domAgent._attributesUpdated.apply(this.domAgent, arguments);
613 }
614
615 WebInspector.setDocument = function()
616 {
617 this.domAgent._setDocument.apply(this.domAgent, arguments);
618 }
619
620 WebInspector.setDetachedRoot = function()
621 {
622 this.domAgent._setDetachedRoot.apply(this.domAgent, arguments);
623 }
624
625 WebInspector.setChildNodes = function()
626 {
627 this.domAgent._setChildNodes.apply(this.domAgent, arguments);
628 }
629
630 WebInspector.childNodeCountUpdated = function()
631 {
632 this.domAgent._childNodeCountUpdated.apply(this.domAgent, arguments);
633 }
634
635 WebInspector.childNodeInserted = function()
636 {
637 this.domAgent._childNodeInserted.apply(this.domAgent, arguments);
638 }
639
640 WebInspector.childNodeRemoved = function()
641 {
642 this.domAgent._childNodeRemoved.apply(this.domAgent, arguments);
643 }
644
645 WebInspector.didGetCookies = WebInspector.Callback.processCallback;
646 WebInspector.didGetChildNodes = WebInspector.Callback.processCallback;
647 WebInspector.didPerformSearch = WebInspector.Callback.processCallback;
648 WebInspector.didApplyDomChange = WebInspector.Callback.processCallback;
649 WebInspector.didRemoveAttribute = WebInspector.Callback.processCallback;
650 WebInspector.didSetTextNodeValue = WebInspector.Callback.processCallback;
651
652 // Temporary methods that will be dispatched via InspectorController into the in jected context.
653 InspectorController.getStyles = function(nodeId, authorOnly, callback)
654 {
655 setTimeout(function() {
656 callback(InjectedScript.getStyles(nodeId, authorOnly));
657 }, 0);
658 }
659
660 InspectorController.getComputedStyle = function(nodeId, callback)
661 {
662 setTimeout(function() {
663 callback(InjectedScript.getComputedStyle(nodeId));
664 }, 0);
665 }
666
667 InspectorController.getInlineStyle = function(nodeId, callback)
668 {
669 setTimeout(function() {
670 callback(InjectedScript.getInlineStyle(nodeId));
671 }, 0);
672 }
673
674 InspectorController.applyStyleText = function(styleId, styleText, propertyName, callback)
675 {
676 setTimeout(function() {
677 callback(InjectedScript.applyStyleText(styleId, styleText, propertyName) );
678 }, 0);
679 }
680
681 InspectorController.setStyleText = function(style, cssText, callback)
682 {
683 setTimeout(function() {
684 callback(InjectedScript.setStyleText(style, cssText));
685 }, 0);
686 }
687
688 InspectorController.toggleStyleEnabled = function(styleId, propertyName, disable d, callback)
689 {
690 setTimeout(function() {
691 callback(InjectedScript.toggleStyleEnabled(styleId, propertyName, disabl ed));
692 }, 0);
693 }
694
695 InspectorController.applyStyleRuleText = function(ruleId, newContent, selectedNo deId, callback)
696 {
697 setTimeout(function() {
698 callback(InjectedScript.applyStyleRuleText(ruleId, newContent, selectedN odeId));
699 }, 0);
700 }
701
702 InspectorController.addStyleSelector = function(newContent, selectedNodeId, call back)
703 {
704 setTimeout(function() {
705 callback(InjectedScript.addStyleSelector(newContent, selectedNodeId));
706 }, 0);
707 }
708
709 InspectorController.setStyleProperty = function(styleId, name, value, callback)
710 {
711 setTimeout(function() {
712 callback(InjectedScript.setStyleProperty(styleId, name, value));
713 }, 0);
714 }
715
716 InspectorController.getPrototypes = function(nodeId, callback)
717 {
718 setTimeout(function() {
719 callback(InjectedScript.getPrototypes(nodeId));
720 }, 0);
721 }
722
723 InspectorController.getProperties = function(objectProxy, ignoreHasOwnProperty, callback)
724 {
725 setTimeout(function() {
726 callback(InjectedScript.getProperties(objectProxy, ignoreHasOwnProperty) );
727 }, 0);
728 }
729
730 InspectorController.setPropertyValue = function(objectProxy, propertyName, expre ssion, callback)
731 {
732 setTimeout(function() {
733 callback(InjectedScript.setPropertyValue(objectProxy, propertyName, expr ession));
734 }, 0);
735 }
736
737 InspectorController.evaluate = function(expression, callback)
738 {
739 setTimeout(function() {
740 callback(InjectedScript.evaluate(expression));
741 }, 0);
742 }
743
744 InspectorController.addInspectedNode = function(nodeId, callback)
745 {
746 setTimeout(function() {
747 callback(InjectedScript.addInspectedNode(nodeId));
748 }, 0);
749 }
750
751 InspectorController.pushNodeToFrontend = function(nodeId, callback)
752 {
753 setTimeout(function() {
754 callback(InjectedScript.pushNodeToFrontend(nodeId));
755 }, 0);
756 }
757
758 InspectorController.performSearch = function(whitespaceTrimmedQuery, callback)
759 {
760 setTimeout(function() {
761 callback(InjectedScript.performSearch(whitespaceTrimmedQuery));
762 }, 0);
763 }
764
765 InspectorController.searchCanceled = function(callback)
766 {
767 setTimeout(function() {
768 callback(InjectedScript.searchCanceled());
769 }, 0);
770 }
771
772 InspectorController.openInInspectedWindow = function(url, callback)
773 {
774 setTimeout(function() {
775 callback(InjectedScript.openInInspectedWindow(url));
776 }, 0);
777 }
778
779 InspectorController.getCallFrames = function(callback)
780 {
781 setTimeout(function() {
782 callback(InjectedScript.getCallFrames());
783 }, 0);
784 }
785
786 InspectorController.evaluateInCallFrame = function(callFrameId, code, callback)
787 {
788 setTimeout(function() {
789 callback(InjectedScript.evaluateInCallFrame(callFrameId, code));
790 }, 0);
791 }
792
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698