|
1 | 1 | /*******************************************************************************
|
2 | 2 |
|
3 |
| - µMatrix - a browser extension to block requests. |
4 |
| - Copyright (C) 2015 Raymond Hill |
| 3 | + uMatrix - a browser extension to block requests. |
| 4 | + Copyright (C) 2015-2017 Raymond Hill |
5 | 5 |
|
6 | 6 | This program is free software: you can redistribute it and/or modify
|
7 | 7 | it under the terms of the GNU General Public License as published by
|
@@ -33,16 +33,117 @@ var details = {};
|
33 | 33 |
|
34 | 34 | (function() {
|
35 | 35 | var matches = /details=([^&]+)/.exec(window.location.search);
|
36 |
| - if ( matches === null ) { |
37 |
| - return; |
| 36 | + if ( matches === null ) { return; } |
| 37 | + try { |
| 38 | + details = JSON.parse(atob(matches[1])); |
| 39 | + } catch(ex) { |
38 | 40 | }
|
39 |
| - details = JSON.parse(atob(matches[1])); |
40 | 41 | })();
|
41 | 42 |
|
42 | 43 | /******************************************************************************/
|
43 | 44 |
|
44 | 45 | uDom('.what').text(details.url);
|
45 |
| -uDom('#why').text(details.why.slice(3)); |
| 46 | +// uDom('#why').text(details.why.slice(3)); |
| 47 | + |
| 48 | +/******************************************************************************/ |
| 49 | + |
| 50 | +// https://github.com/gorhill/uMatrix/issues/502 |
| 51 | +// Code below originally imported from: |
| 52 | +// https://github.com/gorhill/uBlock/blob/master/src/js/document-blocked.js |
| 53 | + |
| 54 | +(function() { |
| 55 | + if ( typeof URL !== 'function' ) { return; } |
| 56 | + |
| 57 | + var reURL = /^https?:\/\//; |
| 58 | + |
| 59 | + var liFromParam = function(name, value) { |
| 60 | + if ( value === '' ) { |
| 61 | + value = name; |
| 62 | + name = ''; |
| 63 | + } |
| 64 | + var li = document.createElement('li'); |
| 65 | + var span = document.createElement('span'); |
| 66 | + span.textContent = name; |
| 67 | + li.appendChild(span); |
| 68 | + if ( name !== '' && value !== '' ) { |
| 69 | + li.appendChild(document.createTextNode(' = ')); |
| 70 | + } |
| 71 | + span = document.createElement('span'); |
| 72 | + if ( reURL.test(value) ) { |
| 73 | + var a = document.createElement('a'); |
| 74 | + a.href = a.textContent = value; |
| 75 | + span.appendChild(a); |
| 76 | + } else { |
| 77 | + span.textContent = value; |
| 78 | + } |
| 79 | + li.appendChild(span); |
| 80 | + return li; |
| 81 | + }; |
| 82 | + |
| 83 | + var safeDecodeURIComponent = function(s) { |
| 84 | + try { |
| 85 | + s = decodeURIComponent(s); |
| 86 | + } catch (ex) { |
| 87 | + } |
| 88 | + return s; |
| 89 | + }; |
| 90 | + |
| 91 | + var renderParams = function(parentNode, rawURL) { |
| 92 | + var a = document.createElement('a'); |
| 93 | + a.href = rawURL; |
| 94 | + if ( a.search.length === 0 ) { return false; } |
| 95 | + |
| 96 | + var pos = rawURL.indexOf('?'); |
| 97 | + var li = liFromParam( |
| 98 | + vAPI.i18n('docblockedNoParamsPrompt'), |
| 99 | + rawURL.slice(0, pos) |
| 100 | + ); |
| 101 | + parentNode.appendChild(li); |
| 102 | + |
| 103 | + var params = a.search.slice(1).split('&'); |
| 104 | + var param, name, value, ul; |
| 105 | + for ( var i = 0; i < params.length; i++ ) { |
| 106 | + param = params[i]; |
| 107 | + pos = param.indexOf('='); |
| 108 | + if ( pos === -1 ) { |
| 109 | + pos = param.length; |
| 110 | + } |
| 111 | + name = safeDecodeURIComponent(param.slice(0, pos)); |
| 112 | + value = safeDecodeURIComponent(param.slice(pos + 1)); |
| 113 | + li = liFromParam(name, value); |
| 114 | + if ( reURL.test(value) ) { |
| 115 | + ul = document.createElement('ul'); |
| 116 | + renderParams(ul, value); |
| 117 | + li.appendChild(ul); |
| 118 | + } |
| 119 | + parentNode.appendChild(li); |
| 120 | + } |
| 121 | + return true; |
| 122 | + }; |
| 123 | + |
| 124 | + if ( renderParams(uDom.nodeFromId('parsed'), details.url) === false ) { |
| 125 | + return; |
| 126 | + } |
| 127 | + |
| 128 | + var toggler = document.createElement('span'); |
| 129 | + toggler.className = 'fa'; |
| 130 | + uDom('#theURL > p').append(toggler); |
| 131 | + |
| 132 | + uDom(toggler).on('click', function() { |
| 133 | + var collapsed = uDom.nodeFromId('theURL').classList.toggle('collapsed'); |
| 134 | + vAPI.localStorage.setItem( |
| 135 | + 'document-blocked-collapse-url', |
| 136 | + collapsed.toString() |
| 137 | + ); |
| 138 | + }); |
| 139 | + |
| 140 | + uDom.nodeFromId('theURL').classList.toggle( |
| 141 | + 'collapsed', |
| 142 | + vAPI.localStorage.getItem('document-blocked-collapse-url') === 'true' |
| 143 | + ); |
| 144 | +})(); |
| 145 | + |
| 146 | +/******************************************************************************/ |
46 | 147 |
|
47 | 148 | if ( window.history.length > 1 ) {
|
48 | 149 | uDom('#back').on('click', function() { window.history.back(); });
|
|
0 commit comments