diff --git a/src/about.html b/src/about.html
index 4a9a057d9..081ddfc75 100644
--- a/src/about.html
+++ b/src/about.html
@@ -29,7 +29,6 @@
diff --git a/src/css/fa-icons.css b/src/css/fa-icons.css
index eeea6eebb..e8680416e 100644
--- a/src/css/fa-icons.css
+++ b/src/css/fa-icons.css
@@ -38,63 +38,51 @@
height: 1em;
width: 1em;
}
-.fa-icon > .fa-icon_cloud-download-alt,
-.fa-icon > .fa-icon_cloud-upload-alt,
-.fa-icon > .fa-icon_code {
- width: calc(1em * 640 / 512);
- }
-.fa-icon > .fa-icon_exclamation-triangle,
-.fa-icon > .fa-icon_eye,
-.fa-icon > .fa-icon_eye-slash,
-.fa-icon > .fa-icon_home,
-.fa-icon > .fa-icon_puzzle-piece,
-.fa-icon > .fa-icon_reply-all {
- width: calc(1em * 576 / 512);
- }
-.fa-icon > .fa-icon_clock,
-.fa-icon > .fa-icon_cog,
-.fa-icon > .fa-icon_download,
+
.fa-icon > .fa-icon_eraser,
-.fa-icon > .fa-icon_eye-dropper,
-.fa-icon > .fa-icon_film,
-.fa-icon > .fa-icon_filter,
-.fa-icon > .fa-icon_info-circle,
-.fa-icon > .fa-icon_list-alt,
-.fa-icon > .fa-icon_pause-circle,
-.fa-icon > .fa-icon_play-circle,
-.fa-icon > .fa-icon_power-off,
-.fa-icon > .fa-icon_question-circle,
-.fa-icon > .fa-icon_reply,
-.fa-icon > .fa-icon_search-minus,
-.fa-icon > .fa-icon_search-plus,
-.fa-icon > .fa-icon_sliders-h,
-.fa-icon > .fa-icon_spinner,
-.fa-icon > .fa-icon_sync-alt,
-.fa-icon > .fa-icon_th,
-.fa-icon > .fa-icon_th-list,
-.fa-icon > .fa-icon_unlink {
- width: calc(1em * 512 / 512);
+.fa-icon > .fa-icon_film {
+ width: calc(1em * 1920 / 1792);
}
-.fa-icon > .fa-icon_angle-double-left,
-.fa-icon > .fa-icon_arrow-left,
-.fa-icon > .fa-icon_arrow-right,
-.fa-icon > .fa-icon_copy,
-.fa-icon > .fa-icon_font,
-.fa-icon > .fa-icon_lock,
-.fa-icon > .fa-icon_plus,
-.fa-icon > .fa-icon_save,
-.fa-icon > .fa-icon_unlock,
-.fa-icon > .fa-icon_trash-alt {
- width: calc(1em * 448 / 512);
+.fa-icon > .fa-icon_code {
+ width: calc(1em * 1830 / 1792);
+ }
+.fa-icon > .fa-icon_eye-dropper,
+.fa-icon > .fa-icon_eye-slash,
+.fa-icon > .fa-icon_files-o,
+.fa-icon > .fa-icon_list-alt {
+ width: calc(1em * 1792 / 1792);
+ }
+.fa-icon > .fa-icon_font {
+ width: calc(1em * 1664 / 1792);
+ }
+.fa-icon > .fa-icon_home {
+ width: calc(1em * 1612 / 1792);
+ }
+.fa-icon > .fa-icon_floppy-o,
+.fa-icon > .fa-icon_info-circle,
+.fa-icon > .fa-icon_pause-circle-o,
+.fa-icon > .fa-icon_play-circle-o,
+.fa-icon > .fa-icon_power-off,
+.fa-icon > .fa-icon_refresh,
+.fa-icon > .fa-icon_sliders {
+ width: calc(1em * 1536 / 1792);
+ }
+.fa-icon > .fa-icon_filter {
+ width: calc(1em * 1410 / 1792);
}
.fa-icon > .fa-icon_times {
- width: calc(1em * 352 / 512);
+ width: calc(1em * 1188 / 1792);
+ }
+.fa-icon > .fa-icon_lock {
+ width: calc(1em * 1152 / 1792);
}
.fa-icon > .fa-icon_angle-up,
-.fa-icon > .fa-icon_angle-double-up,
+.fa-icon > .fa-icon_double-angle-up {
+ width: calc(1em * 998 / 1792);
+ }
+.fa-icon > .fa-icon_double-angle-left {
+ width: calc(1em * 966 / 1792);
+ }
.fa-icon > .fa-icon_bolt {
- width: calc(1em * 320 / 512);
- }
-.fa-icon > .fa-icon_ellipsis-v {
- width: calc(1em * 192 / 512);
+ width: calc(1em * 896 / 1792);
}
diff --git a/src/css/logger-ui.css b/src/css/logger-ui.css
index 71dc4ba18..a830c1e13 100644
--- a/src/css/logger-ui.css
+++ b/src/css/logger-ui.css
@@ -77,7 +77,6 @@ textarea {
#inspectors {
flex-grow: 1;
font-family: "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
- font-size: 13px;
}
.inspector {
border-top: 1px solid #ccc;
@@ -86,6 +85,7 @@ textarea {
}
.vscrollable {
flex-grow: 1;
+ font-size: small;
overflow-x: hidden;
overflow-y: auto;
}
@@ -157,9 +157,6 @@ textarea {
top: 100%;
z-index: 100;
}
-#netInspector #filterExprButton.on {
- fill: #5F9EA0;
- }
#netInspector #filterExprButton.expanded ~ #filterExprPicker {
display: flex;
}
@@ -684,7 +681,7 @@ body.colorBlind #netFilteringDialog .dialog > div.containers > div.dynamic tr.e
font-size: larger;
}
#filterFinderDialog .filterFinderListEntry {
- align-items: center;
+ align-items: flex-end;
display: flex;
}
#filterFinderDialog .filterFinderListEntry a {
diff --git a/src/css/popup.css b/src/css/popup.css
index 44d3c0c44..fa6a94d9e 100644
--- a/src/css/popup.css
+++ b/src/css/popup.css
@@ -98,7 +98,7 @@ p {
#switch .fa-icon {
fill: #0046ff;
cursor: pointer;
- font-size: 650%;
+ font-size: 700%;
margin: 0;
padding: 0;
}
@@ -161,25 +161,21 @@ body.off #switch .fa-icon {
#extraTools > span:first-of-type {
margin-left: 0.9em;
}
-#extraTools > span > span:last-of-type {
- color: #e00;
+#extraTools > span > .nope {
left: 50%;
position: absolute;
- top: 0;
- transform: translateX(-50%);
- visibility: hidden;
- }
-#extraTools > span > span:last-of-type > svg {
stroke: red;
stroke-width: 2;
+ transform: translateX(-50%);
+ visibility: hidden;
width: 1em;
}
-#extraTools > span.on > span:last-of-type {
+#extraTools > span.on > .nope {
visibility: visible;
}
#extraTools > span:hover {
- color: #333;
- fill: #333;
+ color: #222;
+ fill: #222;
}
#refresh {
@@ -498,11 +494,11 @@ body.advancedUser #firewallContainer > div > span.noopRule.ownRule {
border-radius: 4px;
cursor: pointer;
display: inline-block;
- font-size: 1.5em;
+ font-size: 1.8em;
line-height: 1.0;
margin: 0;
margin-right: 0.1em;
- padding: 0.3em 0.5em;
+ padding: 0.2em 0.4em;
text-align: center;
width: 1em;
}
diff --git a/src/img/fontawesome/LICENSE.txt b/src/img/fontawesome/LICENSE.txt
index 0abfaa6e2..2784b8cfa 100644
--- a/src/img/fontawesome/LICENSE.txt
+++ b/src/img/fontawesome/LICENSE.txt
@@ -1,34 +1,25 @@
-Font Awesome Free License
--------------------------
+# [Font Awesome v4.7.0](http://fontawesome.io)
+### The iconic font and CSS framework
-Font Awesome Free is free, open source, and GPL friendly. You can use it for
-commercial projects, open source projects, or really almost whatever you want.
-Full Font Awesome Free license: https://fontawesome.com/license/free.
+Font Awesome is a full suite of 675 pictographic icons for easy scalable vector graphics on websites,
+created and maintained by [Dave Gandy](https://twitter.com/davegandy).
+Stay up to date with the latest release and announcements on Twitter:
+[@fontawesome](http://twitter.com/fontawesome).
-# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
-In the Font Awesome Free download, the CC BY 4.0 license applies to all icons
-packaged as SVG and JS file types.
+Get started at http://fontawesome.io!
-# Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL)
-In the Font Awesome Free download, the SIL OLF license applies to all icons
-packaged as web and desktop font files.
+## License
+- The Font Awesome font is licensed under the SIL OFL 1.1:
+ - http://scripts.sil.org/OFL
+- Font Awesome CSS, LESS, and Sass files are licensed under the MIT License:
+ - https://opensource.org/licenses/mit-license.html
+- The Font Awesome documentation is licensed under the CC BY 3.0 License:
+ - http://creativecommons.org/licenses/by/3.0/
+- Attribution is no longer required as of Font Awesome 3.0, but much appreciated:
+ - `Font Awesome by Dave Gandy - http://fontawesome.io`
+- Full details: http://fontawesome.io/license/
-# Code: MIT License (https://opensource.org/licenses/MIT)
-In the Font Awesome Free download, the MIT license applies to all non-font and
-non-icon files.
-
-# Attribution
-Attribution is required by MIT, SIL OLF, and CC BY licenses. Downloaded Font
-Awesome Free files already contain embedded comments with sufficient
-attribution, so you shouldn't need to do anything additional when using these
-files normally.
-
-We've kept attribution comments terse, so we ask that you do not actively work
-to remove them from files, especially code. They're a great way for folks to
-learn about Font Awesome.
-
-# Brand Icons
-All brand icons are trademarks of their respective owners. The use of these
-trademarks does not indicate endorsement of the trademark holder by Font
-Awesome, nor vice versa. **Please do not use brand logos for any purpose except
-to represent the company, product, or service to which they refer.**
+## Author
+- Email: dave@fontawesome.io
+- Twitter: http://twitter.com/davegandy
+- GitHub: https://github.com/davegandy
diff --git a/src/img/fontawesome/fontawesome-defs.svg b/src/img/fontawesome/fontawesome-defs.svg
index 6d17633d5..efe8476ef 100644
--- a/src/img/fontawesome/fontawesome-defs.svg
+++ b/src/img/fontawesome/fontawesome-defs.svg
@@ -1,59 +1,53 @@
-
+
+
diff --git a/src/img/ublock-icon.svg b/src/img/ublock-icon.svg
new file mode 100644
index 000000000..b297a5436
--- /dev/null
+++ b/src/img/ublock-icon.svg
@@ -0,0 +1,4 @@
+
+
diff --git a/src/js/logger-ui.js b/src/js/logger-ui.js
index e0de4c7c8..0d9e25ad0 100644
--- a/src/js/logger-ui.js
+++ b/src/js/logger-ui.js
@@ -1464,6 +1464,7 @@ const rowFilterer = (function() {
reStr += '(?:\\||\\s|$)';
}
}
+ if ( reStr === '' ) { continue; }
reStrs.push(reStr);
if ( i < (n - 1) && rawParts[i + 1] === '||' ) {
i += 1;
@@ -1513,8 +1514,13 @@ const rowFilterer = (function() {
};
const filterAll = function() {
+ const filterCount = filters.length;
+ uDom.nodeFromId('filterButton').classList.toggle(
+ 'active',
+ filterCount !== 0
+ );
// Special case: no filter
- if ( filters.length === 0 ) {
+ if ( filterCount === 0 ) {
uDom('#netInspector tr').removeClass('f');
return;
}
@@ -1575,11 +1581,11 @@ const rowFilterer = (function() {
r: !not
});
}
+ filters = builtinFilters.concat(userFilters);
uDom.nodeFromId('filterExprButton').classList.toggle(
- 'on',
+ 'active',
builtinFilters.length !== 0
);
- filters = builtinFilters.concat(userFilters);
filterAll();
};
diff --git a/src/js/popup.js b/src/js/popup.js
index 61f6918bf..24807c1bf 100644
--- a/src/js/popup.js
+++ b/src/js/popup.js
@@ -320,7 +320,7 @@ var updateAllFirewallCells = function() {
/******************************************************************************/
-var buildAllFirewallRows = function() {
+const buildAllFirewallRows = function() {
// Do this before removing the rows
if ( dfHotspots === null ) {
dfHotspots = uDom('#actionSelector')
@@ -331,11 +331,11 @@ var buildAllFirewallRows = function() {
// Remove and reuse all rows: the order may have changed, we can't just
// reuse them in-place.
- rowsToRecycle = uDom('#firewallContainer > div:nth-of-type(7) ~ div').detach();
+ rowsToRecycle =
+ uDom('#firewallContainer > div:nth-of-type(7) ~ div').detach();
- var n = allHostnameRows.length;
- for ( var i = 0; i < n; i++ ) {
- addFirewallRow(allHostnameRows[i]);
+ for ( const row of allHostnameRows ) {
+ addFirewallRow(row);
}
if ( dfPaneBuilt !== true && popupData.advancedUserEnabled ) {
@@ -351,25 +351,21 @@ var buildAllFirewallRows = function() {
/******************************************************************************/
-var renderPrivacyExposure = function() {
+const renderPrivacyExposure = function() {
allDomains = {};
allDomainCount = touchedDomainCount = 0;
allHostnameRows = [];
// Sort hostnames. First-party hostnames must always appear at the top
// of the list.
- var desHostnameDone = {};
- var keys = Object.keys(popupData.firewallRules)
+ const desHostnameDone = {};
+ const keys = Object.keys(popupData.firewallRules)
.sort(rulekeyCompare);
- var key, des, hnDetails;
- for ( var i = 0; i < keys.length; i++ ) {
- key = keys[i];
- des = key.slice(2, key.indexOf(' ', 2));
+ for ( const key of keys ) {
+ const des = key.slice(2, key.indexOf(' ', 2));
// Specific-type rules -- these are built-in
- if ( des === '*' || desHostnameDone.hasOwnProperty(des) ) {
- continue;
- }
- hnDetails = popupData.hostnameDict[des] || {};
+ if ( des === '*' || desHostnameDone.hasOwnProperty(des) ) { continue; }
+ const hnDetails = popupData.hostnameDict[des] || {};
if ( allDomains.hasOwnProperty(hnDetails.domain) === false ) {
allDomains[hnDetails.domain] = false;
allDomainCount += 1;
@@ -384,14 +380,15 @@ var renderPrivacyExposure = function() {
desHostnameDone[des] = true;
}
- var summary = domainsHitStr.replace('{{count}}', touchedDomainCount.toLocaleString())
- .replace('{{total}}', allDomainCount.toLocaleString());
+ const summary = domainsHitStr
+ .replace('{{count}}', touchedDomainCount.toLocaleString())
+ .replace('{{total}}', allDomainCount.toLocaleString());
uDom.nodeFromId('popupHitDomainCount').textContent = summary;
};
/******************************************************************************/
-let updateHnSwitches = function() {
+const updateHnSwitches = function() {
uDom.nodeFromId('no-popups').classList.toggle(
'on',
popupData.noPopups === true
@@ -417,7 +414,7 @@ let updateHnSwitches = function() {
// Assume everything has to be done incrementally.
-var renderPopup = function() {
+const renderPopup = function() {
if ( popupData.tabTitle ) {
document.title = popupData.appName + ' - ' + popupData.tabTitle;
}
@@ -481,7 +478,7 @@ var renderPopup = function() {
// https://github.com/chrisaljoudi/uBlock/issues/470
// This must be done here, to be sure the popup is resized properly
- let dfPaneVisible = popupData.dfEnabled;
+ const dfPaneVisible = popupData.dfEnabled;
// https://github.com/chrisaljoudi/uBlock/issues/1068
// Remember the last state of the firewall pane. This allows to
diff --git a/src/logger-ui.html b/src/logger-ui.html
index 5b13351b5..072ecad4e 100644
--- a/src/logger-ui.html
+++ b/src/logger-ui.html
@@ -19,9 +19,9 @@