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

Unified Diff: chrome/ext/background.js

Issue 5943816674607104: Issue 1983 - Dispatch onLoading event for prerendered pages (Closed)
Patch Set: Simplified changes Created Feb. 10, 2015, 5:14 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/ext/background.js
===================================================================
--- a/chrome/ext/background.js
+++ b/chrome/ext/background.js
@@ -108,18 +108,39 @@
ext.pages.onLoading._dispatch(new Page(tab));
});
+ chrome.webNavigation.onBeforeNavigate.addListener(function(details)
+ {
+ if (details.frameId == 0)
+ {
+ ext._removeFromAllPageMaps(details.tabId);
+
+ chrome.tabs.get(details.tabId, function()
+ {
+ // If the tab is prerendered, chrome.tabs.get() sets
+ // chrome.runtime.lastError and we have to dispatch the onLoading event,
+ // since the onUpdated event isn't dispatched for prerendered tabs.
+ // However, we have to keep relying on the unUpdated event for tabs that
+ // are already visible. Otherwise browser action changes get overridden
+ // when Chrome automatically resets them on navigation.
+ if (chrome.runtime.lastError)
+ {
+ ext.pages.onLoading._dispatch(
+ new Page({
+ id: details.tabId,
+ url: details.url
+ })
+ );
+ }
+ });
+ }
+ });
+
function forgetTab(tabId)
{
ext._removeFromAllPageMaps(tabId);
delete framesOfTabs[tabId];
}
- chrome.webNavigation.onBeforeNavigate.addListener(function(details)
- {
- if (details.frameId == 0)
- forgetTab(details.tabId);
- });
-
chrome.tabs.onReplaced.addListener(function(addedTabId, removedTabId)
{
forgetTab(removedTabId);
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld