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

Delta Between Two Patch Sets: desktop-options.js

Issue 29578574: Issue 5632 - Use checkboxes for toggling acceptable ads (Closed)
Left Patch Set: Created Oct. 16, 2017, 5:36 p.m.
Right Patch Set: Fixed the duplication Created Oct. 20, 2017, 6:56 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « desktop-options.html ('k') | skin/desktop-options.css » ('j') | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
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-present eyeo GmbH 3 * Copyright (C) 2006-present 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
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details. 12 * GNU General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU General Public License 14 * You should have received a copy of the GNU General Public License
15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. 15 * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>.
16 */ 16 */
17 17
18 /* globals checkShareResource, getDocLink, i18nFormatDateTime, openSharePopup, 18 /* globals checkShareResource, getDocLink, i18nFormatDateTime, openSharePopup,
19 setLinks, E */ 19 setLinks, E */
20 20
21 "use strict"; 21 "use strict";
22 22
23 { 23 {
24 let subscriptionsMap = Object.create(null); 24 let subscriptionsMap = Object.create(null);
25 let filtersMap = Object.create(null); 25 let filtersMap = Object.create(null);
26 let collections = Object.create(null); 26 let collections = Object.create(null);
27 let acceptableAdsUrl = null; 27 let acceptableAdsUrl = null;
28 let acceptableAdsPrivacyUrl = null; 28 let acceptableAdsPrivacyUrl = null;
29 let isCustomFiltersLoaded = false; 29 let isCustomFiltersLoaded = false;
30 let {getMessage} = chrome.i18n; 30 let {getMessage} = browser.i18n;
31 let customFilters = []; 31 let customFilters = [];
32 let filterErrors = new Map([ 32 let filterErrors = new Map([
33 ["synchronize_invalid_url", 33 ["synchronize_invalid_url",
34 "options_filterList_lastDownload_invalidURL"], 34 "options_filterList_lastDownload_invalidURL"],
35 ["synchronize_connection_error", 35 ["synchronize_connection_error",
36 "options_filterList_lastDownload_connectionError"], 36 "options_filterList_lastDownload_connectionError"],
37 ["synchronize_invalid_data", 37 ["synchronize_invalid_data",
38 "options_filterList_lastDownload_invalidData"], 38 "options_filterList_lastDownload_invalidData"],
39 ["synchronize_checksum_mismatch", 39 ["synchronize_checksum_mismatch",
40 "options_filterList_lastDownload_checksumMismatch"] 40 "options_filterList_lastDownload_checksumMismatch"]
(...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 return element.getAttribute("data-" + dataName); 536 return element.getAttribute("data-" + dataName);
537 } 537 }
538 538
539 element = element.parentElement; 539 element = element.parentElement;
540 } 540 }
541 return null; 541 return null;
542 } 542 }
543 543
544 function sendMessageHandleErrors(message, onSuccess) 544 function sendMessageHandleErrors(message, onSuccess)
545 { 545 {
546 chrome.runtime.sendMessage(message, (errors) => 546 browser.runtime.sendMessage(message, (errors) =>
547 { 547 {
548 if (errors.length > 0) 548 if (errors.length > 0)
549 alert(errors.join("\n")); 549 alert(errors.join("\n"));
550 else if (onSuccess) 550 else if (onSuccess)
551 onSuccess(); 551 onSuccess();
552 }); 552 });
553 } 553 }
554 554
555 function switchTab(id) 555 function switchTab(id)
556 { 556 {
557 location.hash = id; 557 location.hash = id;
558 } 558 }
559 559
560 function execAction(action, element) 560 function execAction(action, element)
561 { 561 {
562 if (element.getAttribute("aria-disabled") == "true")
563 return;
564
562 switch (action) 565 switch (action)
563 { 566 {
564 case "add-domain-exception": 567 case "add-domain-exception":
565 addWhitelistedDomain(); 568 addWhitelistedDomain();
566 break; 569 break;
567 case "add-language-subscription": 570 case "add-language-subscription":
568 addEnableSubscription(findParentData(element, "access", false)); 571 addEnableSubscription(findParentData(element, "access", false));
569 break; 572 break;
570 case "add-predefined-subscription": { 573 case "add-predefined-subscription": {
571 let dialog = E("dialog-content-predefined"); 574 let dialog = E("dialog-content-predefined");
572 let title = dialog.querySelector("h3").textContent; 575 let title = dialog.querySelector("h3").textContent;
573 let url = dialog.querySelector(".url").textContent; 576 let url = dialog.querySelector(".url").textContent;
574 addEnableSubscription(url, title); 577 addEnableSubscription(url, title);
575 closeDialog(); 578 closeDialog();
576 break; 579 break;
577 } 580 }
578 case "cancel-custom-filters": 581 case "cancel-custom-filters":
579 setCustomFiltersView("read"); 582 setCustomFiltersView("read");
580 break; 583 break;
581 case "change-language-subscription": 584 case "change-language-subscription":
582 for (let key in subscriptionsMap) 585 for (let key in subscriptionsMap)
583 { 586 {
584 let subscription = subscriptionsMap[key]; 587 let subscription = subscriptionsMap[key];
585 let subscriptionType = subscription.recommended; 588 let subscriptionType = subscription.recommended;
586 if (subscriptionType == "ads" && subscription.disabled == false) 589 if (subscriptionType == "ads" && subscription.disabled == false)
587 { 590 {
588 chrome.runtime.sendMessage({ 591 browser.runtime.sendMessage({
589 type: "subscriptions.remove", 592 type: "subscriptions.remove",
590 url: subscription.url 593 url: subscription.url
591 }); 594 });
592 chrome.runtime.sendMessage({ 595 browser.runtime.sendMessage({
593 type: "subscriptions.add", 596 type: "subscriptions.add",
594 url: findParentData(element, "access", false) 597 url: findParentData(element, "access", false)
595 }); 598 });
596 break; 599 break;
597 } 600 }
598 } 601 }
599 break; 602 break;
600 case "close-dialog": 603 case "close-dialog":
601 closeDialog(); 604 closeDialog();
602 break; 605 break;
(...skipping 17 matching lines...) Expand all
620 if (listItem && !listItem.classList.contains("show-context-menu")) 623 if (listItem && !listItem.classList.contains("show-context-menu"))
621 listItem.classList.add("show-context-menu"); 624 listItem.classList.add("show-context-menu");
622 break; 625 break;
623 } 626 }
624 case "open-dialog": { 627 case "open-dialog": {
625 let dialog = findParentData(element, "dialog", false); 628 let dialog = findParentData(element, "dialog", false);
626 openDialog(dialog); 629 openDialog(dialog);
627 break; 630 break;
628 } 631 }
629 case "remove-filter": 632 case "remove-filter":
630 chrome.runtime.sendMessage({ 633 browser.runtime.sendMessage({
631 type: "filters.remove", 634 type: "filters.remove",
632 text: findParentData(element, "access", false) 635 text: findParentData(element, "access", false)
633 }); 636 });
634 break; 637 break;
635 case "remove-subscription": 638 case "remove-subscription":
636 chrome.runtime.sendMessage({ 639 browser.runtime.sendMessage({
637 type: "subscriptions.remove", 640 type: "subscriptions.remove",
638 url: findParentData(element, "access", false) 641 url: findParentData(element, "access", false)
639 }); 642 });
640 break; 643 break;
641 case "save-custom-filters": 644 case "save-custom-filters":
642 sendMessageHandleErrors({ 645 sendMessageHandleErrors({
643 type: "filters.importRaw", 646 type: "filters.importRaw",
644 text: E("custom-filters-raw").value, 647 text: E("custom-filters-raw").value,
645 removeExisting: true 648 removeExisting: true
646 }, 649 },
647 () => 650 () =>
648 { 651 {
649 setCustomFiltersView("read"); 652 setCustomFiltersView("read");
650 }); 653 });
651 break; 654 break;
652 case "show-more-filters-section": 655 case "show-more-filters-section":
653 E("more-filters").setAttribute("aria-hidden", false); 656 E("more-filters").setAttribute("aria-hidden", false);
654 break; 657 break;
655 case "switch-acceptable-ads": 658 case "switch-acceptable-ads":
656 let isChecked = element.getAttribute("aria-checked") == "true";
657 let value = element.value || element.dataset.value; 659 let value = element.value || element.dataset.value;
658 let isAcceptableAds = value == "ads"; 660 // User check the checkbox
ire 2017/10/17 08:16:34 I'm getting the eslint error: isAcceptableAds is a
saroyanm 2017/10/17 19:23:07 Thanks, I isolated scope with the braces. Let me k
ire 2017/10/18 17:48:45 I'm still getting the same error, I don't think th
saroyanm 2017/10/19 20:41:55 Right, my bad, I thought it was a variable in the
ire 2017/10/20 08:14:41 I don't have a strong preference about the name. I
659 661 let shouldCheck = element.getAttribute("aria-checked") != "true";
660 chrome.runtime.sendMessage({ 662 let installAcceptableAds = false;
661 type: isAcceptableAds != isChecked ? "subscriptions.add" : 663 let installAcceptableAdsPrivacy = false;
664 // Acceptable Ads checkbox clicked
665 if (value == "ads")
666 {
667 installAcceptableAds = shouldCheck;
668 }
669 // Privacy Friendly Acceptable Ads checkbox clicked
670 else
671 {
672 installAcceptableAdsPrivacy = shouldCheck;
673 installAcceptableAds = !shouldCheck;
674 }
675
676 browser.runtime.sendMessage({
677 type: installAcceptableAds ? "subscriptions.add" :
662 "subscriptions.remove", 678 "subscriptions.remove",
663 url: acceptableAdsUrl 679 url: acceptableAdsUrl
664 }); 680 });
665 chrome.runtime.sendMessage({ 681 browser.runtime.sendMessage({
666 type: isAcceptableAds || isChecked ? "subscriptions.remove" : 682 type: installAcceptableAdsPrivacy ? "subscriptions.add" :
667 "subscriptions.add", 683 "subscriptions.remove",
668 url: acceptableAdsPrivacyUrl 684 url: acceptableAdsPrivacyUrl
669 }); 685 });
670 break; 686 break;
671 case "switch-tab": 687 case "switch-tab":
672 switchTab(element.getAttribute("href").substr(1)); 688 switchTab(element.getAttribute("href").substr(1));
673 break; 689 break;
674 case "toggle-disable-subscription": 690 case "toggle-disable-subscription":
675 chrome.runtime.sendMessage({ 691 browser.runtime.sendMessage({
676 type: "subscriptions.toggle", 692 type: "subscriptions.toggle",
677 keepInstalled: true, 693 keepInstalled: true,
678 url: findParentData(element, "access", false) 694 url: findParentData(element, "access", false)
679 }); 695 });
680 break; 696 break;
681 case "toggle-pref": 697 case "toggle-pref":
682 chrome.runtime.sendMessage({ 698 browser.runtime.sendMessage({
683 type: "prefs.toggle", 699 type: "prefs.toggle",
684 key: findParentData(element, "pref", false) 700 key: findParentData(element, "pref", false)
685 }); 701 });
686 break; 702 break;
687 case "toggle-remove-subscription": 703 case "toggle-remove-subscription":
688 let subscriptionUrl = findParentData(element, "access", false); 704 let subscriptionUrl = findParentData(element, "access", false);
689 if (element.getAttribute("aria-checked") == "true") 705 if (element.getAttribute("aria-checked") == "true")
690 { 706 {
691 chrome.runtime.sendMessage({ 707 browser.runtime.sendMessage({
692 type: "subscriptions.remove", 708 type: "subscriptions.remove",
693 url: subscriptionUrl 709 url: subscriptionUrl
694 }); 710 });
695 } 711 }
696 else 712 else
697 addEnableSubscription(subscriptionUrl); 713 addEnableSubscription(subscriptionUrl);
698 break; 714 break;
699 case "update-all-subscriptions": 715 case "update-all-subscriptions":
700 chrome.runtime.sendMessage({ 716 browser.runtime.sendMessage({
701 type: "subscriptions.update" 717 type: "subscriptions.update"
702 }); 718 });
703 break; 719 break;
704 case "update-subscription": 720 case "update-subscription":
705 chrome.runtime.sendMessage({ 721 browser.runtime.sendMessage({
706 type: "subscriptions.update", 722 type: "subscriptions.update",
707 url: findParentData(element, "access", false) 723 url: findParentData(element, "access", false)
708 }); 724 });
709 break; 725 break;
710 case "validate-import-subscription": 726 case "validate-import-subscription":
711 let form = findParentData(element, "validation", true); 727 let form = findParentData(element, "validation", true);
712 if (!form) 728 if (!form)
713 return; 729 return;
714 730
715 if (form.checkValidity()) 731 if (form.checkValidity())
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 if (!tabContent) 873 if (!tabContent)
858 break; 874 break;
859 } 875 }
860 } 876 }
861 877
862 function onDOMLoaded() 878 function onDOMLoaded()
863 { 879 {
864 populateLists(); 880 populateLists();
865 881
866 // Initialize navigation sidebar 882 // Initialize navigation sidebar
867 chrome.runtime.sendMessage({ 883 browser.runtime.sendMessage({
868 type: "app.get", 884 type: "app.get",
869 what: "addonVersion" 885 what: "addonVersion"
870 }, 886 },
871 (addonVersion) => 887 (addonVersion) =>
872 { 888 {
873 E("abp-version").textContent = getMessage("options_dialog_about_version", 889 E("abp-version").textContent = getMessage("options_dialog_about_version",
874 [addonVersion]); 890 [addonVersion]);
875 }); 891 });
876 892
877 updateTooltips(); 893 updateTooltips();
(...skipping 10 matching lines...) Expand all
888 }, false); 904 }, false);
889 905
890 getDocLink("contribute", (link) => 906 getDocLink("contribute", (link) =>
891 { 907 {
892 E("contribute").href = link; 908 E("contribute").href = link;
893 }); 909 });
894 getDocLink("acceptable_ads_criteria", (link) => 910 getDocLink("acceptable_ads_criteria", (link) =>
895 { 911 {
896 setLinks("enable-acceptable-ads-description", link); 912 setLinks("enable-acceptable-ads-description", link);
897 }); 913 });
898 getDocLink("privacy_friendly_ads", (link) => 914 getDocLink("privacy_friendly_ads", (link) =>
saroyanm 2017/10/16 17:45:51 We still missing this redirection link, I'll reach
ire 2017/10/17 08:16:34 Acknowledged.
899 { 915 {
900 setLinks("enable-acceptable-ads-privacy-description", link); 916 E("enable-acceptable-ads-privacy-description").href = link;
901 }); 917 });
902 getDocLink("adblock_plus_{browser}_dnt", url => 918 getDocLink("adblock_plus_{browser}_dnt", url =>
903 { 919 {
904 setLinks("dnt", url); 920 setLinks("dnt", url);
905 }); 921 });
906 922
907 // Advanced tab 923 // Advanced tab
908 let customize = document.querySelectorAll("#customize li[data-pref]"); 924 let customize = document.querySelectorAll("#customize li[data-pref]");
909 customize = Array.prototype.map.call(customize, (checkbox) => 925 customize = Array.prototype.map.call(customize, (checkbox) =>
910 { 926 {
911 return checkbox.getAttribute("data-pref"); 927 return checkbox.getAttribute("data-pref");
912 }); 928 });
913 for (let key of customize) 929 for (let key of customize)
914 { 930 {
915 getPref(key, (value) => 931 getPref(key, (value) =>
916 { 932 {
917 onPrefMessage(key, value, true); 933 onPrefMessage(key, value, true);
918 }); 934 });
919 } 935 }
920 chrome.runtime.sendMessage({ 936 browser.runtime.sendMessage({
921 type: "app.get", 937 type: "app.get",
922 what: "features" 938 what: "features"
923 }, 939 },
924 (features) => 940 (features) =>
925 { 941 {
926 hidePref("show_devtools_panel", !features.devToolsPanel); 942 hidePref("show_devtools_panel", !features.devToolsPanel);
927 }); 943 });
928 944
929 getDocLink("filterdoc", (link) => 945 getDocLink("filterdoc", (link) =>
930 { 946 {
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
1041 } 1057 }
1042 1058
1043 function setAcceptableAds() 1059 function setAcceptableAds()
1044 { 1060 {
1045 let acceptableAdsForm = E("acceptable-ads"); 1061 let acceptableAdsForm = E("acceptable-ads");
1046 let acceptableAds = E("acceptable-ads-allow"); 1062 let acceptableAds = E("acceptable-ads-allow");
1047 let acceptableAdsPrivacy = E("acceptable-ads-privacy-allow"); 1063 let acceptableAdsPrivacy = E("acceptable-ads-privacy-allow");
1048 acceptableAdsForm.classList.remove("show-dnt-notification"); 1064 acceptableAdsForm.classList.remove("show-dnt-notification");
1049 acceptableAds.setAttribute("aria-checked", false); 1065 acceptableAds.setAttribute("aria-checked", false);
1050 acceptableAdsPrivacy.setAttribute("aria-checked", false); 1066 acceptableAdsPrivacy.setAttribute("aria-checked", false);
1051 acceptableAdsPrivacy.disabled = true; 1067 acceptableAdsPrivacy.setAttribute("tabindex", 0);
ire 2017/10/17 08:16:34 When you toggle the acceptableAdsPrivacy checkbox
saroyanm 2017/10/17 19:23:07 yes this is trickier than it appears. I'll try to
saroyanm 2017/10/17 19:54:29 Done.
ire 2017/10/18 17:48:45 Ah I see, very tricky!
1052 if (acceptableAdsUrl in subscriptionsMap) 1068 if (acceptableAdsUrl in subscriptionsMap)
1053 { 1069 {
1054 acceptableAds.setAttribute("aria-checked", true); 1070 acceptableAds.setAttribute("aria-checked", true);
1055 acceptableAdsPrivacy.disabled = false; 1071 acceptableAdsPrivacy.setAttribute("aria-disabled", false);
1056 } 1072 }
1057 else if (acceptableAdsPrivacyUrl in subscriptionsMap) 1073 else if (acceptableAdsPrivacyUrl in subscriptionsMap)
1058 { 1074 {
1059 acceptableAds.setAttribute("aria-checked", true); 1075 acceptableAds.setAttribute("aria-checked", true);
1060 acceptableAdsPrivacy.setAttribute("aria-checked", true); 1076 acceptableAdsPrivacy.setAttribute("aria-checked", true);
1061 acceptableAdsPrivacy.disabled = false; 1077 acceptableAdsPrivacy.setAttribute("aria-disabled", false);
1062 1078
1063 if (navigator.doNotTrack != 1) 1079 if (navigator.doNotTrack != 1)
saroyanm 2017/10/16 17:45:52 See -> https://issues.adblockplus.org/ticket/5866
ire 2017/10/17 08:16:34 Seen. I agree with you.
ire 2017/10/17 08:16:34 I don't know if support for Edge/Safari is relevan
saroyanm 2017/10/17 19:23:07 We don't consider Safari, but it make sense for th
ire 2017/10/18 17:48:45 Acknowledged.
1064 acceptableAdsForm.classList.add("show-dnt-notification"); 1080 acceptableAdsForm.classList.add("show-dnt-notification");
1081 }
1082 else
1083 {
1084 // Using aria-disabled in order to keep the focus
1085 acceptableAdsPrivacy.setAttribute("aria-disabled", true);
1086 acceptableAdsPrivacy.setAttribute("tabindex", -1);
1065 } 1087 }
1066 } 1088 }
1067 1089
1068 function isAcceptableAds(url) 1090 function isAcceptableAds(url)
1069 { 1091 {
1070 return url == acceptableAdsUrl || url == acceptableAdsPrivacyUrl; 1092 return url == acceptableAdsUrl || url == acceptableAdsPrivacyUrl;
1071 } 1093 }
1072 1094
1073 function populateLists() 1095 function populateLists()
1074 { 1096 {
1075 subscriptionsMap = Object.create(null); 1097 subscriptionsMap = Object.create(null);
1076 filtersMap = Object.create(null); 1098 filtersMap = Object.create(null);
1077 1099
1078 // Empty collections and lists 1100 // Empty collections and lists
1079 for (let property in collections) 1101 for (let property in collections)
1080 collections[property].clearAll(); 1102 collections[property].clearAll();
1081 1103
1082 setCustomFiltersView("empty"); 1104 setCustomFiltersView("empty");
1083 chrome.runtime.sendMessage({ 1105 browser.runtime.sendMessage({
1084 type: "subscriptions.get", 1106 type: "subscriptions.get",
1085 special: true 1107 special: true
1086 }, 1108 },
1087 (subscriptions) => 1109 (subscriptions) =>
1088 { 1110 {
1089 // Load filters 1111 // Load filters
1090 for (let subscription of subscriptions) 1112 for (let subscription of subscriptions)
1091 { 1113 {
1092 chrome.runtime.sendMessage({ 1114 browser.runtime.sendMessage({
1093 type: "filters.get", 1115 type: "filters.get",
1094 subscriptionUrl: subscription.url 1116 subscriptionUrl: subscription.url
1095 }, 1117 },
1096 (filters) => 1118 (filters) =>
1097 { 1119 {
1098 loadCustomFilters(filters); 1120 loadCustomFilters(filters);
1099 }); 1121 });
1100 } 1122 }
1101 }); 1123 });
1102 loadRecommendations(); 1124 loadRecommendations();
1103 chrome.runtime.sendMessage({ 1125 browser.runtime.sendMessage({
1104 type: "prefs.get", 1126 type: "prefs.get",
1105 key: "subscriptions_exceptionsurl" 1127 key: "subscriptions_exceptionsurl"
1106 }, 1128 },
1107 (url) => 1129 (url) =>
1108 { 1130 {
1109 acceptableAdsUrl = url; 1131 acceptableAdsUrl = url;
1110 1132
1111 chrome.runtime.sendMessage({ 1133 browser.runtime.sendMessage({
1112 type: "prefs.get", 1134 type: "prefs.get",
1113 key: "subscriptions_exceptionsurl_privacy" 1135 key: "subscriptions_exceptionsurl_privacy"
1114 }, 1136 },
1115 (urlPrivacy) => 1137 (urlPrivacy) =>
1116 { 1138 {
1117 acceptableAdsPrivacyUrl = urlPrivacy; 1139 acceptableAdsPrivacyUrl = urlPrivacy;
1118 1140
1119 // Load user subscriptions 1141 // Load user subscriptions
1120 chrome.runtime.sendMessage({ 1142 browser.runtime.sendMessage({
1121 type: "subscriptions.get", 1143 type: "subscriptions.get",
1122 downloadable: true 1144 downloadable: true
1123 }, 1145 },
1124 (subscriptions) => 1146 (subscriptions) =>
1125 { 1147 {
1126 for (let subscription of subscriptions) 1148 for (let subscription of subscriptions)
1127 onSubscriptionMessage("added", subscription); 1149 onSubscriptionMessage("added", subscription);
1128 1150
1129 setAcceptableAds(); 1151 setAcceptableAds();
1130 }); 1152 });
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1168 1190
1169 let message = { 1191 let message = {
1170 type: messageType, 1192 type: messageType,
1171 url 1193 url
1172 }; 1194 };
1173 if (title) 1195 if (title)
1174 message.title = title; 1196 message.title = title;
1175 if (homepage) 1197 if (homepage)
1176 message.homepage = homepage; 1198 message.homepage = homepage;
1177 1199
1178 chrome.runtime.sendMessage(message); 1200 browser.runtime.sendMessage(message);
1179 } 1201 }
1180 1202
1181 function onFilterMessage(action, filter) 1203 function onFilterMessage(action, filter)
1182 { 1204 {
1183 switch (action) 1205 switch (action)
1184 { 1206 {
1185 case "added": 1207 case "added":
1186 filter[timestampUI] = Date.now(); 1208 filter[timestampUI] = Date.now();
1187 updateFilter(filter); 1209 updateFilter(filter);
1188 break; 1210 break;
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1279 { 1301 {
1280 let checkPref = getPref.checks[key] || getPref.checkNone; 1302 let checkPref = getPref.checks[key] || getPref.checkNone;
1281 checkPref((isActive) => 1303 checkPref((isActive) =>
1282 { 1304 {
1283 if (!isActive) 1305 if (!isActive)
1284 { 1306 {
1285 hidePref(key, !isActive); 1307 hidePref(key, !isActive);
1286 return; 1308 return;
1287 } 1309 }
1288 1310
1289 chrome.runtime.sendMessage({ 1311 browser.runtime.sendMessage({
1290 type: "prefs.get", 1312 type: "prefs.get",
1291 key 1313 key
1292 }, callback); 1314 }, callback);
1293 }); 1315 });
1294 } 1316 }
1295 1317
1296 getPref.checkNone = function(callback) 1318 getPref.checkNone = function(callback)
1297 { 1319 {
1298 callback(true); 1320 callback(true);
1299 }; 1321 };
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
1373 break; 1395 break;
1374 case "prefs.respond": 1396 case "prefs.respond":
1375 onPrefMessage(message.action, message.args[0], false); 1397 onPrefMessage(message.action, message.args[0], false);
1376 break; 1398 break;
1377 case "subscriptions.respond": 1399 case "subscriptions.respond":
1378 onSubscriptionMessage(message.action, message.args[0]); 1400 onSubscriptionMessage(message.action, message.args[0]);
1379 break; 1401 break;
1380 } 1402 }
1381 }); 1403 });
1382 1404
1383 chrome.runtime.sendMessage({ 1405 browser.runtime.sendMessage({
1384 type: "app.listen", 1406 type: "app.listen",
1385 filter: ["addSubscription", "focusSection"] 1407 filter: ["addSubscription", "focusSection"]
1386 }); 1408 });
1387 chrome.runtime.sendMessage({ 1409 browser.runtime.sendMessage({
1388 type: "filters.listen", 1410 type: "filters.listen",
1389 filter: ["added", "loaded", "removed"] 1411 filter: ["added", "loaded", "removed"]
1390 }); 1412 });
1391 chrome.runtime.sendMessage({ 1413 browser.runtime.sendMessage({
1392 type: "prefs.listen", 1414 type: "prefs.listen",
1393 filter: ["notifications_ignoredcategories", "notifications_showui", 1415 filter: ["notifications_ignoredcategories", "notifications_showui",
1394 "show_devtools_panel", "shouldShowBlockElementMenu"] 1416 "show_devtools_panel", "shouldShowBlockElementMenu"]
1395 }); 1417 });
1396 chrome.runtime.sendMessage({ 1418 browser.runtime.sendMessage({
1397 type: "subscriptions.listen", 1419 type: "subscriptions.listen",
1398 filter: ["added", "disabled", "homepage", "lastDownload", "removed", 1420 filter: ["added", "disabled", "homepage", "lastDownload", "removed",
1399 "title", "downloadStatus", "downloading"] 1421 "title", "downloadStatus", "downloading"]
1400 }); 1422 });
1401 1423
1402 window.addEventListener("DOMContentLoaded", onDOMLoaded, false); 1424 window.addEventListener("DOMContentLoaded", onDOMLoaded, false);
1403 window.addEventListener("hashchange", onHashChange, false); 1425 window.addEventListener("hashchange", onHashChange, false);
1404 } 1426 }
LEFTRIGHT

Powered by Google App Engine
This is Rietveld