mirror of
https://github.com/zen-browser/desktop.git
synced 2026-06-14 23:43:43 +00:00
38 lines
1.4 KiB
C++
38 lines
1.4 KiB
C++
diff --git a/toolkit/components/contextualidentity/ContextualIdentityService.sys.mjs b/toolkit/components/contextualidentity/ContextualIdentityService.sys.mjs
|
|
index 5702ff28cc22206f5ce16584dac8a78d816562ce..3d08ecc97ce5995b30d8a4af0c33df329b428008 100644
|
|
--- a/toolkit/components/contextualidentity/ContextualIdentityService.sys.mjs
|
|
+++ b/toolkit/components/contextualidentity/ContextualIdentityService.sys.mjs
|
|
@@ -270,11 +270,29 @@ _ContextualIdentityService.prototype = {
|
|
});
|
|
},
|
|
|
|
- create(name, icon, color) {
|
|
+ create(name, icon, color, id = null) {
|
|
this.ensureDataReady();
|
|
|
|
- // Retrieve the next userContextId available.
|
|
- let userContextId = ++this._lastUserContextId;
|
|
+ if (id !== null) {
|
|
+ id = typeof id == "string" ? Number(id) : id;
|
|
+ if (!Number.isSafeInteger(id) || id <= 0) {
|
|
+ throw new Error(`Invalid userContextId '${id}'`);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ let userContextId;
|
|
+ if (
|
|
+ id !== null &&
|
|
+ !this._identities.some(identity => identity.userContextId === id)
|
|
+ ) {
|
|
+ userContextId = id;
|
|
+ this._lastUserContextId = Math.max(
|
|
+ this._lastUserContextId,
|
|
+ userContextId
|
|
+ );
|
|
+ } else {
|
|
+ userContextId = ++this._lastUserContextId;
|
|
+ }
|
|
|
|
// Throw an error if the next userContextId available is invalid (the one associated to
|
|
// MAX_USER_CONTEXT_ID is already reserved to "userContextIdInternal.webextStorageLocal", which
|