mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-17 15:25:52 +00:00
Bug 1695266 - Create documentation for the Picture-in-Picture Overrides extension r=mtigley,mhowell
Differential Revision: https://phabricator.services.mozilla.com/D108073
This commit is contained in:
parent
4e512a5e67
commit
0fc5685f2c
@ -6,7 +6,15 @@
|
|||||||
|
|
||||||
/* global ExtensionAPI, ExtensionCommon, Services, XPCOMUtils */
|
/* global ExtensionAPI, ExtensionCommon, Services, XPCOMUtils */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class extending the ExtensionAPI, ensures we can set/get preferences
|
||||||
|
*/
|
||||||
this.aboutConfigPipPrefs = class extends ExtensionAPI {
|
this.aboutConfigPipPrefs = class extends ExtensionAPI {
|
||||||
|
/**
|
||||||
|
* Override ExtensionAPI with PiP override's specific preference API, prefixed by `disabled_picture_in_picture_overrides`
|
||||||
|
* @param {ExtensionContext} context the context of an extension
|
||||||
|
* @returns {Object} returns the necessary API structure required to manage prefs within this extension
|
||||||
|
*/
|
||||||
getAPI(context) {
|
getAPI(context) {
|
||||||
const EventManager = ExtensionCommon.EventManager;
|
const EventManager = ExtensionCommon.EventManager;
|
||||||
const extensionIDBase = context.extension.id.split("@")[0];
|
const extensionIDBase = context.extension.id.split("@")[0];
|
||||||
@ -28,6 +36,11 @@ this.aboutConfigPipPrefs = class extends ExtensionAPI {
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
}).api(),
|
}).api(),
|
||||||
|
/**
|
||||||
|
* Calls `Services.prefs.getBoolPref` to get a preference
|
||||||
|
* @param {String} name The name of the preference to get; will be prefixed with this extension's branch
|
||||||
|
* @returns the preference, or undefined
|
||||||
|
*/
|
||||||
async getPref(name) {
|
async getPref(name) {
|
||||||
try {
|
try {
|
||||||
return Services.prefs.getBoolPref(
|
return Services.prefs.getBoolPref(
|
||||||
@ -37,6 +50,12 @@ this.aboutConfigPipPrefs = class extends ExtensionAPI {
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calls `Services.prefs.setBoolPref` to set a preference
|
||||||
|
* @param {String} name the name of the preference to set; will be prefixed with this extension's branch
|
||||||
|
* @param {String} value the bool value to save in the pref
|
||||||
|
*/
|
||||||
async setPref(name, value) {
|
async setPref(name, value) {
|
||||||
Services.prefs.setBoolPref(`${extensionPrefNameBase}${name}`, value);
|
Services.prefs.setBoolPref(`${extensionPrefNameBase}${name}`, value);
|
||||||
},
|
},
|
||||||
|
@ -25,6 +25,12 @@ const TOGGLE_ENABLED_PREF =
|
|||||||
* This API is expected to be running in the parent process.
|
* This API is expected to be running in the parent process.
|
||||||
*/
|
*/
|
||||||
this.pictureInPictureParent = class extends ExtensionAPI {
|
this.pictureInPictureParent = class extends ExtensionAPI {
|
||||||
|
/**
|
||||||
|
* Override ExtensionAPI with PiP override's specific API
|
||||||
|
* Relays the site overrides to this extension's child process
|
||||||
|
* @param {ExtensionContext} context the context of our extension
|
||||||
|
* @returns {Object} returns the necessary API structure required to manage sharedData in PictureInPictureParent
|
||||||
|
*/
|
||||||
getAPI(context) {
|
getAPI(context) {
|
||||||
return {
|
return {
|
||||||
pictureInPictureParent: {
|
pictureInPictureParent: {
|
||||||
@ -52,6 +58,12 @@ this.pictureInPictureParent = class extends ExtensionAPI {
|
|||||||
* background scripts.
|
* background scripts.
|
||||||
*/
|
*/
|
||||||
this.pictureInPictureChild = class extends ExtensionAPI {
|
this.pictureInPictureChild = class extends ExtensionAPI {
|
||||||
|
/**
|
||||||
|
* Override ExtensionAPI with PiP override's specific API
|
||||||
|
* Clone constants into the Picture-in-Picture child process
|
||||||
|
* @param {ExtensionContext} context the context of our extension
|
||||||
|
* @returns returns the necessary API structure required to get data from PictureInPictureChild
|
||||||
|
*/
|
||||||
getAPI(context) {
|
getAPI(context) {
|
||||||
return {
|
return {
|
||||||
pictureInPictureChild: {
|
pictureInPictureChild: {
|
||||||
|
@ -6,7 +6,14 @@
|
|||||||
|
|
||||||
/* globals browser, module */
|
/* globals browser, module */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Picture-in-Picture Overrides
|
||||||
|
*/
|
||||||
class PictureInPictureOverrides {
|
class PictureInPictureOverrides {
|
||||||
|
/**
|
||||||
|
* Class constructor
|
||||||
|
* @param {Object} availableOverrides Contains all overrides provided in data/picture_in_picture_overrides.js
|
||||||
|
*/
|
||||||
constructor(availableOverrides) {
|
constructor(availableOverrides) {
|
||||||
this.pref = "enable_picture_in_picture_overrides";
|
this.pref = "enable_picture_in_picture_overrides";
|
||||||
this._prefEnabledOverrides = new Set();
|
this._prefEnabledOverrides = new Set();
|
||||||
@ -14,6 +21,9 @@ class PictureInPictureOverrides {
|
|||||||
this.policies = browser.pictureInPictureChild.getPolicies();
|
this.policies = browser.pictureInPictureChild.getPolicies();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ensures the "enable_picture_in_picture_overrides" pref is set; if it is undefined, sets the pref to true
|
||||||
|
*/
|
||||||
async _checkGlobalPref() {
|
async _checkGlobalPref() {
|
||||||
await browser.aboutConfigPipPrefs.getPref(this.pref).then(value => {
|
await browser.aboutConfigPipPrefs.getPref(this.pref).then(value => {
|
||||||
if (value === false) {
|
if (value === false) {
|
||||||
@ -27,6 +37,11 @@ class PictureInPictureOverrides {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks the status of a specified override, and updates the set, `this._prefEnabledOverrides`, accordingly
|
||||||
|
* @param {String} id the id of the specific override contained in `this._availableOverrides`
|
||||||
|
* @param {String} pref the specific preference to check, in the form `disabled_picture_in_picture_overrides.${id}`
|
||||||
|
*/
|
||||||
async _checkSpecificOverridePref(id, pref) {
|
async _checkSpecificOverridePref(id, pref) {
|
||||||
const isDisabled = await browser.aboutConfigPipPrefs.getPref(pref);
|
const isDisabled = await browser.aboutConfigPipPrefs.getPref(pref);
|
||||||
if (isDisabled === true) {
|
if (isDisabled === true) {
|
||||||
@ -36,6 +51,9 @@ class PictureInPictureOverrides {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The function that `run.js` calls to begin checking for changes to the PiP overrides
|
||||||
|
*/
|
||||||
bootup() {
|
bootup() {
|
||||||
const checkGlobal = async () => {
|
const checkGlobal = async () => {
|
||||||
await this._checkGlobalPref();
|
await this._checkGlobalPref();
|
||||||
@ -63,6 +81,9 @@ class PictureInPictureOverrides {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets pictureInPictureParent's overrides
|
||||||
|
*/
|
||||||
async _onAvailableOverridesChanged() {
|
async _onAvailableOverridesChanged() {
|
||||||
const policies = await this.policies;
|
const policies = await this.policies;
|
||||||
let enabledOverrides = {};
|
let enabledOverrides = {};
|
||||||
|
Loading…
Reference in New Issue
Block a user