Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: lib/aardvark.js

Issue 29323439: Issue 2877 - Element Hiding Helper causes tab to crash when selecting some elements (Closed)
Patch Set: Created Aug. 10, 2015, 9:22 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« chrome/content/frameScript.js ('K') | « chrome/content/frameScript.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * This Source Code is subject to the terms of the Mozilla Public License 2 * This Source Code is subject to the terms of the Mozilla Public License
3 * version 2.0 (the "License"). You can obtain a copy of the License at 3 * version 2.0 (the "License"). You can obtain a copy of the License at
4 * http://mozilla.org/MPL/2.0/. 4 * http://mozilla.org/MPL/2.0/.
5 */ 5 */
6 6
7 let {Prefs} = require("prefs"); 7 let {Prefs} = require("prefs");
8 8
9 // Make sure to stop selection when we are uninstalled 9 // Make sure to stop selection when we are uninstalled
10 onShutdown.add(() => Aardvark.quit()); 10 onShutdown.add(() => Aardvark.quit());
11 11
12 // To be replaced when selection starts 12 // To be replaced when selection starts
13 function E(id) {return null;} 13 function E(id) {return null;}
14 14
15 let messageCounter = 0;
16
15 /********************************* 17 /*********************************
16 * Minimal element creation code * 18 * Minimal element creation code *
17 *********************************/ 19 *********************************/
18 20
19 function createElement(doc, tagName, attrs, children) 21 function createElement(doc, tagName, attrs, children)
20 { 22 {
21 let el = doc.createElement(tagName); 23 let el = doc.createElement(tagName);
22 if (attrs) 24 if (attrs)
23 for (let key in attrs) 25 for (let key in attrs)
24 el.setAttribute(key, attrs[key]); 26 el.setAttribute(key, attrs[key]);
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 this.boxElem = null; 585 this.boxElem = null;
584 E = id => null; 586 E = id => null;
585 return false; 587 return false;
586 }, 588 },
587 589
588 select: function(elem) 590 select: function(elem)
589 { 591 {
590 if (!elem) 592 if (!elem)
591 return false; 593 return false;
592 594
595 let messageId = ++messageCounter;
596 let callback = (message) =>
597 {
598 let response = message.data;
599 if (response.messageId != messageId)
600 return;
601
602 this.browser.selectedBrowser.messageManager.removeMessageListener(
603 "ElemHideHelper:GetNodeInfo:Response",
604 callback
605 );
606
607 if (!response.nodeData)
608 return;
609
610 this.window.openDialog("chrome://elemhidehelper/content/composer.xul",
611 "_blank", "chrome,centerscreen,resizable,dialog=no", response);
612 this.quit();
613 };
614
615
saroyanm 2015/08/11 13:50:14 Nit: please remove new line here.
Wladimir Palant 2015/08/11 13:57:06 Done.
616 this.browser.selectedBrowser.messageManager.addMessageListener(
617 "ElemHideHelper:GetNodeInfo:Response",
618 callback
619 );
593 this.browser.selectedBrowser.messageManager.sendAsyncMessage( 620 this.browser.selectedBrowser.messageManager.sendAsyncMessage(
594 "ElemHideHelper:GetNodeInfo", 621 "ElemHideHelper:GetNodeInfo",
595 null, 622 messageId,
596 { 623 {
597 element: elem, 624 element: elem
598 callback: (response) =>
599 {
600 response = JSON.parse(response);
601 if (!response.nodeData)
602 return;
603
604 this.window.openDialog("chrome://elemhidehelper/content/composer.xul",
605 "_blank", "chrome,centerscreen,resizable,dialog=no", response);
606 this.quit();
607 }
608 } 625 }
609 ); 626 );
610 return false; 627 return false;
611 }, 628 },
612 629
613 blinkElement: function(elem) 630 blinkElement: function(elem)
614 { 631 {
615 if (!elem) 632 if (!elem)
616 return false; 633 return false;
617 634
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
779 // Show help box 796 // Show help box
780 helpBox.showPopup(this.browser, -1, -1, "tooltip", "topleft", "topleft"); 797 helpBox.showPopup(this.browser, -1, -1, "tooltip", "topleft", "topleft");
781 return true; 798 return true;
782 } 799 }
783 } 800 }
784 801
785 // Makes sure event handlers like Aardvark.onKeyPress always have the correct 802 // Makes sure event handlers like Aardvark.onKeyPress always have the correct
786 // this pointer set. 803 // this pointer set.
787 for (let method of ["onMouseClick", "onMouseScroll", "onKeyPress", "onPageHide", "onMouseMove", "onAfterPaint", "quit"]) 804 for (let method of ["onMouseClick", "onMouseScroll", "onKeyPress", "onPageHide", "onMouseMove", "onAfterPaint", "quit"])
788 Aardvark[method] = Aardvark[method].bind(Aardvark); 805 Aardvark[method] = Aardvark[method].bind(Aardvark);
OLDNEW
« chrome/content/frameScript.js ('K') | « chrome/content/frameScript.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld