enable ability to detach the logger (same as uBO)

pull/2/head
gorhill 7 years ago
parent 6aa8c856cf
commit 0207c91312
No known key found for this signature in database
GPG Key ID: 25E1490B761470C2

@ -266,6 +266,12 @@ vAPI.tabs.open = function(details) {
}); });
}; };
// Open in a standalone window
if ( details.popup === true ) {
chrome.windows.create({ url: details.url, type: 'popup' });
return;
}
if ( details.index !== -1 ) { if ( details.index !== -1 ) {
subWrapper(); subWrapper();
return; return;

@ -86,6 +86,7 @@ return {
onBeforeStartQueue: [], onBeforeStartQueue: [],
userSettings: { userSettings: {
alwaysDetachLogger: false,
autoUpdate: false, autoUpdate: false,
clearBrowserCache: true, clearBrowserCache: true,
clearBrowserCacheAfter: 60, clearBrowserCacheAfter: 60,

@ -74,11 +74,11 @@ function onMessage(request, sender, callback) {
break; break;
case 'gotoExtensionURL': case 'gotoExtensionURL':
µm.utils.gotoExtensionURL(request.url); µm.gotoExtensionURL(request);
break; break;
case 'gotoURL': case 'gotoURL':
µm.utils.gotoURL(request); µm.gotoURL(request);
break; break;
case 'mustBlock': case 'mustBlock':

@ -1298,7 +1298,11 @@ function mouseleaveMatrixCellHandler() {
function gotoExtensionURL(ev) { function gotoExtensionURL(ev) {
var url = uDom(ev.currentTarget).attr('data-extension-url'); var url = uDom(ev.currentTarget).attr('data-extension-url');
if ( url ) { if ( url ) {
messager.send({ what: 'gotoExtensionURL', url: url }); messager.send({
what: 'gotoExtensionURL',
url: url,
shiftKey: ev.shiftKey
});
} }
dropDownMenuHide(); dropDownMenuHide();
vAPI.closePopup(); vAPI.closePopup();

@ -97,14 +97,14 @@
var out = new Set(), var out = new Set(),
reIgnore = /^[!#]/, reIgnore = /^[!#]/,
reValid = /^[a-z-]+:\/\/\S+/, reValid = /^[a-z-]+:\/\/\S+/,
lineIter = new this.utils.LineIterator(raw), lineIter = new this.LineIterator(raw),
location; location;
while ( lineIter.eot() === false ) { while ( lineIter.eot() === false ) {
location = lineIter.next().trim(); location = lineIter.next().trim();
if ( reIgnore.test(location) || !reValid.test(location) ) { continue; } if ( reIgnore.test(location) || !reValid.test(location) ) { continue; }
out.add(location); out.add(location);
} }
return this.utils.setToArray(out); return this.setToArray(out);
}; };
/******************************************************************************/ /******************************************************************************/
@ -391,7 +391,7 @@
title: assetKey title: assetKey
}; };
} }
externalHostsFiles = this.utils.setToArray(importedSet).sort().join('\n'); externalHostsFiles = this.setToArray(importedSet).sort().join('\n');
} }
if ( externalHostsFiles !== this.userSettings.externalHostsFiles ) { if ( externalHostsFiles !== this.userSettings.externalHostsFiles ) {

@ -1,6 +1,6 @@
/******************************************************************************* /*******************************************************************************
µMatrix - a Chromium browser extension to black/white list requests. uMatrix - a Chromium browser extension to black/white list requests.
Copyright (C) 2014-2017 Raymond Hill Copyright (C) 2014-2017 Raymond Hill
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
@ -23,70 +23,70 @@
/******************************************************************************/ /******************************************************************************/
// This will inserted as a module in the µMatrix object. µMatrix.gotoURL = function(details) {
µMatrix.utils = (function() {
/******************************************************************************/
var gotoURL = function(details) {
vAPI.tabs.open(details); vAPI.tabs.open(details);
}; };
/******************************************************************************/ /******************************************************************************/
var gotoExtensionURL = function(url) { µMatrix.gotoExtensionURL = function(details) {
vAPI.tabs.open({ if ( details.url.startsWith('logger-ui.html') ) {
url: url, if ( details.shiftKey ) {
index: -1, this.changeUserSettings(
select: true 'alwaysDetachLogger',
}); !this.userSettings.alwaysDetachLogger
);
}
details.popup = this.userSettings.alwaysDetachLogger;
}
details.select = true;
vAPI.tabs.open(details);
}; };
/******************************************************************************/ /******************************************************************************/
var LineIterator = function(text, offset) { µMatrix.LineIterator = function(text, offset) {
this.text = text; this.text = text;
this.textLen = this.text.length; this.textLen = this.text.length;
this.offset = offset || 0; this.offset = offset || 0;
}; };
LineIterator.prototype.next = function() { µMatrix.LineIterator.prototype = {
var lineEnd = this.text.indexOf('\n', this.offset); next: function() {
if ( lineEnd === -1 ) { var lineEnd = this.text.indexOf('\n', this.offset);
lineEnd = this.text.indexOf('\r', this.offset);
if ( lineEnd === -1 ) { if ( lineEnd === -1 ) {
lineEnd = this.textLen; lineEnd = this.text.indexOf('\r', this.offset);
if ( lineEnd === -1 ) {
lineEnd = this.textLen;
}
} }
} var line = this.text.slice(this.offset, lineEnd);
var line = this.text.slice(this.offset, lineEnd);
this.offset = lineEnd + 1;
return line;
};
LineIterator.prototype.rewind = function() {
if ( this.offset <= 1 ) {
this.offset = 0;
return;
}
var lineEnd = this.text.lastIndexOf('\n', this.offset - 2);
if ( lineEnd !== -1 ) {
this.offset = lineEnd + 1; this.offset = lineEnd + 1;
} else { return line;
lineEnd = this.text.lastIndexOf('\r', this.offset - 2); },
this.offset = lineEnd !== -1 ? lineEnd + 1 : 0; rewind: function() {
if ( this.offset <= 1 ) {
this.offset = 0;
return;
}
var lineEnd = this.text.lastIndexOf('\n', this.offset - 2);
if ( lineEnd !== -1 ) {
this.offset = lineEnd + 1;
} else {
lineEnd = this.text.lastIndexOf('\r', this.offset - 2);
this.offset = lineEnd !== -1 ? lineEnd + 1 : 0;
}
},
eot: function() {
return this.offset >= this.textLen;
} }
}; };
LineIterator.prototype.eot = function() {
return this.offset >= this.textLen;
};
/******************************************************************************/ /******************************************************************************/
var setToArray = typeof Array.from === 'function' µMatrix.setToArray = typeof Array.from === 'function' ?
? Array.from Array.from :
: function(dict) { function(dict) {
var out = [], var out = [],
entries = dict.values(), entries = dict.values(),
entry; entry;
@ -98,22 +98,8 @@ var setToArray = typeof Array.from === 'function'
return out; return out;
}; };
var setFromArray = function(arr) { µMatrix.setFromArray = function(arr) {
return new Set(arr); return new Set(arr);
}; };
/******************************************************************************/ /******************************************************************************/
return {
gotoURL: gotoURL,
gotoExtensionURL: gotoExtensionURL,
LineIterator: LineIterator,
setToArray: setToArray,
setFromArray: setFromArray
};
/******************************************************************************/
})();
/******************************************************************************/

Loading…
Cancel
Save