summaryrefslogtreecommitdiffstats
path: root/webbrowser/components/sessionstore/content/content-sessionStore.js
diff options
context:
space:
mode:
Diffstat (limited to 'webbrowser/components/sessionstore/content/content-sessionStore.js')
-rw-r--r--webbrowser/components/sessionstore/content/content-sessionStore.js40
1 files changed, 40 insertions, 0 deletions
diff --git a/webbrowser/components/sessionstore/content/content-sessionStore.js b/webbrowser/components/sessionstore/content/content-sessionStore.js
new file mode 100644
index 0000000..e3e956e
--- /dev/null
+++ b/webbrowser/components/sessionstore/content/content-sessionStore.js
@@ -0,0 +1,40 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+function debug(msg) {
+ Services.console.logStringMessage("SessionStoreContent: " + msg);
+}
+
+/**
+ * Listens for and handles content events that we need for the
+ * session store service to be notified of state changes in content.
+ */
+var EventListener = {
+
+ DOM_EVENTS: [
+ "pageshow", "change", "input"
+ ],
+
+ init: function () {
+ this.DOM_EVENTS.forEach(e => addEventListener(e, this, true));
+ },
+
+ handleEvent: function (event) {
+ switch (event.type) {
+ case "pageshow":
+ if (event.persisted)
+ sendAsyncMessage("SessionStore:pageshow");
+ break;
+ case "input":
+ case "change":
+ sendAsyncMessage("SessionStore:input");
+ break;
+ default:
+ debug("received unknown event '" + event.type + "'");
+ break;
+ }
+ }
+};
+
+EventListener.init();