LEFT | RIGHT |
1 /* | 1 /* |
2 * This file is part of Adblock Plus <https://adblockplus.org/>, | 2 * This file is part of Adblock Plus <https://adblockplus.org/>, |
3 * Copyright (C) 2006-2015 Eyeo GmbH | 3 * Copyright (C) 2006-2015 Eyeo GmbH |
4 * | 4 * |
5 * Adblock Plus is free software: you can redistribute it and/or modify | 5 * Adblock Plus is free software: you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 3 as | 6 * it under the terms of the GNU General Public License version 3 as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
8 * | 8 * |
9 * Adblock Plus is distributed in the hope that it will be useful, | 9 * Adblock Plus is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
665 // Store variables locally, global variables will go away when we are closed | 665 // Store variables locally, global variables will go away when we are closed |
666 let myPrefs = Prefs; | 666 let myPrefs = Prefs; |
667 let myMainWin = mainWin; | 667 let myMainWin = mainWin; |
668 | 668 |
669 // Close sidebar and open detached window | 669 // Close sidebar and open detached window |
670 myMainWin.document.getElementById("abp-command-sidebar").doCommand(); | 670 myMainWin.document.getElementById("abp-command-sidebar").doCommand(); |
671 myPrefs.detachsidebar = doDetach; | 671 myPrefs.detachsidebar = doDetach; |
672 myMainWin.document.getElementById("abp-command-sidebar").doCommand(); | 672 myMainWin.document.getElementById("abp-command-sidebar").doCommand(); |
673 } | 673 } |
674 | 674 |
675 // Retrieves items size in the document if available | 675 // Returns item's size if already known, otherwise undefined |
676 function getItemSize(item, callback) | 676 function getCachedItemSize(item) |
677 { | 677 { |
678 if ("size" in item) | 678 if ("size" in item) |
679 return callback(item.size); | 679 return item.size; |
680 | 680 |
681 let filter = getFilter(item); | 681 let filter = getFilter(item); |
682 if (filter && !filter.disabled && filter instanceof BlockingFilter) | 682 if (filter && !filter.disabled && filter instanceof BlockingFilter) |
683 return callback(null); | 683 return null; |
684 | 684 |
685 if (requestNotifier) | 685 return undefined; |
686 { | 686 } |
687 requestNotifier.retrieveNodeSize(item.ids, function(size) | 687 |
688 { | 688 // Retrieves item's size in the document if available |
| 689 function getItemSize(item, callback) |
| 690 { |
| 691 let size = getCachedItemSize(item); |
| 692 if (typeof size != "undefined" || !requestNotifier) |
| 693 { |
| 694 callback(size); |
| 695 return; |
| 696 } |
| 697 |
| 698 requestNotifier.retrieveNodeSize(item.ids, function(size) |
| 699 { |
| 700 if (size) |
689 item.size = size; | 701 item.size = size; |
690 callback(size); | 702 callback(size); |
691 }); | 703 }); |
692 } | |
693 } | 704 } |
694 | 705 |
695 // Sort functions for the item list | 706 // Sort functions for the item list |
696 function sortByAddress(item1, item2) { | 707 function sortByAddress(item1, item2) { |
697 if (item1.location < item2.location) | 708 if (item1.location < item2.location) |
698 return -1; | 709 return -1; |
699 else if (item1.location > item2.location) | 710 else if (item1.location > item2.location) |
700 return 1; | 711 return 1; |
701 else | 712 else |
702 return 0; | 713 return 0; |
(...skipping 29 matching lines...) Expand all Loading... |
732 | 743 |
733 function compareState(item1, item2) | 744 function compareState(item1, item2) |
734 { | 745 { |
735 let filter1 = getFilter(item1); | 746 let filter1 = getFilter(item1); |
736 let filter2 = getFilter(item2); | 747 let filter2 = getFilter(item2); |
737 let state1 = (!filter1 ? 0 : (filter1.disabled ? 1 : (filter1 instanceof White
listFilter ? 2 : 3))); | 748 let state1 = (!filter1 ? 0 : (filter1.disabled ? 1 : (filter1 instanceof White
listFilter ? 2 : 3))); |
738 let state2 = (!filter2 ? 0 : (filter2.disabled ? 1 : (filter2 instanceof White
listFilter ? 2 : 3))); | 749 let state2 = (!filter2 ? 0 : (filter2.disabled ? 1 : (filter2 instanceof White
listFilter ? 2 : 3))); |
739 return state1 - state2; | 750 return state1 - state2; |
740 } | 751 } |
741 | 752 |
742 function compareSize(item1, item2) { | 753 function compareSize(item1, item2) |
743 let size1; | 754 { |
744 let size2; | 755 let size1 = getCachedItemSize(item1); |
745 getItemSize(item1, (size) => size1 = size); | 756 let size2 = getCachedItemSize(item2); |
746 getItemSize(item2, (size) => size2 = size); | |
747 | 757 |
748 size1 = size1 ? size1[0] * size1[1] : 0; | 758 size1 = size1 ? size1[0] * size1[1] : 0; |
749 size2 = size2 ? size2[0] * size2[1] : 0; | 759 size2 = size2 ? size2[0] * size2[1] : 0; |
750 return size1 - size2; | 760 return size1 - size2; |
751 } | 761 } |
752 | 762 |
753 function compareDocDomain(item1, item2) | 763 function compareDocDomain(item1, item2) |
754 { | 764 { |
755 if (item1.docDomain < item2.docDomain) | 765 if (item1.docDomain < item2.docDomain) |
756 return -1; | 766 return -1; |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
882 return ""; | 892 return ""; |
883 if (this.data && this.data.length) { | 893 if (this.data && this.data.length) { |
884 if (row >= this.data.length) | 894 if (row >= this.data.length) |
885 return ""; | 895 return ""; |
886 if (col == "type") | 896 if (col == "type") |
887 return localizedTypes.get(this.data[row].type); | 897 return localizedTypes.get(this.data[row].type); |
888 else if (col == "filter") | 898 else if (col == "filter") |
889 return (this.data[row].filter || ""); | 899 return (this.data[row].filter || ""); |
890 else if (col == "size") | 900 else if (col == "size") |
891 { | 901 { |
892 let result; | 902 let size = getCachedItemSize(this.data[row]); |
893 getItemSize(this.data[row], (size) => | 903 if (typeof size == "undefined") |
894 { | 904 { |
895 if (typeof result == "undefined") | 905 getItemSize(this.data[row], (size) => |
896 result = size; | 906 { |
897 else | 907 if (size) |
898 this.boxObject.invalidateRow(row) | 908 this.boxObject.invalidateRow(row) |
899 }); | 909 }); |
900 result = (result ? result.join(" x ") : ""); | 910 } |
901 return result; | 911 return (size ? size.join(" x ") : ""); |
902 } | 912 } |
903 else if (col == "docDomain") | 913 else if (col == "docDomain") |
904 return this.data[row].docDomain + " " + (this.data[row].thirdParty ? doc
DomainThirdParty : docDomainFirstParty); | 914 return this.data[row].docDomain + " " + (this.data[row].thirdParty ? doc
DomainThirdParty : docDomainFirstParty); |
905 else if (col == "filterSource") | 915 else if (col == "filterSource") |
906 { | 916 { |
907 let filter = getFilter(this.data[row]) | 917 let filter = getFilter(this.data[row]) |
908 if (!filter) | 918 if (!filter) |
909 return ""; | 919 return ""; |
910 | 920 |
911 return filter.subscriptions.filter(s => !s.disabled).map(s => s.title).j
oin(", "); | 921 return filter.subscriptions.filter(s => !s.disabled).map(s => s.title).j
oin(", "); |
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1299 return {tooltip: this.itemsDummyTooltip}; | 1309 return {tooltip: this.itemsDummyTooltip}; |
1300 }, | 1310 }, |
1301 | 1311 |
1302 invalidateItem: function(item) | 1312 invalidateItem: function(item) |
1303 { | 1313 { |
1304 let row = this.data.indexOf(item); | 1314 let row = this.data.indexOf(item); |
1305 if (row >= 0) | 1315 if (row >= 0) |
1306 this.boxObject.invalidateRow(row); | 1316 this.boxObject.invalidateRow(row); |
1307 } | 1317 } |
1308 } | 1318 } |
LEFT | RIGHT |