Prevent picker's preview mode from modifying style attribute

Related issue:
- https://github.com/uBlockOrigin/uBlock-issues/issues/551

The issue fixes previewing the hiding/unhiding of targeted
elements in the element picker.

However it does not address the case of previewing
`:style(...)` operators -- this would require a much
more complex fix, which I am not sure is worth the
amount of work and increased code complexity.
This commit is contained in:
Raymond Hill 2019-05-17 19:26:48 -04:00
parent 9cbdff1a9d
commit 62387fb87a
No known key found for this signature in database
GPG key ID: 25E1490B761470C2

View file

@ -883,16 +883,15 @@ const filterToDOMInterface = (function() {
const elem = item.elem;
// https://github.com/gorhill/uBlock/issues/1629
if ( elem === pickerRoot ) { continue; }
const style = elem.style;
if (
(elem !== htmlElem) &&
(item.type === 'cosmetic' || item.type === 'network' && item.src !== undefined)
) {
item.display = style.getPropertyValue('display');
item.displayPriority = style.getPropertyPriority('display');
style.setProperty('display', 'none', 'important');
vAPI.domFilterer.hideNode(elem);
item.hidden = true;
}
if ( item.type === 'network' && item.style === 'background-image' ) {
const style = elem.style;
item.backgroundImage = style.getPropertyValue('background-image');
item.backgroundImagePriority = style.getPropertyPriority('background-image');
style.setProperty('background-image', 'none', 'important');
@ -903,13 +902,9 @@ const filterToDOMInterface = (function() {
const unapplyHide = function() {
if ( lastResultset === undefined ) { return; }
for ( const item of lastResultset ) {
if ( item.hasOwnProperty('display') ) {
item.elem.style.setProperty(
'display',
item.display,
item.displayPriority
);
delete item.display;
if ( item.hidden === true ) {
vAPI.domFilterer.unhideNode(item.elem);
item.hidden = false;
}
if ( item.hasOwnProperty('backgroundImage') ) {
item.elem.style.setProperty(