aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/fg/js/float.js2
-rw-r--r--ext/fg/js/popup.js20
2 files changed, 21 insertions, 1 deletions
diff --git a/ext/fg/js/float.js b/ext/fg/js/float.js
index 3766d5a4..8871160f 100644
--- a/ext/fg/js/float.js
+++ b/ext/fg/js/float.js
@@ -45,6 +45,8 @@ class DisplayFloat extends Display {
}
this.setContentScale(scale);
+
+ window.parent.postMessage('initialized', '*');
}
onError(error) {
diff --git a/ext/fg/js/popup.js b/ext/fg/js/popup.js
index e7dae93e..6cfe49e5 100644
--- a/ext/fg/js/popup.js
+++ b/ext/fg/js/popup.js
@@ -45,6 +45,8 @@ class Popup {
this._container.style.height = '0px';
this._updateVisibility();
+
+ window.addEventListener('message', (e) => this.onMessage(e), false);
}
// Public properties
@@ -129,6 +131,18 @@ class Popup {
}
}
+ onMessage(e) {
+ const action = e.data;
+ const handler = Popup._windowMessageHandlers.get(action);
+ if (typeof handler !== 'function') { return; }
+
+ handler(this);
+ }
+
+ setInitialized() {
+ throw new Error('Override me');
+ }
+
// Popup-only public functions
setParent(parent) {
@@ -237,7 +251,7 @@ class Popup {
childrenSupported: this._childrenSupported,
scale: this._contentScale
});
- resolve();
+ this.setInitialized = resolve;
});
this._observeFullscreen();
this._onFullscreenChanged();
@@ -535,4 +549,8 @@ class Popup {
}
}
+Popup._windowMessageHandlers = new Map([
+ ['initialized', (self) => self.setInitialized()]
+]);
+
Popup.outerStylesheet = null;