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

Side by Side Diff: desktop-options.js

Issue 29674584: Issue 5549 - Implement missing error handlings for custom filter lists (Closed)
Patch Set: changes as requested Created Jan. 30, 2018, 9:39 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « desktop-options.html ('k') | locale/en_US/desktop-options.json » ('j') | 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 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
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 if (returnElement) 540 if (returnElement)
541 return element; 541 return element;
542 return element.getAttribute("data-" + dataName); 542 return element.getAttribute("data-" + dataName);
543 } 543 }
544 544
545 element = element.parentElement; 545 element = element.parentElement;
546 } 546 }
547 return null; 547 return null;
548 } 548 }
549 549
550 function sendMessageHandleErrors(message, onSuccess) 550 function sendMessageHandleErrors(message, callback)
551 { 551 {
552 browser.runtime.sendMessage(message, (errors) => 552 browser.runtime.sendMessage(message, (errors) =>
553 { 553 {
554 if (errors.length > 0) 554 if (callback)
555 alert(errors.join("\n")); 555 {
556 else if (onSuccess) 556 if (errors.length > 0)
557 onSuccess(); 557 callback(errors);
558 else
559 callback();
560 }
558 }); 561 });
559 } 562 }
560 563
561 function switchTab(id) 564 function switchTab(id)
562 { 565 {
563 location.hash = id; 566 location.hash = id;
564 } 567 }
565 568
566 function execAction(action, element) 569 function execAction(action, element)
567 { 570 {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 text: findParentData(element, "access", false) 644 text: findParentData(element, "access", false)
642 }); 645 });
643 break; 646 break;
644 case "remove-subscription": 647 case "remove-subscription":
645 browser.runtime.sendMessage({ 648 browser.runtime.sendMessage({
646 type: "subscriptions.remove", 649 type: "subscriptions.remove",
647 url: findParentData(element, "access", false) 650 url: findParentData(element, "access", false)
648 }); 651 });
649 break; 652 break;
650 case "save-custom-filters": 653 case "save-custom-filters":
654 const filters = E("custom-filters-raw").value;
651 sendMessageHandleErrors({ 655 sendMessageHandleErrors({
652 type: "filters.importRaw", 656 type: "filters.importRaw",
653 text: E("custom-filters-raw").value, 657 text: filters,
654 removeExisting: true 658 removeExisting: true
655 }, 659 },
656 () => 660 (errors) =>
657 { 661 {
658 setCustomFiltersView("read"); 662 if (errors)
663 {
664 E("custom-filters").classList.add("warning");
665 // The current error does not contain info about the line
666 // that generated such error.
667 // Whenever the error object will pass the bad filter
668 // within its properties, this split should be removed.
669 const lines = filters.split(/\n+|\n\s+\n/);
670 const messages = errors.map(error => lines[error.lineno - 1]);
671 const editFilters = E("custom-filters-error");
672 for (const message of messages)
673 {
674 const li = document.createElement("li");
675 editFilters.appendChild(li).textContent = message;
saroyanm 2018/01/30 12:03:44 The Error keep being added to the error container.
676 }
677 if (errors.length > 5)
678 editFilters.classList.add("many");
679 }
680 else
681 {
682 setCustomFiltersView("read");
683 }
659 }); 684 });
660 break; 685 break;
661 case "show-more-filters-section": 686 case "show-more-filters-section":
662 E("more-filters").setAttribute("aria-hidden", false); 687 E("more-filters").setAttribute("aria-hidden", false);
663 break; 688 break;
664 case "switch-acceptable-ads": 689 case "switch-acceptable-ads":
665 let value = element.value || element.dataset.value; 690 let value = element.value || element.dataset.value;
666 // User check the checkbox 691 // User check the checkbox
667 let shouldCheck = element.getAttribute("aria-checked") != "true"; 692 let shouldCheck = element.getAttribute("aria-checked") != "true";
668 let installAcceptableAds = false; 693 let installAcceptableAds = false;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
748 break; 773 break;
749 } 774 }
750 } 775 }
751 776
752 function setCustomFiltersView(mode) 777 function setCustomFiltersView(mode)
753 { 778 {
754 let customFiltersElement = E("custom-filters-raw"); 779 let customFiltersElement = E("custom-filters-raw");
755 updateCustomFiltersUi(); 780 updateCustomFiltersUi();
756 if (mode == "read") 781 if (mode == "read")
757 { 782 {
783 E("custom-filters").classList.remove("warning");
784 const editFilters = E("custom-filters-error");
785 editFilters.textContent = "";
786 editFilters.classList.remove("many");
758 customFiltersElement.disabled = true; 787 customFiltersElement.disabled = true;
759 if (!customFiltersElement.value) 788 if (!customFiltersElement.value)
760 { 789 {
761 setCustomFiltersView("empty"); 790 setCustomFiltersView("empty");
762 return; 791 return;
763 } 792 }
764 } 793 }
765 else if (mode == "write") 794 else if (mode == "write")
766 { 795 {
767 customFiltersElement.disabled = false; 796 customFiltersElement.disabled = false;
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
911 940
912 // General tab 941 // General tab
913 getDocLink("contribute", (link) => 942 getDocLink("contribute", (link) =>
914 { 943 {
915 E("contribute").href = link; 944 E("contribute").href = link;
916 }); 945 });
917 getDocLink("acceptable_ads_criteria", (link) => 946 getDocLink("acceptable_ads_criteria", (link) =>
918 { 947 {
919 setLinks("enable-acceptable-ads-description", link); 948 setLinks("enable-acceptable-ads-description", link);
920 }); 949 });
921 setElementText(E("tracking-warning-1"), "options_tracking_warning_1", 950 setElementText(E("tracking-warning-1"), "options_tracking_warning_1",
922 [getMessage("common_feature_privacy_title"), 951 [getMessage("common_feature_privacy_title"),
923 getMessage("options_acceptableAds_ads_label")]); 952 getMessage("options_acceptableAds_ads_label")]);
924 setElementText(E("tracking-warning-3"), "options_tracking_warning_3", 953 setElementText(E("tracking-warning-3"), "options_tracking_warning_3",
925 [getMessage("options_acceptableAds_privacy_label")]); 954 [getMessage("options_acceptableAds_privacy_label")]);
926 955
927 getDocLink("privacy_friendly_ads", (link) => 956 getDocLink("privacy_friendly_ads", (link) =>
928 { 957 {
929 E("enable-acceptable-ads-privacy-description").href = link; 958 E("enable-acceptable-ads-privacy-description").href = link;
930 }); 959 });
931 getDocLink("adblock_plus_{browser}_dnt", url => 960 getDocLink("adblock_plus_{browser}_dnt", url =>
932 { 961 {
933 setLinks("dnt", url); 962 setLinks("dnt", url);
934 }); 963 });
(...skipping 21 matching lines...) Expand all
956 type: "app.get", 985 type: "app.get",
957 what: "features" 986 what: "features"
958 }, 987 },
959 (features) => 988 (features) =>
960 { 989 {
961 hidePref("show_devtools_panel", !features.devToolsPanel); 990 hidePref("show_devtools_panel", !features.devToolsPanel);
962 }); 991 });
963 992
964 getDocLink("filterdoc", (link) => 993 getDocLink("filterdoc", (link) =>
965 { 994 {
966 E("link-filters").setAttribute("href", link); 995 E("link-filters-1").setAttribute("href", link);
996 E("link-filters-2").setAttribute("href", link);
967 }); 997 });
968 998
969 getDocLink("subscriptions", (link) => 999 getDocLink("subscriptions", (link) =>
970 { 1000 {
971 E("filter-lists-learn-more").setAttribute("href", link); 1001 E("filter-lists-learn-more").setAttribute("href", link);
972 }); 1002 });
973 1003
974 E("custom-filters-raw").setAttribute("placeholder", 1004 E("custom-filters-raw").setAttribute("placeholder",
975 getMessage("options_customFilters_edit_placeholder", ["/ads/track/*"])); 1005 getMessage("options_customFilters_edit_placeholder", ["/ads/track/*"]));
976 1006
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
1288 setPrivacyConflict(); 1318 setPrivacyConflict();
1289 break; 1319 break;
1290 case "downloading": 1320 case "downloading":
1291 case "downloadStatus": 1321 case "downloadStatus":
1292 case "homepage": 1322 case "homepage":
1293 case "lastDownload": 1323 case "lastDownload":
1294 case "title": 1324 case "title":
1295 updateSubscription(subscription); 1325 updateSubscription(subscription);
1296 break; 1326 break;
1297 case "added": 1327 case "added":
1298 let {url, recommended} = subscription; 1328 let {url} = subscription;
1299 // Handle custom subscription 1329 // Handle custom subscription
1300 if (/^~user/.test(url)) 1330 if (/^~user/.test(url))
1301 { 1331 {
1302 loadCustomFilters(subscription.filters); 1332 loadCustomFilters(subscription.filters);
1303 return; 1333 return;
1304 } 1334 }
1305 else if (url in subscriptionsMap) 1335 else if (url in subscriptionsMap)
1306 updateSubscription(subscription); 1336 updateSubscription(subscription);
1307 else 1337 else
1308 addSubscription(subscription); 1338 addSubscription(subscription);
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
1469 }); 1499 });
1470 browser.runtime.sendMessage({ 1500 browser.runtime.sendMessage({
1471 type: "subscriptions.listen", 1501 type: "subscriptions.listen",
1472 filter: ["added", "disabled", "homepage", "lastDownload", "removed", 1502 filter: ["added", "disabled", "homepage", "lastDownload", "removed",
1473 "title", "downloadStatus", "downloading"] 1503 "title", "downloadStatus", "downloading"]
1474 }); 1504 });
1475 1505
1476 window.addEventListener("DOMContentLoaded", onDOMLoaded, false); 1506 window.addEventListener("DOMContentLoaded", onDOMLoaded, false);
1477 window.addEventListener("hashchange", onHashChange, false); 1507 window.addEventListener("hashchange", onHashChange, false);
1478 } 1508 }
OLDNEW
« no previous file with comments | « desktop-options.html ('k') | locale/en_US/desktop-options.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld