summaryrefslogtreecommitdiff
path: root/ext/fg/js/popup-factory.js
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2020-11-23 15:23:47 -0500
committerGitHub <noreply@github.com>2020-11-23 15:23:47 -0500
commit01ff7436ee381c4414e95572cff08aac999b7721 (patch)
treecf5fc7fffdcec77f7dc3996ece0d35b227c9f8c6 /ext/fg/js/popup-factory.js
parent2971f262f9851d588f815d5ea03de69f9594de5a (diff)
Popup setup refactoring (#1054)
* Pass childrenSupported as a parameter to Frontend/Popup constructors * Remove setChildrenSupported * Use event listener instead of function override * Update options order * Expand options and use object for clarity * Fix childrenSupported not being fully propagated
Diffstat (limited to 'ext/fg/js/popup-factory.js')
-rw-r--r--ext/fg/js/popup-factory.js53
1 files changed, 39 insertions, 14 deletions
diff --git a/ext/fg/js/popup-factory.js b/ext/fg/js/popup-factory.js
index 3e817247..d63ed17a 100644
--- a/ext/fg/js/popup-factory.js
+++ b/ext/fg/js/popup-factory.js
@@ -48,12 +48,19 @@ class PopupFactory {
['clearAutoPlayTimer', {async: false, handler: this._onApiClearAutoPlayTimer.bind(this)}],
['setContentScale', {async: false, handler: this._onApiSetContentScale.bind(this)}],
['updateTheme', {async: false, handler: this._onApiUpdateTheme.bind(this)}],
- ['setCustomOuterCss', {async: false, handler: this._onApiSetCustomOuterCss.bind(this)}],
- ['setChildrenSupported', {async: false, handler: this._onApiSetChildrenSupported.bind(this)}]
+ ['setCustomOuterCss', {async: false, handler: this._onApiSetCustomOuterCss.bind(this)}]
]);
}
- async getOrCreatePopup({frameId=null, ownerFrameId=null, id=null, parentPopupId=null, depth=null, popupWindow=false}) {
+ async getOrCreatePopup({
+ frameId=null,
+ ownerFrameId=null,
+ id=null,
+ parentPopupId=null,
+ depth=null,
+ popupWindow=false,
+ childrenSupported=false
+ }) {
// Find by existing id
if (id !== null) {
const popup = this._popups.get(id);
@@ -91,7 +98,12 @@ class PopupFactory {
if (id === null) {
id = generateId(16);
}
- const popup = new PopupWindow(id, depth, this._frameId, ownerFrameId);
+ const popup = new PopupWindow({
+ id,
+ depth,
+ frameId: this._frameId,
+ ownerFrameId
+ });
this._popups.set(id, popup);
return popup;
} else if (frameId === this._frameId) {
@@ -99,7 +111,13 @@ class PopupFactory {
if (id === null) {
id = generateId(16);
}
- const popup = new Popup(id, depth, frameId, ownerFrameId);
+ const popup = new Popup({
+ id,
+ depth,
+ frameId,
+ ownerFrameId,
+ childrenSupported
+ });
if (parent !== null) {
if (parent.child !== null) {
throw new Error('Parent popup already has a child');
@@ -112,8 +130,20 @@ class PopupFactory {
return popup;
} else {
const useFrameOffsetForwarder = (parentPopupId === null);
- ({id, depth, frameId} = await api.crossFrame.invoke(frameId, 'getOrCreatePopup', {id, parentPopupId, frameId, ownerFrameId}));
- const popup = new PopupProxy(id, depth, frameId, ownerFrameId, useFrameOffsetForwarder ? this._frameOffsetForwarder : null);
+ ({id, depth, frameId} = await api.crossFrame.invoke(frameId, 'getOrCreatePopup', {
+ id,
+ parentPopupId,
+ frameId,
+ ownerFrameId,
+ childrenSupported
+ }));
+ const popup = new PopupProxy({
+ id,
+ depth,
+ frameId,
+ ownerFrameId,
+ frameOffsetForwarder: useFrameOffsetForwarder ? this._frameOffsetForwarder : null
+ });
this._popups.set(id, popup);
return popup;
}
@@ -155,8 +185,8 @@ class PopupFactory {
// API message handlers
- async _onApiGetOrCreatePopup({id, parentPopupId, frameId, ownerFrameId}) {
- const popup = await this.getOrCreatePopup({id, parentPopupId, frameId, ownerFrameId});
+ async _onApiGetOrCreatePopup(details) {
+ const popup = await this.getOrCreatePopup(details);
return {
id: popup.id,
depth: popup.depth,
@@ -232,11 +262,6 @@ class PopupFactory {
return popup.setCustomOuterCss(css, useWebExtensionApi);
}
- _onApiSetChildrenSupported({id, value}) {
- const popup = this._getPopup(id);
- return popup.setChildrenSupported(value);
- }
-
// Private functions
_getPopup(id) {