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

Unified Diff: lib/contentFiltering.js

Issue 29958567: Issue 7104 - Clear style sheets when frame structure is updated (Closed) Base URL: https://hg.adblockplus.org/adblockpluschrome/
Patch Set: Update comment Created Dec. 19, 2018, 1:47 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ext/background.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/contentFiltering.js
===================================================================
--- a/lib/contentFiltering.js
+++ b/lib/contentFiltering.js
@@ -100,28 +100,29 @@
function updateFrameStyles(tabId, frameId, styleSheet, groupName = "standard",
appendOnly = false)
{
let frame = ext.getFrame(tabId, frameId);
if (!frame)
return false;
- if (!frame.injectedStyleSheets)
- frame.injectedStyleSheets = new Map();
+ if (!frame.state.injectedStyleSheets)
+ frame.state.injectedStyleSheets = new Map();
- let oldStyleSheet = frame.injectedStyleSheets.get(groupName);
+ let oldStyleSheet = frame.state.injectedStyleSheets.get(groupName);
if (appendOnly && oldStyleSheet)
styleSheet = oldStyleSheet + styleSheet;
// Ideally we would compare the old and new style sheets and skip this code
- // if they're the same, but the old style sheet can be a leftover from a
- // previous instance of the frame. We must add the new style sheet
- // regardless.
+ // if they're the same. But first we need to ensure that there are no edge
+ // cases that would cause the old style sheet to be a leftover from a
+ // previous instance of the frame (see issue #7180). For now, we add the new
+ // style sheet regardless.
// Add the new style sheet first to keep previously hidden elements from
// reappearing momentarily.
if (styleSheet && !addStyleSheet(tabId, frameId, styleSheet))
return false;
// Sometimes the old and new style sheets can be exactly the same. In such a
// case, do not remove the "old" style sheet, because it is in fact the new
@@ -129,17 +130,17 @@
if (oldStyleSheet && oldStyleSheet != styleSheet)
removeStyleSheet(tabId, frameId, oldStyleSheet);
// The standard style sheet is ~660 KB per frame (as of Adblock Plus 3.3.2).
// Keeping it in memory would only really be useful on Firefox, which allows
// us to remove it via the tabs.removeCSS API. By choosing not to hold on to
// it, we save potentially several megabytes per tab (#6967).
if (groupName != "standard")
- frame.injectedStyleSheets.set(groupName, styleSheet);
+ frame.state.injectedStyleSheets.set(groupName, styleSheet);
return true;
}
function getExecutableCode(script)
{
let code = executableCode.get(script);
if (code)
return code;
« no previous file with comments | « ext/background.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld