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

Unified Diff: safari/ext/content.js

Issue 29339714: Issue 3924 - Notice pages loaded from Safari's page cache (Closed)
Patch Set: Created April 14, 2016, 8:57 a.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: safari/ext/content.js
diff --git a/safari/ext/content.js b/safari/ext/content.js
index 05c615408b15b9d9db11f0d9fa61b455f628b7c0..b8222be4dae415eca7688045a047048e6d93fcb1 100644
--- a/safari/ext/content.js
+++ b/safari/ext/content.js
@@ -28,22 +28,40 @@
var beforeLoadEvent = document.createEvent("Event");
beforeLoadEvent.initEvent("beforeload");
- var isTopLevel = window == window.top;
- var isPrerendered = document.visibilityState == "prerender";
-
- // Notify the background page that this frame is loading, generating ourselves
- // a random documentId while we're at it. That way the background page can
- // communicate with us reliably, despite limitations in Safari's extension
- // API.
- var documentId = Math.random().toString().substr(2);
- safari.self.tab.dispatchMessage("loading", {
- url: window.location.href,
- referrer: document.referrer,
- isTopLevel: isTopLevel,
- isPrerendered: isPrerendered,
- documentId: documentId
+ var isTopLevel;
+ var isPrerendered;
+ var documentId;
+ function notifyFrameLoading()
+ {
+ isTopLevel = window == window.top;
+ isPrerendered = document.visibilityState == "prerender";
+ documentId = Math.random().toString().substr(2);
+
+ // Notify the background page that this frame is loading, generating
+ // ourselves a random documentId while we're at it. That way the background
+ // page can communicate with us reliably, despite limitations in Safari's
+ // extension API.
+ safari.self.tab.dispatchMessage("loading", {
+ url: window.location.href,
+ referrer: document.referrer,
+ isTopLevel: isTopLevel,
+ isPrerendered: isPrerendered,
+ documentId: documentId
+ });
+ }
+
+ // We must notify the background page when this page is first loadeding (now)
+ // but also when it is re-shown (if the user uses the back button to return to
+ // this page in the future).
+ notifyFrameLoading();
+ window.addEventListener("pageshow", function (event)
Sebastian Noack 2016/04/14 10:58:56 Nit: Redundant space after function statement.
+ {
+ if (event.persisted)
+ notifyFrameLoading();
});
+ // Notify the background page when a prerendered page is displayed. That way
+ // the existing page of the tab can be replaced with this new one.
if (isTopLevel && isPrerendered)
{
var onVisibilitychange = function()
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld