mirror of
https://github.com/zen-browser/desktop.git
synced 2026-03-30 04:11:51 +00:00
Merge pull request #7723 from zen-browser/update-ff-138
Update for firefox 138.0 beta 9
This commit is contained in:
@@ -30,7 +30,7 @@
|
||||
|
||||
Zen is currently built using Firefox version `137.0.2`! 🚀
|
||||
|
||||
- [`Zen Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 137.0.2`!
|
||||
- [`Zen Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 138.0`!
|
||||
- Check out the latest [release notes](https://zen-browser.app/release-notes)!
|
||||
- Part of our mission is to keep Zen up-to-date with the latest version of Firefox, so you can enjoy the latest features and security updates!
|
||||
|
||||
|
||||
3
babel.config.json
Normal file
3
babel.config.json
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"presets": ["@babel/preset-typescript"]
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
ee85441427e22eb9fbc8d3eb62c7e5804535f0bc
|
||||
7113caf804fda45f011f1900c25de638398d586e
|
||||
10
build/ts/transform-ts.js
Normal file
10
build/ts/transform-ts.js
Normal file
@@ -0,0 +1,10 @@
|
||||
const fs = require('fs');
|
||||
const MJS_FILES = ['src/zen/split-view/ZenViewSplitter.ts'];
|
||||
|
||||
for (const file of MJS_FILES) {
|
||||
const code = fs.readFileSync(file, 'utf8');
|
||||
require('@babel/core').transformSync(code, {
|
||||
presets: ['@babel/preset-typescript'],
|
||||
filename: file,
|
||||
});
|
||||
}
|
||||
732
package-lock.json
generated
732
package-lock.json
generated
@@ -12,6 +12,7 @@
|
||||
"@zen-browser/surfer": "^1.11.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/preset-typescript": "^7.27.0",
|
||||
"formal-git": "^1.1.5",
|
||||
"husky": "^9.1.7",
|
||||
"lint-staged": "^15.3.0",
|
||||
@@ -19,6 +20,533 @@
|
||||
"prettier-plugin-sh": "^0.14.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ampproject/remapping": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
|
||||
"integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
|
||||
"dev": true,
|
||||
"license": "Apache-2.0",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/gen-mapping": "^0.3.5",
|
||||
"@jridgewell/trace-mapping": "^0.3.24"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/code-frame": {
|
||||
"version": "7.26.2",
|
||||
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz",
|
||||
"integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-validator-identifier": "^7.25.9",
|
||||
"js-tokens": "^4.0.0",
|
||||
"picocolors": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/compat-data": {
|
||||
"version": "7.26.8",
|
||||
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz",
|
||||
"integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/core": {
|
||||
"version": "7.26.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz",
|
||||
"integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@ampproject/remapping": "^2.2.0",
|
||||
"@babel/code-frame": "^7.26.2",
|
||||
"@babel/generator": "^7.26.10",
|
||||
"@babel/helper-compilation-targets": "^7.26.5",
|
||||
"@babel/helper-module-transforms": "^7.26.0",
|
||||
"@babel/helpers": "^7.26.10",
|
||||
"@babel/parser": "^7.26.10",
|
||||
"@babel/template": "^7.26.9",
|
||||
"@babel/traverse": "^7.26.10",
|
||||
"@babel/types": "^7.26.10",
|
||||
"convert-source-map": "^2.0.0",
|
||||
"debug": "^4.1.0",
|
||||
"gensync": "^1.0.0-beta.2",
|
||||
"json5": "^2.2.3",
|
||||
"semver": "^6.3.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/babel"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/core/node_modules/semver": {
|
||||
"version": "6.3.1",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/generator": {
|
||||
"version": "7.27.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz",
|
||||
"integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.27.0",
|
||||
"@babel/types": "^7.27.0",
|
||||
"@jridgewell/gen-mapping": "^0.3.5",
|
||||
"@jridgewell/trace-mapping": "^0.3.25",
|
||||
"jsesc": "^3.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-annotate-as-pure": {
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz",
|
||||
"integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.25.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-compilation-targets": {
|
||||
"version": "7.27.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz",
|
||||
"integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/compat-data": "^7.26.8",
|
||||
"@babel/helper-validator-option": "^7.25.9",
|
||||
"browserslist": "^4.24.0",
|
||||
"lru-cache": "^5.1.1",
|
||||
"semver": "^6.3.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-compilation-targets/node_modules/semver": {
|
||||
"version": "6.3.1",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-create-class-features-plugin": {
|
||||
"version": "7.27.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz",
|
||||
"integrity": "sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-annotate-as-pure": "^7.25.9",
|
||||
"@babel/helper-member-expression-to-functions": "^7.25.9",
|
||||
"@babel/helper-optimise-call-expression": "^7.25.9",
|
||||
"@babel/helper-replace-supers": "^7.26.5",
|
||||
"@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
|
||||
"@babel/traverse": "^7.27.0",
|
||||
"semver": "^6.3.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@babel/core": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
|
||||
"version": "6.3.1",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
||||
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"bin": {
|
||||
"semver": "bin/semver.js"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-member-expression-to-functions": {
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz",
|
||||
"integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/traverse": "^7.25.9",
|
||||
"@babel/types": "^7.25.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-module-imports": {
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz",
|
||||
"integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/traverse": "^7.25.9",
|
||||
"@babel/types": "^7.25.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-module-transforms": {
|
||||
"version": "7.26.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz",
|
||||
"integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-module-imports": "^7.25.9",
|
||||
"@babel/helper-validator-identifier": "^7.25.9",
|
||||
"@babel/traverse": "^7.25.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@babel/core": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-optimise-call-expression": {
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz",
|
||||
"integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.25.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-plugin-utils": {
|
||||
"version": "7.26.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz",
|
||||
"integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-replace-supers": {
|
||||
"version": "7.26.5",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz",
|
||||
"integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-member-expression-to-functions": "^7.25.9",
|
||||
"@babel/helper-optimise-call-expression": "^7.25.9",
|
||||
"@babel/traverse": "^7.26.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@babel/core": "^7.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-skip-transparent-expression-wrappers": {
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz",
|
||||
"integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/traverse": "^7.25.9",
|
||||
"@babel/types": "^7.25.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-string-parser": {
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
|
||||
"integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-validator-identifier": {
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
|
||||
"integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helper-validator-option": {
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz",
|
||||
"integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/helpers": {
|
||||
"version": "7.27.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz",
|
||||
"integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/template": "^7.27.0",
|
||||
"@babel/types": "^7.27.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/parser": {
|
||||
"version": "7.27.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
|
||||
"integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/types": "^7.27.0"
|
||||
},
|
||||
"bin": {
|
||||
"parser": "bin/babel-parser.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-syntax-jsx": {
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz",
|
||||
"integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-plugin-utils": "^7.25.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@babel/core": "^7.0.0-0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-syntax-typescript": {
|
||||
"version": "7.25.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz",
|
||||
"integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-plugin-utils": "^7.25.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@babel/core": "^7.0.0-0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-transform-modules-commonjs": {
|
||||
"version": "7.26.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz",
|
||||
"integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-module-transforms": "^7.26.0",
|
||||
"@babel/helper-plugin-utils": "^7.25.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@babel/core": "^7.0.0-0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-transform-typescript": {
|
||||
"version": "7.27.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz",
|
||||
"integrity": "sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-annotate-as-pure": "^7.25.9",
|
||||
"@babel/helper-create-class-features-plugin": "^7.27.0",
|
||||
"@babel/helper-plugin-utils": "^7.26.5",
|
||||
"@babel/helper-skip-transparent-expression-wrappers": "^7.25.9",
|
||||
"@babel/plugin-syntax-typescript": "^7.25.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@babel/core": "^7.0.0-0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/preset-typescript": {
|
||||
"version": "7.27.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.0.tgz",
|
||||
"integrity": "sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-plugin-utils": "^7.26.5",
|
||||
"@babel/helper-validator-option": "^7.25.9",
|
||||
"@babel/plugin-syntax-jsx": "^7.25.9",
|
||||
"@babel/plugin-transform-modules-commonjs": "^7.26.3",
|
||||
"@babel/plugin-transform-typescript": "^7.27.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@babel/core": "^7.0.0-0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/template": {
|
||||
"version": "7.27.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz",
|
||||
"integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.26.2",
|
||||
"@babel/parser": "^7.27.0",
|
||||
"@babel/types": "^7.27.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/traverse": {
|
||||
"version": "7.27.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
|
||||
"integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/code-frame": "^7.26.2",
|
||||
"@babel/generator": "^7.27.0",
|
||||
"@babel/parser": "^7.27.0",
|
||||
"@babel/template": "^7.27.0",
|
||||
"@babel/types": "^7.27.0",
|
||||
"debug": "^4.3.1",
|
||||
"globals": "^11.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/types": {
|
||||
"version": "7.27.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
|
||||
"integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/helper-string-parser": "^7.25.9",
|
||||
"@babel/helper-validator-identifier": "^7.25.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/gen-mapping": {
|
||||
"version": "0.3.8",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
|
||||
"integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jridgewell/set-array": "^1.2.1",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.10",
|
||||
"@jridgewell/trace-mapping": "^0.3.24"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/resolve-uri": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
|
||||
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/set-array": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
|
||||
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/sourcemap-codec": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
|
||||
"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@jridgewell/trace-mapping": {
|
||||
"version": "0.3.25",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
|
||||
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@jridgewell/resolve-uri": "^3.1.0",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.14"
|
||||
}
|
||||
},
|
||||
"node_modules/@oozcitak/dom": {
|
||||
"version": "1.15.10",
|
||||
"resolved": "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz",
|
||||
@@ -497,6 +1025,40 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/browserslist": {
|
||||
"version": "4.24.4",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz",
|
||||
"integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/browserslist"
|
||||
},
|
||||
{
|
||||
"type": "tidelift",
|
||||
"url": "https://tidelift.com/funding/github/npm/browserslist"
|
||||
},
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"caniuse-lite": "^1.0.30001688",
|
||||
"electron-to-chromium": "^1.5.73",
|
||||
"node-releases": "^2.0.19",
|
||||
"update-browserslist-db": "^1.1.1"
|
||||
},
|
||||
"bin": {
|
||||
"browserslist": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
|
||||
}
|
||||
},
|
||||
"node_modules/buffer": {
|
||||
"version": "5.7.1",
|
||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
|
||||
@@ -558,6 +1120,28 @@
|
||||
"node": ">=0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001715",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001715.tgz",
|
||||
"integrity": "sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/browserslist"
|
||||
},
|
||||
{
|
||||
"type": "tidelift",
|
||||
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
|
||||
},
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"license": "CC-BY-4.0",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/chalk": {
|
||||
"version": "4.1.2",
|
||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
||||
@@ -719,6 +1303,14 @@
|
||||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/convert-source-map": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
|
||||
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/core-js-pure": {
|
||||
"version": "3.41.0",
|
||||
"resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.41.0.tgz",
|
||||
@@ -827,6 +1419,14 @@
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.5.139",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.139.tgz",
|
||||
"integrity": "sha512-GGnRYOTdN5LYpwbIr0rwP/ZHOQSvAF6TG0LSzp28uCBb9JiXHJGmaaKw29qjNJc5bGnnp6kXJqRnGMQoELwi5w==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/emoji-regex": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
||||
@@ -855,6 +1455,17 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/escalade": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
|
||||
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/esprima": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
|
||||
@@ -1060,6 +1671,17 @@
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/gensync": {
|
||||
"version": "1.0.0-beta.2",
|
||||
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
|
||||
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/get-caller-file": {
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
||||
@@ -1100,6 +1722,16 @@
|
||||
"integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/globals": {
|
||||
"version": "11.12.0",
|
||||
"resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
|
||||
"integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
}
|
||||
},
|
||||
"node_modules/globalyzer": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz",
|
||||
@@ -1318,6 +1950,13 @@
|
||||
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/js-tokens": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
||||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/js-yaml": {
|
||||
"version": "3.14.1",
|
||||
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
|
||||
@@ -1331,6 +1970,33 @@
|
||||
"js-yaml": "bin/js-yaml.js"
|
||||
}
|
||||
},
|
||||
"node_modules/jsesc": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
|
||||
"integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"jsesc": "bin/jsesc"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/json5": {
|
||||
"version": "2.2.3",
|
||||
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
||||
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"json5": "lib/cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/jsonfile": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
|
||||
@@ -1662,6 +2328,17 @@
|
||||
"url": "https://github.com/chalk/slice-ansi?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/lru-cache": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
||||
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"yallist": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"node_modules/merge-stream": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
|
||||
@@ -1817,6 +2494,14 @@
|
||||
"integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/node-releases": {
|
||||
"version": "2.0.19",
|
||||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz",
|
||||
"integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/normalize-path": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
|
||||
@@ -1897,6 +2582,13 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/picocolors": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
|
||||
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
|
||||
"dev": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/picomatch": {
|
||||
"version": "2.3.1",
|
||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
|
||||
@@ -2778,6 +3470,38 @@
|
||||
"node": ">= 10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/update-browserslist-db": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz",
|
||||
"integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/browserslist"
|
||||
},
|
||||
{
|
||||
"type": "tidelift",
|
||||
"url": "https://tidelift.com/funding/github/npm/browserslist"
|
||||
},
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/ai"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"escalade": "^3.2.0",
|
||||
"picocolors": "^1.1.1"
|
||||
},
|
||||
"bin": {
|
||||
"update-browserslist-db": "cli.js"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"browserslist": ">= 4.21.0"
|
||||
}
|
||||
},
|
||||
"node_modules/util-deprecate": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||
@@ -2885,6 +3609,14 @@
|
||||
"node": ">=0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/yallist": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
|
||||
"dev": true,
|
||||
"license": "ISC",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/yaml": {
|
||||
"version": "2.7.0",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz",
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"@zen-browser/surfer": "^1.11.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/preset-typescript": "^7.27.0",
|
||||
"formal-git": "^1.1.5",
|
||||
"husky": "^9.1.7",
|
||||
"lint-staged": "^15.3.0",
|
||||
|
||||
43
scripts/update_ts_types.py
Normal file
43
scripts/update_ts_types.py
Normal file
@@ -0,0 +1,43 @@
|
||||
|
||||
import os
|
||||
|
||||
FILES = [
|
||||
"index.d.ts",
|
||||
"lib.gecko.darwin.d.ts",
|
||||
"lib.gecko.dom.d.ts",
|
||||
"lib.gecko.glean.d.ts",
|
||||
"lib.gecko.linux.d.ts",
|
||||
"lib.gecko.modules.d.ts",
|
||||
"lib.gecko.nsresult.d.ts",
|
||||
"lib.gecko.services.d.ts",
|
||||
"lib.gecko.tweaks.d.ts",
|
||||
"lib.gecko.win32.d.ts",
|
||||
"lib.gecko.xpcom.d.ts",
|
||||
"lib.gecko.xpidl.d.ts",
|
||||
]
|
||||
|
||||
ENGINE_PATH = os.path.join("engine", "tools", "@types")
|
||||
SRC_PATH = os.path.join("src", "zen", "@types")
|
||||
|
||||
|
||||
def update_ts_types():
|
||||
os.system("cd engine && ./mach ts build && ./mach ts update")
|
||||
# copy the files from engine/tools/@types to src/@types
|
||||
for file in FILES:
|
||||
src_file = os.path.join(ENGINE_PATH, file)
|
||||
dest_file = os.path.join(SRC_PATH, file)
|
||||
if os.path.exists(src_file):
|
||||
os.system(f"cp {src_file} {dest_file}")
|
||||
else:
|
||||
print(f"File {src_file} does not exist.")
|
||||
|
||||
# add zen.d.ts to the end of index.d.ts
|
||||
with open(os.path.join(SRC_PATH, "index.d.ts"), "a") as f:
|
||||
f.write("\n")
|
||||
f.write('/// <reference types="./zen.d.ts" />\n')
|
||||
f.write('\n')
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
update_ts_types()
|
||||
print("Updated TypeScript types.")
|
||||
@@ -1,14 +1,14 @@
|
||||
diff --git a/Cargo.toml b/Cargo.toml
|
||||
index a99b447250d36dd0146e031fa22503bc88eeae39..86829fc7075054f832a04825c98325a925cf5b0f 100644
|
||||
index d3d529b487f80d4b4f3bfa13cdd3f62946352db8..b35a9e0e3339d48d1cd0cab7b22d030f330e40d1 100644
|
||||
--- a/Cargo.toml
|
||||
+++ b/Cargo.toml
|
||||
@@ -205,6 +205,9 @@ rure = { path = "third_party/rust/rure" }
|
||||
@@ -217,6 +217,9 @@ rure = { path = "third_party/rust/rure" }
|
||||
# Patch `plist` to work with `indexmap` 2.*
|
||||
plist = { path = "third_party/rust/plist" }
|
||||
|
||||
+# Patch mime_guess to add missing mime types
|
||||
+mime_guess = { path = "third_party/rust/mime_guess" }
|
||||
+
|
||||
# To-be-published changes.
|
||||
unicode-bidi = { git = "https://github.com/servo/unicode-bidi", rev = "ca612daf1c08c53abe07327cb3e6ef6e0a760f0c" }
|
||||
nss-gk-api = { git = "https://github.com/beurdouche/nss-gk-api", rev = "e48a946811ffd64abc78de3ee284957d8d1c0d63" }
|
||||
# Patch `unicode-width` 0.1.* to 0.2.
|
||||
unicode-width = { path = "build/rust/unicode-width" }
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ pref("browser.privateWindowSeparation.enabled", false);
|
||||
// Mica
|
||||
pref("widget.windows.mica", true);
|
||||
pref("widget.windows.mica.popups", true);
|
||||
pref("widget.windows.mica.toplevel-backdrop", 2);
|
||||
#endif
|
||||
|
||||
pref('browser.newtabpage.activity-stream.newtabWallpapers.enabled', true);
|
||||
@@ -142,10 +143,6 @@ pref('zen.view.experimental-rounded-view', false);
|
||||
pref('zen.view.experimental-rounded-view', true);
|
||||
#endif
|
||||
|
||||
#ifdef XP_WIN
|
||||
pref('zen.widget.windows.acrylic', true);
|
||||
#endif
|
||||
|
||||
// Glance
|
||||
pref('zen.glance.enabled', true);
|
||||
pref('zen.glance.hold-duration', 300); // in ms
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
diff --git a/browser/base/content/browser-box.inc.xhtml b/browser/base/content/browser-box.inc.xhtml
|
||||
index 2ca8bdd2674fb4addf3bbf94ff17abc5c93c6293..dd965d8d190e8cdacbeb3d80995ad1a906e64079 100644
|
||||
index 7d7e8697f02f90d4f336c9ab0a73a89848e0c21c..d113b439888d26629ce5f6b5d35f8fa12249774b 100644
|
||||
--- a/browser/base/content/browser-box.inc.xhtml
|
||||
+++ b/browser/base/content/browser-box.inc.xhtml
|
||||
@@ -26,7 +26,13 @@
|
||||
<splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
|
||||
<box id="after-splitter"></box>
|
||||
</div>
|
||||
@@ -23,7 +23,13 @@
|
||||
<browser id="sidebar" autoscroll="false" disablehistory="true" disablefullscreen="true" tooltip="aHTMLTooltip"/>
|
||||
</vbox>
|
||||
<splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
|
||||
+<vbox flex="1" id="zen-appcontent-wrapper">
|
||||
+<html:div id="zen-appcontent-navbar-container"></html:div>
|
||||
+<hbox id="zen-tabbox-wrapper" flex="1">
|
||||
+ <html:div id="zen-appcontent-navbar-container"></html:div>
|
||||
+ <hbox id="zen-tabbox-wrapper" flex="1">
|
||||
<tabbox id="tabbrowser-tabbox" flex="1" tabcontainer="tabbrowser-tabs">
|
||||
+#include zen-tabbrowser-elements.inc.xhtml
|
||||
<tabpanels id="tabbrowser-tabpanels" flex="1" selectedIndex="0"/>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
|
||||
index 0d0a559a6473149b50f4bf18d059e86907c4acd3..25ad798eb26f04262d069fdaf1f3fb00adec9807 100644
|
||||
index 51a25aaa5558e6e17246d54a7ed95d5ddf3ecdab..b49984c8711fc9f5f19f0cf6ecca07a8cca0d125 100644
|
||||
--- a/browser/base/content/browser.xhtml
|
||||
+++ b/browser/base/content/browser.xhtml
|
||||
@@ -26,6 +26,7 @@
|
||||
@@ -10,35 +10,28 @@ index 0d0a559a6473149b50f4bf18d059e86907c4acd3..25ad798eb26f04262d069fdaf1f3fb00
|
||||
persist="screenX screenY width height sizemode"
|
||||
data-l10n-sync="true">
|
||||
<head>
|
||||
@@ -104,6 +105,8 @@
|
||||
@@ -104,8 +105,11 @@
|
||||
|
||||
<title data-l10n-id="browser-main-window-default-title"></title>
|
||||
|
||||
+#include zen-preloaded.inc.xhtml
|
||||
+
|
||||
# All JS files which are needed by browser.xhtml and other top level windows to
|
||||
# support MacOS specific features *must* go into the global-scripts.inc file so
|
||||
# that they can be shared with macWindow.inc.xhtml.
|
||||
@@ -148,6 +151,7 @@
|
||||
window.addEventListener("DOMContentLoaded",
|
||||
gBrowserInit.onDOMContentLoaded.bind(gBrowserInit), { once: true });
|
||||
</script>
|
||||
<script src="chrome://browser/content/global-scripts.js"></script>
|
||||
<script src="chrome://browser/content/browser-main.js"></script>
|
||||
+#include zen-assets.inc.xhtml
|
||||
</head>
|
||||
<html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
# All sets except for popupsets (commands, keys, and stringbundles)
|
||||
@@ -169,9 +173,11 @@
|
||||
@@ -127,9 +131,12 @@
|
||||
</vbox>
|
||||
</html:template>
|
||||
|
||||
-#include navigator-toolbox.inc.xhtml
|
||||
-
|
||||
-#include browser-box.inc.xhtml
|
||||
+ <hbox id="zen-main-app-wrapper" flex="1" persist="zen-compact-mode">
|
||||
+ <vbox id="zen-toast-container"></vbox>
|
||||
+ #include navigator-toolbox.inc.xhtml
|
||||
+ #include browser-box.inc.xhtml
|
||||
+ </hbox>
|
||||
+<hbox id="zen-main-app-wrapper" flex="1" persist="zen-compact-mode">
|
||||
+ <vbox id="zen-toast-container"></vbox>
|
||||
#include navigator-toolbox.inc.xhtml
|
||||
|
||||
#include browser-box.inc.xhtml
|
||||
+</hbox>
|
||||
|
||||
<html:template id="customizationPanel">
|
||||
<box id="customization-container" flex="1" hidden="true"><![CDATA[
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
index feb9e4ef7e872b4cfbf0d55f24a34db275951c66..3ce9b9919ff736885b8aa8943bbbce3c5d0f33a6 100644
|
||||
index 00c8976d3e258c0875d7da2f3ec823d8907a84c9..b5735712aaa7c2ae2baa4b858e735413b130ca94 100644
|
||||
--- a/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||
@@ -2,7 +2,7 @@
|
||||
@@ -11,46 +11,29 @@ index feb9e4ef7e872b4cfbf0d55f24a34db275951c66..3ce9b9919ff736885b8aa8943bbbce3c
|
||||
<script src="chrome://browser/content/navigator-toolbox.js" />
|
||||
|
||||
<!-- Menu -->
|
||||
@@ -17,9 +17,8 @@
|
||||
@@ -17,9 +17,9 @@
|
||||
#include browser-menubar.inc
|
||||
</toolbaritem>
|
||||
<spacer flex="1" skipintoolbarset="true" style="order: 1000;"/>
|
||||
-#include titlebar-items.inc.xhtml
|
||||
</toolbar>
|
||||
-
|
||||
|
||||
+<hbox id="titlebar">
|
||||
<toolbar id="TabsToolbar"
|
||||
class="browser-toolbar browser-titlebar"
|
||||
fullscreentoolbar="true"
|
||||
@@ -32,7 +31,7 @@
|
||||
|
||||
<hbox class="titlebar-spacer" type="pre-tabs"/>
|
||||
|
||||
- <hbox flex="1" align="end" class="toolbar-items">
|
||||
+ <hbox flex="1" align="start" class="toolbar-items">
|
||||
<toolbartabstop/>
|
||||
<hbox id="TabsToolbar-customization-target" flex="1">
|
||||
<toolbarbutton id="firefox-view-button"
|
||||
@@ -40,6 +39,7 @@
|
||||
data-l10n-id="toolbar-button-firefox-view-2"
|
||||
role="button"
|
||||
aria-pressed="false"
|
||||
+ hidden="true"
|
||||
cui-areatype="toolbar"
|
||||
removable="true"/>
|
||||
|
||||
@@ -50,6 +50,10 @@
|
||||
tooltip="tabbrowser-tab-tooltip"
|
||||
orient="horizontal"
|
||||
stopwatchid="FX_TAB_CLICK_MS">
|
||||
+<html:div id="zen-essentials-container" skipintoolbarset="true"></html:div>
|
||||
stopwatchid="tabClick">
|
||||
+<html:div id="zen-essentials-wrapper" skipintoolbarset="true"></html:div>
|
||||
+<hbox id="zen-current-workspace-indicator-container"></hbox>
|
||||
+<html:div id="zen-tabs-wrapper">
|
||||
+<html:div id="zen-browser-tabs-container">
|
||||
<hbox class="tab-drop-indicator" hidden="true"/>
|
||||
<html:span id="tab-drag-empty-feedback" role="presentation"/>
|
||||
# If the name (tabbrowser-arrowscrollbox) or structure of this changes
|
||||
# significantly, there is an optimization in
|
||||
@@ -75,6 +79,8 @@
|
||||
@@ -76,6 +80,8 @@
|
||||
tooltip="dynamic-shortcut-tooltip"
|
||||
data-l10n-id="tabs-toolbar-new-tab"/>
|
||||
<html:span id="tabbrowser-tab-a11y-desc" hidden="true"/>
|
||||
@@ -59,7 +42,7 @@ index feb9e4ef7e872b4cfbf0d55f24a34db275951c66..3ce9b9919ff736885b8aa8943bbbce3c
|
||||
</tabs>
|
||||
|
||||
<toolbarbutton id="new-tab-button"
|
||||
@@ -100,10 +106,10 @@
|
||||
@@ -101,9 +107,10 @@
|
||||
#include private-browsing-indicator.inc.xhtml
|
||||
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>
|
||||
|
||||
@@ -67,20 +50,7 @@ index feb9e4ef7e872b4cfbf0d55f24a34db275951c66..3ce9b9919ff736885b8aa8943bbbce3c
|
||||
+#include zen-sidebar-icons.inc.xhtml
|
||||
|
||||
</toolbar>
|
||||
-
|
||||
+</hbox>
|
||||
|
||||
<toolbar id="nav-bar"
|
||||
class="browser-toolbar chromeclass-location"
|
||||
data-l10n-id="navbar-accessible"
|
||||
@@ -489,10 +495,10 @@
|
||||
consumeanchor="PanelUI-button"
|
||||
data-l10n-id="appmenu-menu-button-closed2"/>
|
||||
</toolbaritem>
|
||||
+#include titlebar-items.inc.xhtml
|
||||
<hbox class="titlebar-spacer" type="post-tabs"/>
|
||||
#include private-browsing-indicator.inc.xhtml
|
||||
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>
|
||||
-#include titlebar-items.inc.xhtml
|
||||
</toolbar>
|
||||
|
||||
<toolbar id="PersonalToolbar"
|
||||
|
||||
@@ -53,7 +53,6 @@
|
||||
content/browser/zen-components/ZenPinnedTabManager.mjs (../../zen/tabs/ZenPinnedTabManager.mjs)
|
||||
content/browser/zen-styles/zen-tabs.css (../../zen/tabs/zen-tabs.css)
|
||||
* content/browser/zen-styles/zen-tabs/vertical-tabs.css (../../zen/tabs/zen-tabs/vertical-tabs.css)
|
||||
content/browser/zen-styles/zen-tabs/horizontal-tabs.css (../../zen/tabs/zen-tabs/horizontal-tabs.css)
|
||||
|
||||
content/browser/zen-components/ZenGlanceManager.mjs (../../zen/glance/ZenGlanceManager.mjs)
|
||||
content/browser/zen-styles/zen-glance.css (../../zen/glance/zen-glance.css)
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs
|
||||
index b8b6d30f0b3c968a8615ca601e06e50261d0dae6..5c2b718b902aed2ef8d7a4b622ba882ee937c655 100644
|
||||
index a6a7f9165aece774c3f1c15f7e352b11a4bf90f4..a4b6124b85f099c6f12d297fc26f2040370c337c 100644
|
||||
--- a/browser/components/BrowserGlue.sys.mjs
|
||||
+++ b/browser/components/BrowserGlue.sys.mjs
|
||||
@@ -106,6 +106,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||
WindowsGPOParser: "resource://gre/modules/policies/WindowsGPOParser.sys.mjs",
|
||||
clearTimeout: "resource://gre/modules/Timer.sys.mjs",
|
||||
setTimeout: "resource://gre/modules/Timer.sys.mjs",
|
||||
+ gZenUIMigration: "chrome://browser/content/zen-components/ZenUIMigration.mjs",
|
||||
});
|
||||
@@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
|
||||
const lazy = {};
|
||||
|
||||
XPCOMUtils.defineLazyServiceGetters(lazy, {
|
||||
@@ -1896,7 +1897,7 @@ BrowserGlue.prototype = {
|
||||
lazy.TabCrashHandler.init();
|
||||
ChromeUtils.defineESModuleGetters(lazy, {
|
||||
+ gZenUIMigration: "chrome://browser/content/zen-components/ZenUIMigration.mjs",
|
||||
AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs",
|
||||
AboutNewTab: "resource:///modules/AboutNewTab.sys.mjs",
|
||||
AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs",
|
||||
@@ -1886,6 +1887,7 @@ BrowserGlue.prototype = {
|
||||
|
||||
lazy.ProcessHangMonitor.init();
|
||||
-
|
||||
|
||||
+ lazy.gZenUIMigration.init(this._isNewProfile, aWindow);
|
||||
// A channel for "remote troubleshooting" code...
|
||||
let channel = new lazy.WebChannel(
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||
index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..1c5b80678fc3a4d17b0632a765b8182d88986bcc 100644
|
||||
index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371e57d0db5 100644
|
||||
--- a/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||
@@ -13,6 +13,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||
@@ -19,7 +19,7 @@ index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..1c5b80678fc3a4d17b0632a765b8182d
|
||||
|
||||
const kSpecialWidgetPfx = "customizableui-special-";
|
||||
|
||||
@@ -317,13 +318,11 @@ var CustomizableUIInternal = {
|
||||
@@ -338,13 +339,11 @@ var CustomizableUIInternal = {
|
||||
"vertical-spacer",
|
||||
"urlbar-container",
|
||||
"spring",
|
||||
@@ -35,7 +35,7 @@ index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..1c5b80678fc3a4d17b0632a765b8182d
|
||||
this.registerArea(
|
||||
CustomizableUI.AREA_NAVBAR,
|
||||
{
|
||||
@@ -331,7 +330,6 @@ var CustomizableUIInternal = {
|
||||
@@ -352,7 +351,6 @@ var CustomizableUIInternal = {
|
||||
overflowable: true,
|
||||
defaultPlacements: navbarPlacements,
|
||||
verticalTabsDefaultPlacements: [
|
||||
@@ -43,7 +43,7 @@ index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..1c5b80678fc3a4d17b0632a765b8182d
|
||||
"alltabs-button",
|
||||
],
|
||||
defaultCollapsed: false,
|
||||
@@ -356,10 +354,7 @@ var CustomizableUIInternal = {
|
||||
@@ -377,10 +375,7 @@ var CustomizableUIInternal = {
|
||||
{
|
||||
type: CustomizableUI.TYPE_TOOLBAR,
|
||||
defaultPlacements: [
|
||||
@@ -54,7 +54,7 @@ index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..1c5b80678fc3a4d17b0632a765b8182d
|
||||
],
|
||||
verticalTabsDefaultPlacements: [],
|
||||
defaultCollapsed: null,
|
||||
@@ -422,6 +417,7 @@ var CustomizableUIInternal = {
|
||||
@@ -462,6 +457,7 @@ var CustomizableUIInternal = {
|
||||
CustomizableUI.AREA_NAVBAR,
|
||||
CustomizableUI.AREA_BOOKMARKS,
|
||||
CustomizableUI.AREA_TABSTRIP,
|
||||
@@ -62,7 +62,7 @@ index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..1c5b80678fc3a4d17b0632a765b8182d
|
||||
]);
|
||||
if (AppConstants.platform != "macosx") {
|
||||
toolbars.add(CustomizableUI.AREA_MENUBAR);
|
||||
@@ -1151,6 +1147,9 @@ var CustomizableUIInternal = {
|
||||
@@ -1262,6 +1258,9 @@ var CustomizableUIInternal = {
|
||||
placements = gPlacements.get(area);
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..1c5b80678fc3a4d17b0632a765b8182d
|
||||
// For toolbars that need it, mark as dirty.
|
||||
let defaultPlacements = areaProperties.get("defaultPlacements");
|
||||
if (
|
||||
@@ -1564,7 +1563,7 @@ var CustomizableUIInternal = {
|
||||
@@ -1769,7 +1768,7 @@ var CustomizableUIInternal = {
|
||||
lazy.log.info(
|
||||
"Widget " + aWidgetId + " not found, unable to remove from " + aArea
|
||||
);
|
||||
@@ -81,7 +81,7 @@ index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..1c5b80678fc3a4d17b0632a765b8182d
|
||||
}
|
||||
|
||||
this.notifyDOMChange(widgetNode, null, container, true, () => {
|
||||
@@ -1574,7 +1573,7 @@ var CustomizableUIInternal = {
|
||||
@@ -1779,7 +1778,7 @@ var CustomizableUIInternal = {
|
||||
// We also need to remove the panel context menu if it's there:
|
||||
this.ensureButtonContextMenu(widgetNode);
|
||||
if (gPalette.has(aWidgetId) || this.isSpecialWidget(aWidgetId)) {
|
||||
@@ -90,7 +90,7 @@ index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..1c5b80678fc3a4d17b0632a765b8182d
|
||||
} else {
|
||||
window.gNavToolbox.palette.appendChild(widgetNode);
|
||||
}
|
||||
@@ -1704,16 +1703,16 @@ var CustomizableUIInternal = {
|
||||
@@ -1947,16 +1946,16 @@ var CustomizableUIInternal = {
|
||||
elem.setAttribute("skipintoolbarset", "true");
|
||||
}
|
||||
}
|
||||
@@ -110,18 +110,18 @@ index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..1c5b80678fc3a4d17b0632a765b8182d
|
||||
// Handle initial state of vertical tabs.
|
||||
if (isVerticalTabs) {
|
||||
// Show the vertical tabs toolbar
|
||||
@@ -1873,6 +1872,10 @@ var CustomizableUIInternal = {
|
||||
},
|
||||
|
||||
insertWidgetBefore(aNode, aNextNode, aContainer, aArea) {
|
||||
+ if (aArea === CustomizableUI.AREA_NAVBAR && aNode.ownerGlobal.gZenVerticalTabsManager._hasSetSingleToolbar) {
|
||||
@@ -2198,6 +2197,10 @@ var CustomizableUIInternal = {
|
||||
* The identifier string of the area that aNode is being inserted into.
|
||||
*/
|
||||
insertWidgetBefore(aNode, aNextNode, aContainer, aAreaId) {
|
||||
+ if (aAreaId === CustomizableUI.AREA_NAVBAR && aNode.ownerGlobal.gZenVerticalTabsManager._hasSetSingleToolbar) {
|
||||
+ aContainer = aNode.ownerDocument.getElementById("zen-sidebar-top-buttons-customization-target");
|
||||
+ aArea = "zen-sidebar-top-buttons";
|
||||
+ aAreaId = "zen-sidebar-top-buttons";
|
||||
+ }
|
||||
this.notifyDOMChange(aNode, aNextNode, aContainer, false, () => {
|
||||
this.setLocationAttributes(aNode, aArea);
|
||||
this.setLocationAttributes(aNode, aAreaId);
|
||||
aContainer.insertBefore(aNode, aNextNode);
|
||||
@@ -2744,7 +2747,6 @@ var CustomizableUIInternal = {
|
||||
@@ -3321,7 +3324,6 @@ var CustomizableUIInternal = {
|
||||
if (!this.isWidgetRemovable(aWidgetId)) {
|
||||
return;
|
||||
}
|
||||
@@ -129,16 +129,16 @@ index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..1c5b80678fc3a4d17b0632a765b8182d
|
||||
let placements = gPlacements.get(oldPlacement.area);
|
||||
let position = placements.indexOf(aWidgetId);
|
||||
if (position != -1) {
|
||||
@@ -3735,7 +3737,7 @@ var CustomizableUIInternal = {
|
||||
}
|
||||
},
|
||||
|
||||
@@ -4556,7 +4558,7 @@ var CustomizableUIInternal = {
|
||||
* For all registered areas, builds those areas to reflect the current
|
||||
* placement state of all widgets.
|
||||
*/
|
||||
- _rebuildRegisteredAreas() {
|
||||
+ _rebuildRegisteredAreas(zenDontRebuildCollapsed = false) {
|
||||
for (let [areaId, areaNodes] of gBuildAreas) {
|
||||
let placements = gPlacements.get(areaId);
|
||||
let isFirstChangedToolbar = true;
|
||||
@@ -3746,7 +3748,7 @@ var CustomizableUIInternal = {
|
||||
@@ -4567,7 +4569,7 @@ var CustomizableUIInternal = {
|
||||
if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) {
|
||||
let defaultCollapsed = area.get("defaultCollapsed");
|
||||
let win = areaNode.ownerGlobal;
|
||||
@@ -147,7 +147,7 @@ index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..1c5b80678fc3a4d17b0632a765b8182d
|
||||
win.setToolbarVisibility(
|
||||
areaNode,
|
||||
typeof defaultCollapsed == "string"
|
||||
@@ -4923,6 +4925,7 @@ export var CustomizableUI = {
|
||||
@@ -5858,6 +5860,7 @@ export var CustomizableUI = {
|
||||
unregisterArea(aName, aDestroyPlacements) {
|
||||
CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements);
|
||||
},
|
||||
@@ -155,7 +155,7 @@ index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..1c5b80678fc3a4d17b0632a765b8182d
|
||||
/**
|
||||
* Add a widget to an area.
|
||||
* If the area to which you try to add is not known to CustomizableUI,
|
||||
@@ -6916,11 +6919,11 @@ class OverflowableToolbar {
|
||||
@@ -7905,11 +7908,11 @@ class OverflowableToolbar {
|
||||
parseFloat(style.paddingLeft) -
|
||||
parseFloat(style.paddingRight) -
|
||||
toolbarChildrenWidth;
|
||||
@@ -169,7 +169,7 @@ index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..1c5b80678fc3a4d17b0632a765b8182d
|
||||
});
|
||||
|
||||
lazy.log.debug(
|
||||
@@ -6930,7 +6933,8 @@ class OverflowableToolbar {
|
||||
@@ -7919,7 +7922,8 @@ class OverflowableToolbar {
|
||||
// If the target has min-width: 0, their children might actually overflow
|
||||
// it, so check for both cases explicitly.
|
||||
let targetContentWidth = Math.max(targetWidth, targetChildrenWidth);
|
||||
@@ -179,7 +179,7 @@ index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..1c5b80678fc3a4d17b0632a765b8182d
|
||||
return { isOverflowing, targetContentWidth, totalAvailWidth };
|
||||
}
|
||||
|
||||
@@ -7024,7 +7028,7 @@ class OverflowableToolbar {
|
||||
@@ -8013,7 +8017,7 @@ class OverflowableToolbar {
|
||||
}
|
||||
}
|
||||
if (!inserted) {
|
||||
@@ -188,7 +188,7 @@ index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..1c5b80678fc3a4d17b0632a765b8182d
|
||||
}
|
||||
child.removeAttribute("cui-anchorid");
|
||||
child.removeAttribute("overflowedItem");
|
||||
@@ -7369,7 +7373,7 @@ class OverflowableToolbar {
|
||||
@@ -8358,7 +8362,7 @@ class OverflowableToolbar {
|
||||
break;
|
||||
}
|
||||
case "mousedown": {
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
diff --git a/browser/components/customizableui/CustomizeMode.sys.mjs b/browser/components/customizableui/CustomizeMode.sys.mjs
|
||||
index c9bdc165ff9afc8c3e43ed2cda0612b32a55450f..34f8af56753e2a898f49247036d47973c70543a9 100644
|
||||
index 619bb2af5a3a0995fc93fa040696dd2854848ab5..bbc6bad906e9ccaf668ca99f4a0411f564ef1e56 100644
|
||||
--- a/browser/components/customizableui/CustomizeMode.sys.mjs
|
||||
+++ b/browser/components/customizableui/CustomizeMode.sys.mjs
|
||||
@@ -357,7 +357,7 @@ CustomizeMode.prototype = {
|
||||
this._transitioning = true;
|
||||
@@ -500,7 +500,7 @@ export class CustomizeMode {
|
||||
this.#transitioning = true;
|
||||
|
||||
let customizer = document.getElementById("customization-container");
|
||||
- let browser = document.getElementById("browser");
|
||||
@@ -11,7 +11,7 @@ index c9bdc165ff9afc8c3e43ed2cda0612b32a55450f..34f8af56753e2a898f49247036d47973
|
||||
browser.hidden = true;
|
||||
customizer.hidden = false;
|
||||
|
||||
@@ -488,7 +488,7 @@ CustomizeMode.prototype = {
|
||||
@@ -637,7 +637,7 @@ export class CustomizeMode {
|
||||
}
|
||||
|
||||
let customizer = document.getElementById("customization-container");
|
||||
@@ -20,9 +20,9 @@ index c9bdc165ff9afc8c3e43ed2cda0612b32a55450f..34f8af56753e2a898f49247036d47973
|
||||
customizer.hidden = true;
|
||||
browser.hidden = false;
|
||||
|
||||
@@ -2397,6 +2397,20 @@ CustomizeMode.prototype = {
|
||||
@@ -3125,6 +3125,20 @@ export class CustomizeMode {
|
||||
if (makeSpaceImmediately) {
|
||||
aItem.setAttribute("notransition", "true");
|
||||
aDraggedOverItem.setAttribute("notransition", "true");
|
||||
}
|
||||
+ if (aItem.parentElement.id === "TabsToolbar-customization-target") {
|
||||
+ // We change the border values so we can properly implement the native vertical tabs
|
||||
@@ -38,6 +38,6 @@ index c9bdc165ff9afc8c3e43ed2cda0612b32a55450f..34f8af56753e2a898f49247036d47973
|
||||
+ aItem.style.borderBottomStyle = "solid";
|
||||
+ }
|
||||
+ }
|
||||
aItem.style[prop] = borderWidth + "px";
|
||||
aItem.style.removeProperty(otherProp);
|
||||
aDraggedOverItem.style[prop] = borderWidth + "px";
|
||||
aDraggedOverItem.style.removeProperty(otherProp);
|
||||
if (makeSpaceImmediately) {
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn
|
||||
index 3b60d18e483bc3c4e9b4309f0dc1e4231b7116b1..e5b679b25941a7f1ed52db9fa3f7740a7220b9e4 100644
|
||||
index 118709048e7de13f6ac10d0047e446b72303428f..c8cc2d7ee551b96be668a7844dab1db5abc9d684 100644
|
||||
--- a/browser/components/preferences/jar.mn
|
||||
+++ b/browser/components/preferences/jar.mn
|
||||
@@ -23,3 +23,5 @@ browser.jar:
|
||||
content/browser/preferences/more-from-mozilla-qr-code-simple-cn.svg
|
||||
content/browser/preferences/web-appearance-dark.svg
|
||||
content/browser/preferences/web-appearance-light.svg
|
||||
@@ -26,3 +26,5 @@ browser.jar:
|
||||
content/browser/preferences/widgets/setting-control.mjs (widgets/setting-control/setting-control.mjs)
|
||||
content/browser/preferences/widgets/setting-group.mjs (widgets/setting-group/setting-group.mjs)
|
||||
content/browser/preferences/widgets/setting-group.css (widgets/setting-group/setting-group.css)
|
||||
+
|
||||
+ content/browser/preferences/zen-settings.js
|
||||
|
||||
@@ -1,30 +1,29 @@
|
||||
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
|
||||
index 951af951598c3edc9bc431dd106e68d006ec4316..eb420d6c5ea346639eee531805aabbe7726c7769 100644
|
||||
index 43be2b6ac84827bd13723e0211a3ade401934591..513584d7e720451efdb87350ac07d8b2590c1705 100644
|
||||
--- a/browser/components/preferences/preferences.xhtml
|
||||
+++ b/browser/components/preferences/preferences.xhtml
|
||||
@@ -43,6 +43,8 @@
|
||||
/>
|
||||
@@ -44,6 +44,8 @@
|
||||
<link rel="stylesheet" href="chrome://browser/skin/preferences/privacy.css" />
|
||||
<link rel="stylesheet" href="chrome://browser/content/preferences/widgets/setting-group.css" />
|
||||
|
||||
+#include zen-preferences-links.xhtml
|
||||
+
|
||||
<link rel="localization" href="branding/brand.ftl"/>
|
||||
<link rel="localization" href="browser/browser.ftl"/>
|
||||
<!-- Used by fontbuilder.js -->
|
||||
@@ -98,6 +100,12 @@
|
||||
@@ -105,6 +107,11 @@
|
||||
<hbox flex="1">
|
||||
|
||||
<vbox class="navigation">
|
||||
+ <search-textbox
|
||||
+ id="searchInput"
|
||||
+ data-l10n-id="search-input-box2"
|
||||
+ data-l10n-attrs="placeholder, style"
|
||||
+ />
|
||||
+
|
||||
+ id="searchInput"
|
||||
+ data-l10n-id="search-input-box2"
|
||||
+ data-l10n-attrs="placeholder, style"
|
||||
+ />
|
||||
<!-- category list -->
|
||||
<richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label">
|
||||
<richlistitem id="category-general"
|
||||
@@ -111,6 +119,50 @@
|
||||
@@ -117,6 +124,50 @@
|
||||
<label class="category-name" flex="1" data-l10n-id="pane-general-title"></label>
|
||||
</richlistitem>
|
||||
|
||||
@@ -75,21 +74,19 @@ index 951af951598c3edc9bc431dd106e68d006ec4316..eb420d6c5ea346639eee531805aabbe7
|
||||
<richlistitem id="category-home"
|
||||
class="category"
|
||||
value="paneHome"
|
||||
@@ -229,11 +281,13 @@
|
||||
@@ -228,11 +279,6 @@
|
||||
<html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/>
|
||||
</hbox>
|
||||
</hbox>
|
||||
+#if 0
|
||||
<search-textbox
|
||||
id="searchInput"
|
||||
data-l10n-id="search-input-box2"
|
||||
data-l10n-attrs="placeholder, style"
|
||||
/>
|
||||
+#endif
|
||||
- <search-textbox
|
||||
- id="searchInput"
|
||||
- data-l10n-id="search-input-box2"
|
||||
- data-l10n-attrs="placeholder, style"
|
||||
- />
|
||||
</hbox>
|
||||
</hbox>
|
||||
<vbox id="mainPrefPane">
|
||||
@@ -247,6 +301,10 @@
|
||||
@@ -246,6 +292,10 @@
|
||||
#include sync.inc.xhtml
|
||||
#include experimental.inc.xhtml
|
||||
#include moreFromMozilla.inc.xhtml
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js
|
||||
index 371190c058fa1eed91dc91b58608c934100e3a1b..440fe6fb403c3e78b3bfe68fb747d000b4a27521 100644
|
||||
index 178c05099b671c4ec8d4c225955e65cff73824e2..6abb0ee2d4be94f997ee8d4bc755a393d9759099 100644
|
||||
--- a/browser/components/sidebar/browser-sidebar.js
|
||||
+++ b/browser/components/sidebar/browser-sidebar.js
|
||||
@@ -718,7 +718,7 @@ var SidebarController = {
|
||||
}
|
||||
});
|
||||
} else {
|
||||
- let browser = document.getElementById("browser");
|
||||
+ let browser = document.getElementById("tabbrowser-tabbox");
|
||||
[...browser.children].forEach((node, i) => {
|
||||
node.style.order = i + 1;
|
||||
});
|
||||
@@ -729,7 +729,7 @@ var SidebarController = {
|
||||
setPosition() {
|
||||
// First reset all ordinals to match DOM ordering.
|
||||
let contentArea = document.getElementById("tabbrowser-tabbox");
|
||||
- let browser = document.getElementById("browser");
|
||||
+ let browser = document.getElementById("tabbrowser-tabbox");
|
||||
[...browser.children].forEach((node, i) => {
|
||||
node.style.order = i + 1;
|
||||
});
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js
|
||||
index fc3a9730b394341843cfa9f559a792acb34c7d29..18d5fdb6e3368e21c68269c48cf22ac96fd868da 100644
|
||||
index dc92771ebc65095dfebbddc238ee6d4fffd897bf..ae9120f7cc8989cf625ac101d053d82582e32009 100644
|
||||
--- a/browser/components/tabbrowser/content/tab.js
|
||||
+++ b/browser/components/tabbrowser/content/tab.js
|
||||
@@ -16,6 +16,7 @@
|
||||
@@ -21,6 +21,7 @@
|
||||
<hbox class="tab-group-line"/>
|
||||
</vbox>
|
||||
<hbox class="tab-content" align="center">
|
||||
@@ -10,7 +10,7 @@ index fc3a9730b394341843cfa9f559a792acb34c7d29..18d5fdb6e3368e21c68269c48cf22ac9
|
||||
<stack class="tab-icon-stack">
|
||||
<hbox class="tab-throbber"/>
|
||||
<hbox class="tab-icon-pending"/>
|
||||
@@ -32,8 +33,10 @@
|
||||
@@ -37,8 +38,10 @@
|
||||
<hbox class="tab-secondary-label">
|
||||
<label class="tab-icon-sound-label tab-icon-sound-pip-label" data-l10n-id="browser-tab-audio-pip" role="presentation"/>
|
||||
</hbox>
|
||||
@@ -21,7 +21,7 @@ index fc3a9730b394341843cfa9f559a792acb34c7d29..18d5fdb6e3368e21c68269c48cf22ac9
|
||||
</hbox>
|
||||
</stack>
|
||||
`;
|
||||
@@ -167,7 +170,7 @@
|
||||
@@ -175,7 +178,7 @@
|
||||
}
|
||||
|
||||
set _visuallySelected(val) {
|
||||
@@ -30,7 +30,7 @@ index fc3a9730b394341843cfa9f559a792acb34c7d29..18d5fdb6e3368e21c68269c48cf22ac9
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -203,7 +206,7 @@
|
||||
@@ -211,7 +214,7 @@
|
||||
}
|
||||
|
||||
get visible() {
|
||||
@@ -39,7 +39,7 @@ index fc3a9730b394341843cfa9f559a792acb34c7d29..18d5fdb6e3368e21c68269c48cf22ac9
|
||||
}
|
||||
|
||||
get hidden() {
|
||||
@@ -274,7 +277,7 @@
|
||||
@@ -282,7 +285,7 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ index fc3a9730b394341843cfa9f559a792acb34c7d29..18d5fdb6e3368e21c68269c48cf22ac9
|
||||
}
|
||||
|
||||
get lastAccessed() {
|
||||
@@ -446,6 +449,8 @@
|
||||
@@ -454,6 +457,8 @@
|
||||
this.style.MozUserFocus = "ignore";
|
||||
} else if (
|
||||
event.target.classList.contains("tab-close-button") ||
|
||||
@@ -57,15 +57,15 @@ index fc3a9730b394341843cfa9f559a792acb34c7d29..18d5fdb6e3368e21c68269c48cf22ac9
|
||||
event.target.classList.contains("tab-icon-overlay") ||
|
||||
event.target.classList.contains("tab-audio-button")
|
||||
) {
|
||||
@@ -544,6 +549,7 @@
|
||||
if (this.multiselected) {
|
||||
gBrowser.removeMultiSelectedTabs();
|
||||
@@ -554,6 +559,7 @@
|
||||
telemetrySource: lazy.TabMetrics.METRIC_SOURCE.TAB_STRIP,
|
||||
});
|
||||
} else {
|
||||
+ gZenPinnedTabManager._removePinnedAttributes(this, true);
|
||||
gBrowser.removeTab(this, {
|
||||
animate: true,
|
||||
triggeringEvent: event,
|
||||
@@ -553,6 +559,14 @@
|
||||
@@ -564,6 +570,14 @@
|
||||
// (see tabbrowser-tabs 'click' handler).
|
||||
gBrowser.tabContainer._blockDblClick = true;
|
||||
}
|
||||
@@ -80,7 +80,7 @@ index fc3a9730b394341843cfa9f559a792acb34c7d29..18d5fdb6e3368e21c68269c48cf22ac9
|
||||
}
|
||||
|
||||
on_dblclick(event) {
|
||||
@@ -576,6 +590,8 @@
|
||||
@@ -587,6 +601,8 @@
|
||||
animate: true,
|
||||
triggeringEvent: event,
|
||||
});
|
||||
|
||||
@@ -1,22 +1,13 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69f8d324d1 100644
|
||||
index bfba253af3253a8cf547a5d69a1695651fc5c203..d4c7c37e06dc74cf0de3a10e6682f26ada76767d 100644
|
||||
--- a/browser/components/tabbrowser/content/tabbrowser.js
|
||||
+++ b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
@@ -424,11 +424,67 @@
|
||||
@@ -415,11 +415,58 @@
|
||||
return this.tabContainer.visibleTabs;
|
||||
}
|
||||
|
||||
+ get _numVisiblePinTabs() {
|
||||
+ let i = 0;
|
||||
+ for (let tab of this.tabs) {
|
||||
+ if (!tab.pinned && !tab.hasAttribute("zen-glance-tab")) {
|
||||
+ break;
|
||||
+ }
|
||||
+ if (!tab.hidden) {
|
||||
+ i += !tab.hasAttribute("zen-glance-tab");
|
||||
+ }
|
||||
+ }
|
||||
+ return i;
|
||||
+ zenInsertTabAtIndex(...args) {
|
||||
+ return this.#insertTabAtElementIndex(...args);
|
||||
+ }
|
||||
+
|
||||
+ get _numVisiblePinTabsWithoutCollapsed() {
|
||||
@@ -72,7 +63,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
}
|
||||
return i;
|
||||
}
|
||||
@@ -558,6 +614,7 @@
|
||||
@@ -549,6 +596,7 @@
|
||||
this.tabpanels.appendChild(panel);
|
||||
|
||||
let tab = this.tabs[0];
|
||||
@@ -80,7 +71,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
tab.linkedPanel = uniqueId;
|
||||
this._selectedTab = tab;
|
||||
this._selectedBrowser = browser;
|
||||
@@ -823,11 +880,13 @@
|
||||
@@ -814,11 +862,13 @@
|
||||
}
|
||||
|
||||
this.showTab(aTab);
|
||||
@@ -90,14 +81,14 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
+ if (this.tabContainer.verticalMode && !handled) {
|
||||
this.#handleTabMove(aTab, () =>
|
||||
- this.verticalPinnedTabsContainer.appendChild(aTab)
|
||||
+ aTab.hasAttribute("zen-essential") ? document.getElementById("zen-essentials-container").appendChild(aTab) : this.verticalPinnedTabsContainer.insertBefore(aTab, this.verticalPinnedTabsContainer.lastChild)
|
||||
+ aTab.hasAttribute("zen-essential") ? ZenWorkspaces.getEssentialsSection(aTab).appendChild(aTab) : this.verticalPinnedTabsContainer.insertBefore(aTab, this.verticalPinnedTabsContainer.lastChild)
|
||||
);
|
||||
- } else {
|
||||
+ } else if (!handled) {
|
||||
this.moveTabTo(aTab, this.pinnedTabCount, { forceStandaloneTab: true });
|
||||
}
|
||||
aTab.setAttribute("pinned", "true");
|
||||
@@ -841,12 +900,15 @@
|
||||
this.moveTabTo(aTab, {
|
||||
tabIndex: this.pinnedTabCount,
|
||||
forceUngrouped: true,
|
||||
@@ -835,12 +885,15 @@
|
||||
}
|
||||
|
||||
if (this.tabContainer.verticalMode) {
|
||||
@@ -113,8 +104,8 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
+ }
|
||||
});
|
||||
} else {
|
||||
this.moveTabTo(aTab, this.pinnedTabCount - 1, {
|
||||
@@ -1029,6 +1091,8 @@
|
||||
this.moveTabTo(aTab, {
|
||||
@@ -1024,6 +1077,8 @@
|
||||
|
||||
let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"];
|
||||
|
||||
@@ -123,7 +114,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
if (
|
||||
aIconURL &&
|
||||
!aLoadingPrincipal &&
|
||||
@@ -1039,6 +1103,9 @@
|
||||
@@ -1034,6 +1089,9 @@
|
||||
);
|
||||
return;
|
||||
}
|
||||
@@ -133,7 +124,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
|
||||
let browser = this.getBrowserForTab(aTab);
|
||||
browser.mIconURL = aIconURL;
|
||||
@@ -1287,6 +1354,7 @@
|
||||
@@ -1283,6 +1341,7 @@
|
||||
if (!this._previewMode) {
|
||||
newTab.recordTimeFromUnloadToReload();
|
||||
newTab.updateLastAccessed();
|
||||
@@ -141,7 +132,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
oldTab.updateLastAccessed();
|
||||
// if this is the foreground window, update the last-seen timestamps.
|
||||
if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) {
|
||||
@@ -1439,6 +1507,9 @@
|
||||
@@ -1435,6 +1494,9 @@
|
||||
}
|
||||
|
||||
let activeEl = document.activeElement;
|
||||
@@ -151,7 +142,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
// If focus is on the old tab, move it to the new tab.
|
||||
if (activeEl == oldTab) {
|
||||
newTab.focus();
|
||||
@@ -1762,7 +1833,8 @@
|
||||
@@ -1758,7 +1820,8 @@
|
||||
}
|
||||
|
||||
_setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL } = {}) {
|
||||
@@ -161,16 +152,16 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1865,7 +1937,7 @@
|
||||
@@ -1866,7 +1929,7 @@
|
||||
newIndex = this.selectedTab._tPos + 1;
|
||||
}
|
||||
|
||||
- if (replace) {
|
||||
+ if (replace && !(!targetTab && this.selectedTab?.hasAttribute('zen-empty-tab'))) {
|
||||
let browser;
|
||||
if (targetTab) {
|
||||
browser = this.getBrowserForTab(targetTab);
|
||||
@@ -2122,6 +2194,7 @@
|
||||
if (this.isTabGroupLabel(targetTab)) {
|
||||
throw new Error(
|
||||
"Replacing a tab group label with a tab is not supported"
|
||||
@@ -2130,6 +2193,7 @@
|
||||
uriIsAboutBlank,
|
||||
userContextId,
|
||||
skipLoad,
|
||||
@@ -178,7 +169,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
} = {}) {
|
||||
let b = document.createXULElement("browser");
|
||||
// Use the JSM global to create the permanentKey, so that if the
|
||||
@@ -2195,8 +2268,7 @@
|
||||
@@ -2203,8 +2267,7 @@
|
||||
// we use a different attribute name for this?
|
||||
b.setAttribute("name", name);
|
||||
}
|
||||
@@ -188,7 +179,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
b.setAttribute("transparent", "true");
|
||||
}
|
||||
|
||||
@@ -2373,7 +2445,7 @@
|
||||
@@ -2369,7 +2432,7 @@
|
||||
|
||||
let panel = this.getPanel(browser);
|
||||
let uniqueId = this._generateUniquePanelID();
|
||||
@@ -197,7 +188,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
aTab.linkedPanel = uniqueId;
|
||||
|
||||
// Inject the <browser> into the DOM if necessary.
|
||||
@@ -2432,8 +2504,8 @@
|
||||
@@ -2428,8 +2491,8 @@
|
||||
// If we transitioned from one browser to two browsers, we need to set
|
||||
// hasSiblings=false on both the existing browser and the new browser.
|
||||
if (this.tabs.length == 2) {
|
||||
@@ -208,7 +199,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
} else {
|
||||
aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1;
|
||||
}
|
||||
@@ -2655,6 +2727,7 @@
|
||||
@@ -2657,6 +2720,7 @@
|
||||
schemelessInput,
|
||||
hasValidUserGestureActivation = false,
|
||||
textDirectiveUserActivation = false,
|
||||
@@ -216,7 +207,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
} = {}
|
||||
) {
|
||||
// all callers of addTab that pass a params object need to pass
|
||||
@@ -2665,6 +2738,12 @@
|
||||
@@ -2667,6 +2731,12 @@
|
||||
);
|
||||
}
|
||||
|
||||
@@ -229,7 +220,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
if (!UserInteraction.running("browser.tabs.opening", window)) {
|
||||
UserInteraction.start("browser.tabs.opening", "initting", window);
|
||||
}
|
||||
@@ -2728,6 +2807,16 @@
|
||||
@@ -2730,6 +2800,16 @@
|
||||
noInitialLabel,
|
||||
skipBackgroundNotify,
|
||||
});
|
||||
@@ -244,9 +235,9 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
+ t.setAttribute("zen-empty-tab", "true");
|
||||
+ }
|
||||
if (insertTab) {
|
||||
// insert the tab into the tab container in the correct position
|
||||
this._insertTabAtIndex(t, {
|
||||
@@ -2752,6 +2841,7 @@
|
||||
if (typeof index == "number") {
|
||||
elementIndex = this.#tabIndexToElementIndex(index);
|
||||
@@ -2756,6 +2836,7 @@
|
||||
initialBrowsingContextGroupId,
|
||||
openWindowInfo,
|
||||
skipLoad,
|
||||
@@ -254,7 +245,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
}));
|
||||
|
||||
if (focusUrlBar) {
|
||||
@@ -2871,6 +2961,9 @@
|
||||
@@ -2875,6 +2956,9 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -264,7 +255,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
// Additionally send pinned tab events
|
||||
if (pinned) {
|
||||
this._notifyPinnedStatus(t);
|
||||
@@ -2891,12 +2984,15 @@
|
||||
@@ -2922,12 +3006,15 @@
|
||||
* @param {string} [label=]
|
||||
* @returns {MozTabbrowserTabGroup}
|
||||
*/
|
||||
@@ -281,15 +272,15 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
return group;
|
||||
}
|
||||
|
||||
@@ -2937,6 +3033,7 @@
|
||||
@@ -2970,6 +3057,7 @@
|
||||
insertBefore = null,
|
||||
isUserCreated = false,
|
||||
isUserTriggered = false,
|
||||
telemetryUserCreateSource = "unknown",
|
||||
+ forSplitView = false,
|
||||
} = {}
|
||||
) {
|
||||
if (!tabs?.length) {
|
||||
@@ -2951,7 +3048,12 @@
|
||||
@@ -2988,7 +3076,12 @@
|
||||
id = `${Date.now()}-${Math.round(Math.random() * 100)}`;
|
||||
}
|
||||
let group = this._createTabGroup(id, color, false, label);
|
||||
@@ -303,7 +294,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
group,
|
||||
insertBefore?.group ?? insertBefore
|
||||
);
|
||||
@@ -3268,6 +3370,7 @@
|
||||
@@ -3318,6 +3411,7 @@
|
||||
initialBrowsingContextGroupId,
|
||||
openWindowInfo,
|
||||
skipLoad,
|
||||
@@ -311,7 +302,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
}
|
||||
) {
|
||||
// If we don't have a preferred remote type, and we have a remote
|
||||
@@ -3331,6 +3434,7 @@
|
||||
@@ -3381,6 +3475,7 @@
|
||||
openWindowInfo,
|
||||
name,
|
||||
skipLoad,
|
||||
@@ -319,7 +310,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
});
|
||||
}
|
||||
|
||||
@@ -3509,6 +3613,27 @@
|
||||
@@ -3559,6 +3654,27 @@
|
||||
) {
|
||||
tabWasReused = true;
|
||||
tab = this.selectedTab;
|
||||
@@ -347,7 +338,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
if (!tabData.pinned) {
|
||||
this.unpinTab(tab);
|
||||
} else {
|
||||
@@ -3557,8 +3682,28 @@
|
||||
@@ -3607,8 +3723,28 @@
|
||||
skipLoad: true,
|
||||
preferredRemoteType,
|
||||
});
|
||||
@@ -378,18 +369,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
tabToSelect = tab;
|
||||
}
|
||||
}
|
||||
@@ -3570,8 +3715,8 @@
|
||||
// inserted in the DOM. If the tab is not yet in the DOM,
|
||||
// just insert it in the right place from the start.
|
||||
if (!tab.parentNode) {
|
||||
- tab._tPos = this.pinnedTabCount;
|
||||
- this.tabContainer.insertBefore(tab, this.tabs[this.pinnedTabCount]);
|
||||
+ tab._tPos = this._numVisiblePinTabs;
|
||||
+ this.tabContainer.insertBefore(tab, this.tabs[this._numVisiblePinTabs]);
|
||||
tab.toggleAttribute("pinned", true);
|
||||
this.tabContainer._invalidateCachedTabs();
|
||||
// Then ensure all the tab open/pinning information is sent.
|
||||
@@ -3581,7 +3726,8 @@
|
||||
@@ -3631,7 +3767,8 @@
|
||||
// needs calling:
|
||||
shouldUpdateForPinnedTabs = true;
|
||||
}
|
||||
@@ -399,7 +379,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
let { groupId } = tabData;
|
||||
const tabGroup = tabGroupWorkingData.get(groupId);
|
||||
// if a tab refers to a tab group we don't know, skip any group
|
||||
@@ -3595,7 +3741,10 @@
|
||||
@@ -3645,7 +3782,10 @@
|
||||
tabGroup.stateData.id,
|
||||
tabGroup.stateData.color,
|
||||
tabGroup.stateData.collapsed,
|
||||
@@ -411,17 +391,18 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
);
|
||||
tabsFragment.appendChild(tabGroup.node);
|
||||
}
|
||||
@@ -3646,6 +3795,9 @@
|
||||
@@ -3696,6 +3836,10 @@
|
||||
this.selectedTab = tabToSelect;
|
||||
this.removeTab(leftoverTab);
|
||||
}
|
||||
+ else {
|
||||
+ this.selectedTab._possiblyEmpty = this.selectedTab.isEmpty; // Not needed, but just in case.
|
||||
+ gBrowser.removeTab(this.selectedTab);
|
||||
+ }
|
||||
|
||||
if (tabs.length > 1 || !tabs[0].selected) {
|
||||
this._updateTabsAfterInsert();
|
||||
@@ -3830,7 +3982,7 @@
|
||||
@@ -3882,7 +4026,7 @@
|
||||
// Ensure we have an index if one was not provided.
|
||||
if (typeof index != "number") {
|
||||
// Move the new tab after another tab if needed, to the end otherwise.
|
||||
@@ -430,7 +411,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
if (
|
||||
!bulkOrderedOpen &&
|
||||
((openerTab &&
|
||||
@@ -3876,18 +4028,18 @@
|
||||
@@ -3928,18 +4072,18 @@
|
||||
|
||||
// Ensure index is within bounds.
|
||||
if (tab.pinned) {
|
||||
@@ -440,38 +421,38 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
+ index = Math.min(index, tab.hasAttribute("zen-essential") ? this._numZenEssentials : this.pinnedTabCount);
|
||||
} else {
|
||||
index = Math.max(index, this.pinnedTabCount);
|
||||
index = Math.min(index, this.tabs.length);
|
||||
index = Math.min(index, this.tabContainer.ariaFocusableItems.length);
|
||||
}
|
||||
|
||||
/** @type {MozTabbrowserTab|undefined} */
|
||||
- let tabAfter = this.tabs.at(index);
|
||||
+ let tabAfter = this.tabs.filter(tab => !tab.hasAttribute("zen-glance-tab")).at(index);
|
||||
- let itemAfter = this.tabContainer.ariaFocusableItems.at(index);
|
||||
+ let itemAfter = this.tabContainer.ariaFocusableItems.filter(tab => !tab.hasAttribute("zen-glance-tab")).at(index);
|
||||
this.tabContainer._invalidateCachedTabs();
|
||||
|
||||
- if (tabGroup) {
|
||||
+ if (tabGroup && !tabGroup.hasAttribute("split-view-group")) {
|
||||
if (tabAfter && tabAfter.group == tabGroup) {
|
||||
if (this.isTab(itemAfter) && itemAfter.group == tabGroup) {
|
||||
// Place at the front of, or between tabs in, the same tab group
|
||||
this.tabContainer.insertBefore(tab, tabAfter);
|
||||
@@ -4199,6 +4351,9 @@
|
||||
this.tabContainer.insertBefore(tab, itemAfter);
|
||||
@@ -4260,6 +4404,9 @@
|
||||
return;
|
||||
}
|
||||
|
||||
+ for (let tab of selectedTabs) {
|
||||
+ gZenPinnedTabManager._removePinnedAttributes(tab, true);
|
||||
+ }
|
||||
this.removeTabs(selectedTabs);
|
||||
this.removeTabs(selectedTabs, { telemetrySource });
|
||||
}
|
||||
|
||||
@@ -4450,6 +4605,7 @@
|
||||
skipGroupCheck = false,
|
||||
@@ -4512,6 +4659,7 @@
|
||||
telemetrySource,
|
||||
} = {}
|
||||
) {
|
||||
+ tabs = tabs.filter(tab => !tab.hasAttribute("zen-empty-tab"));
|
||||
// When 'closeWindowWithLastTab' pref is enabled, closing all tabs
|
||||
// can be considered equivalent to closing the window.
|
||||
if (
|
||||
@@ -4533,6 +4689,7 @@
|
||||
@@ -4596,6 +4744,7 @@
|
||||
if (lastToClose) {
|
||||
this.removeTab(lastToClose, aParams);
|
||||
}
|
||||
@@ -479,16 +460,16 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
@@ -4556,6 +4713,7 @@
|
||||
skipSessionStore,
|
||||
@@ -4620,6 +4769,7 @@
|
||||
telemetrySource,
|
||||
} = {}
|
||||
) {
|
||||
+ gZenUIManager.saveScrollbarState();
|
||||
if (UserInteraction.running("browser.tabs.opening", window)) {
|
||||
UserInteraction.finish("browser.tabs.opening", window);
|
||||
}
|
||||
@@ -4572,6 +4730,12 @@
|
||||
TelemetryStopwatch.start("FX_TAB_CLOSE_TIME_NO_ANIM_MS", aTab);
|
||||
@@ -4633,6 +4783,12 @@
|
||||
aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start();
|
||||
}
|
||||
|
||||
+ if (ZenWorkspaces.workspaceEnabled) {
|
||||
@@ -500,7 +481,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
// Handle requests for synchronously removing an already
|
||||
// asynchronously closing tab.
|
||||
if (!animate && aTab.closing) {
|
||||
@@ -4586,7 +4750,9 @@
|
||||
@@ -4647,7 +4803,9 @@
|
||||
// frame created for it (for example, by updating the visually selected
|
||||
// state).
|
||||
let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width;
|
||||
@@ -511,32 +492,16 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
if (
|
||||
!this._beginRemoveTab(aTab, {
|
||||
closeWindowFastpath: true,
|
||||
@@ -4600,7 +4766,6 @@
|
||||
TelemetryStopwatch.cancel("FX_TAB_CLOSE_TIME_NO_ANIM_MS", aTab);
|
||||
return;
|
||||
}
|
||||
-
|
||||
let lockTabSizing =
|
||||
!this.tabContainer.verticalMode &&
|
||||
!aTab.pinned &&
|
||||
@@ -4739,14 +4904,14 @@
|
||||
!!this.tabsInCollapsedTabGroups.length;
|
||||
if (
|
||||
aTab.visible &&
|
||||
- this.visibleTabs.length == 1 &&
|
||||
+ this.visibleTabs.length == 1 && !aTab._closingGlance &&
|
||||
!anyRemainingTabsInCollapsedTabGroups
|
||||
) {
|
||||
closeWindow =
|
||||
@@ -4810,7 +4968,7 @@
|
||||
closeWindowWithLastTab != null
|
||||
? closeWindowWithLastTab
|
||||
: !window.toolbar.visible ||
|
||||
- Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab");
|
||||
+ Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab") && !ZenWorkspaces._isClosingWindow && !ZenWorkspaces._removedByStartupPage;
|
||||
+ Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab") && !ZenWorkspaces._isClosingWindow && !ZenWorkspaces._removedByStartupPage;
|
||||
|
||||
if (closeWindow) {
|
||||
// We've already called beforeunload on all the relevant tabs if we get here,
|
||||
@@ -4770,6 +4935,7 @@
|
||||
@@ -4834,6 +4992,7 @@
|
||||
|
||||
newTab = true;
|
||||
}
|
||||
@@ -544,7 +509,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
aTab._endRemoveArgs = [closeWindow, newTab];
|
||||
|
||||
// swapBrowsersAndCloseOther will take care of closing the window without animation.
|
||||
@@ -4810,9 +4976,7 @@
|
||||
@@ -4873,9 +5032,7 @@
|
||||
aTab._mouseleave();
|
||||
|
||||
if (newTab) {
|
||||
@@ -555,7 +520,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
} else {
|
||||
TabBarVisibility.update();
|
||||
}
|
||||
@@ -4941,6 +5105,8 @@
|
||||
@@ -5004,6 +5161,8 @@
|
||||
this.tabs[i]._tPos = i;
|
||||
}
|
||||
|
||||
@@ -564,7 +529,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
if (!this._windowIsClosing) {
|
||||
if (wasPinned) {
|
||||
this.tabContainer._positionPinnedTabs();
|
||||
@@ -5064,8 +5230,8 @@
|
||||
@@ -5129,8 +5288,8 @@
|
||||
return closedCount;
|
||||
}
|
||||
|
||||
@@ -575,7 +540,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
if (unloadBlocked) {
|
||||
return;
|
||||
}
|
||||
@@ -5159,13 +5325,13 @@
|
||||
@@ -5230,13 +5389,13 @@
|
||||
!excludeTabs.has(aTab.owner) &&
|
||||
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")
|
||||
) {
|
||||
@@ -591,7 +556,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
);
|
||||
|
||||
let tab = this.tabContainer.findNextTab(aTab, {
|
||||
@@ -5181,7 +5347,7 @@
|
||||
@@ -5252,7 +5411,7 @@
|
||||
}
|
||||
|
||||
if (tab) {
|
||||
@@ -600,7 +565,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
}
|
||||
|
||||
// If no qualifying visible tab was found, see if there is a tab in
|
||||
@@ -5202,7 +5368,7 @@
|
||||
@@ -5273,7 +5432,7 @@
|
||||
});
|
||||
}
|
||||
|
||||
@@ -609,7 +574,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
}
|
||||
|
||||
_blurTab(aTab) {
|
||||
@@ -5599,10 +5765,10 @@
|
||||
@@ -5674,10 +5833,10 @@
|
||||
SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
|
||||
}
|
||||
|
||||
@@ -622,69 +587,68 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
aTab.selected ||
|
||||
aTab.closing ||
|
||||
// Tabs that are sharing the screen, microphone or camera cannot be hidden.
|
||||
@@ -5838,7 +6004,7 @@
|
||||
moveTabTo(aTab, aIndex, { forceStandaloneTab = false } = {}) {
|
||||
// Don't allow mixing pinned and unpinned tabs.
|
||||
if (aTab.pinned) {
|
||||
- aIndex = Math.min(aIndex, this.pinnedTabCount - 1);
|
||||
+ aIndex = aTab.hasAttribute('zen-essential') ? Math.min(aIndex, this._numZenEssentials - 1) : Math.min(aIndex, this.pinnedTabCount - 1);
|
||||
} else {
|
||||
aIndex = Math.max(aIndex, this.pinnedTabCount);
|
||||
}
|
||||
@@ -5848,10 +6014,17 @@
|
||||
@@ -5971,7 +6130,7 @@
|
||||
|
||||
this.#handleTabMove(aTab, () => {
|
||||
let neighbor = this.tabs[aIndex];
|
||||
- if (forceStandaloneTab && neighbor.group) {
|
||||
+ const _tPos = aTab._tPos;
|
||||
+ if ((forceStandaloneTab && neighbor.group) || neighbor.group?.hasAttribute("split-view-group")) {
|
||||
neighbor = neighbor.group;
|
||||
// Don't allow mixing pinned and unpinned tabs.
|
||||
if (this.isTab(element) && element.pinned) {
|
||||
- tabIndex = Math.min(tabIndex, this.pinnedTabCount - 1);
|
||||
+ tabIndex = element.hasAttribute('zen-essential') ? Math.min(tabIndex, this._numZenEssentials - 1) : Math.min(tabIndex, this.pinnedTabCount - 1);
|
||||
} else {
|
||||
tabIndex = Math.max(tabIndex, this.pinnedTabCount);
|
||||
}
|
||||
@@ -5998,9 +6157,16 @@
|
||||
element,
|
||||
() => {
|
||||
let neighbor = this.tabs[tabIndex];
|
||||
- if (forceUngrouped && neighbor.group) {
|
||||
+ const _tPos = element._tPos;
|
||||
+ if ((forceUngrouped && neighbor?.group) || neighbor?.group?.hasAttribute("split-view-group")) {
|
||||
neighbor = neighbor.group;
|
||||
}
|
||||
+ if (element.group?.hasAttribute("split-view-group")) {
|
||||
+ element = element.group;
|
||||
+ }
|
||||
+ if (element.group?.hasAttribute("split-view-group") && neighbor == element.group) {
|
||||
+ return;
|
||||
+ }
|
||||
if (neighbor && this.isTab(element) && tabIndex > element._tPos) {
|
||||
neighbor.after(element);
|
||||
} else {
|
||||
@@ -6069,7 +6235,9 @@
|
||||
targetElement = targetElement.group;
|
||||
}
|
||||
- if (neighbor && aIndex > aTab._tPos) {
|
||||
+ if (aTab.group?.hasAttribute("split-view-group")) {
|
||||
+ aTab = aTab.group;
|
||||
+ }
|
||||
+ if (aTab.group?.hasAttribute("split-view-group") && neighbor == aTab.group) {
|
||||
+ return;
|
||||
+ }
|
||||
+ if (neighbor && aIndex >= _tPos) {
|
||||
neighbor.after(aTab);
|
||||
} else {
|
||||
this.tabContainer.insertBefore(aTab, neighbor);
|
||||
@@ -5901,13 +6074,22 @@
|
||||
* Bug 1955388 - prevent pinned tabs from commingling with non-pinned tabs
|
||||
* when there are hidden tabs present
|
||||
*/
|
||||
+ if (tab.group?.hasAttribute("split-view-group")) {
|
||||
+ tab = tab.group;
|
||||
+ }
|
||||
+
|
||||
if (tab.pinned && !targetElement?.pinned) {
|
||||
// prevent pinned tab from being dragged past a non-pinned tab
|
||||
targetElement = this.tabs[this.pinnedTabCount - 1];
|
||||
moveBefore = false;
|
||||
}
|
||||
-
|
||||
+ if (element.group?.hasAttribute("split-view-group")) {
|
||||
+ element = element.group;
|
||||
+ }
|
||||
// Don't allow mixing pinned and unpinned tabs.
|
||||
if (element.pinned && !targetElement?.pinned) {
|
||||
targetElement = this.tabs[this.pinnedTabCount - 1];
|
||||
@@ -6079,7 +6247,13 @@
|
||||
moveBefore = true;
|
||||
}
|
||||
|
||||
+ if (targetElement?.group?.hasAttribute("split-view-group")) {
|
||||
+ targetElement = targetElement.group;
|
||||
+ }
|
||||
let getContainer = () => {
|
||||
+ if (tab.hasAttribute("zen-essential")) {
|
||||
+ return document.getElementById("zen-essentials-container");
|
||||
+ if (element.hasAttribute("zen-essential")) {
|
||||
+ return ZenWorkspaces.getEssentialsSection(element);
|
||||
+ }
|
||||
if (tab.pinned && this.tabContainer.verticalMode) {
|
||||
if (element.pinned && this.tabContainer.verticalMode) {
|
||||
return this.tabContainer.verticalPinnedTabsContainer;
|
||||
}
|
||||
@@ -5937,7 +6119,7 @@
|
||||
}
|
||||
|
||||
moveTabToGroup(aTab, aGroup) {
|
||||
@@ -6139,7 +6313,7 @@
|
||||
if (!this.isTab(aTab)) {
|
||||
throw new Error("Can only move a tab into a tab group");
|
||||
}
|
||||
- if (aTab.pinned) {
|
||||
+ if (aTab.pinned != !!aGroup.pinned) {
|
||||
return;
|
||||
}
|
||||
if (aTab.group && aTab.group.id === aGroup.id) {
|
||||
@@ -5961,6 +6143,10 @@
|
||||
@@ -6233,6 +6407,10 @@
|
||||
|
||||
moveActionCallback();
|
||||
|
||||
@@ -695,16 +659,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
// Clear tabs cache after moving nodes because the order of tabs may have
|
||||
// changed.
|
||||
this.tabContainer._invalidateCachedTabs();
|
||||
@@ -6015,7 +6201,7 @@
|
||||
createLazyBrowser,
|
||||
};
|
||||
|
||||
- let numPinned = this.pinnedTabCount;
|
||||
+ let numPinned = this._numVisiblePinTabs;
|
||||
if (aIndex < numPinned || (aTab.pinned && aIndex == numPinned)) {
|
||||
params.pinned = true;
|
||||
}
|
||||
@@ -6765,7 +6951,7 @@
|
||||
@@ -7050,7 +7228,7 @@
|
||||
// preventDefault(). It will still raise the window if appropriate.
|
||||
break;
|
||||
}
|
||||
@@ -713,7 +668,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
window.focus();
|
||||
aEvent.preventDefault();
|
||||
break;
|
||||
@@ -7671,6 +7857,7 @@
|
||||
@@ -7951,6 +8129,7 @@
|
||||
aWebProgress.isTopLevel
|
||||
) {
|
||||
this.mTab.setAttribute("busy", "true");
|
||||
@@ -721,7 +676,7 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
gBrowser._tabAttrModified(this.mTab, ["busy"]);
|
||||
this.mTab._notselectedsinceload = !this.mTab.selected;
|
||||
}
|
||||
@@ -8640,7 +8827,7 @@ var TabContextMenu = {
|
||||
@@ -8924,7 +9103,7 @@ var TabContextMenu = {
|
||||
);
|
||||
contextUnpinSelectedTabs.hidden =
|
||||
!this.contextTab.pinned || !this.multiselected;
|
||||
@@ -730,20 +685,11 @@ index 5f406ea5d09273c9b70b84eee24c6267f88692f8..be8740305b28cfc7752ad8f48ca94e69
|
||||
// Move Tab items
|
||||
let contextMoveTabOptions = document.getElementById(
|
||||
"context_moveTabOptions"
|
||||
@@ -8674,7 +8861,7 @@ var TabContextMenu = {
|
||||
let isFirstTab =
|
||||
!this.contextTabs[0].group &&
|
||||
(this.contextTabs[0] == visibleTabs[0] ||
|
||||
- this.contextTabs[0] == visibleTabs[gBrowser.pinnedTabCount]);
|
||||
+ this.contextTabs[0] == visibleTabs[gBrowser._numVisiblePinTabs]);
|
||||
contextMoveTabToStart.disabled = isFirstTab && allSelectedTabsAdjacent;
|
||||
|
||||
document.getElementById("context_openTabInWindow").disabled =
|
||||
@@ -8904,6 +9091,7 @@ var TabContextMenu = {
|
||||
if (this.contextTab.multiselected) {
|
||||
gBrowser.removeMultiSelectedTabs();
|
||||
@@ -9193,6 +9372,7 @@ var TabContextMenu = {
|
||||
telemetrySource: gBrowser.TabMetrics.METRIC_SOURCE.TAB_STRIP,
|
||||
});
|
||||
} else {
|
||||
+ gZenPinnedTabManager._removePinnedAttributes(this.contextTab, true);
|
||||
gBrowser.removeTab(this.contextTab, { animate: true });
|
||||
}
|
||||
},
|
||||
gBrowser.removeTab(this.contextTab, {
|
||||
animate: true,
|
||||
telemetrySource: gBrowser.TabMetrics.METRIC_SOURCE.TAB_STRIP,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
|
||||
index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc977c8415 100644
|
||||
index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..37870bfe9e0d9605907515fd17c437c2dfc167e6 100644
|
||||
--- a/browser/components/tabbrowser/content/tabs.js
|
||||
+++ b/browser/components/tabbrowser/content/tabs.js
|
||||
@@ -93,7 +93,7 @@
|
||||
@@ -83,7 +83,7 @@
|
||||
};
|
||||
this.arrowScrollbox._canScrollToElement = element => {
|
||||
if (isTab(element)) {
|
||||
@@ -11,7 +11,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
}
|
||||
return true;
|
||||
};
|
||||
@@ -347,7 +347,7 @@
|
||||
@@ -342,7 +342,7 @@
|
||||
// and we're not hitting the scroll buttons.
|
||||
if (
|
||||
event.button != 0 ||
|
||||
@@ -20,7 +20,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
event.composedTarget.localName == "toolbarbutton"
|
||||
) {
|
||||
return;
|
||||
@@ -396,6 +396,7 @@
|
||||
@@ -391,6 +391,7 @@
|
||||
// Reset the "ignored click" flag
|
||||
target._ignoredCloseButtonClicks = false;
|
||||
}
|
||||
@@ -28,8 +28,8 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
}
|
||||
|
||||
/* Protects from close-tab-button errant doubleclick:
|
||||
@@ -693,7 +694,7 @@
|
||||
if (this.#isContainerVerticalPinnedExpanded(tab)) {
|
||||
@@ -692,7 +693,7 @@
|
||||
if (this.#isContainerVerticalPinnedGrid(tab)) {
|
||||
// In expanded vertical mode, the max number of pinned tabs per row is dynamic
|
||||
// Set this before adjusting dragged tab's position
|
||||
- let pinnedTabs = this.visibleTabs.slice(0, gBrowser.pinnedTabCount);
|
||||
@@ -37,7 +37,16 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
let tabsPerRow = 0;
|
||||
let position = 0;
|
||||
for (let pinnedTab of pinnedTabs) {
|
||||
@@ -899,6 +900,10 @@
|
||||
@@ -764,7 +765,7 @@
|
||||
} else if (isTabGroupLabel(tab) && !tab.group.collapsed) {
|
||||
this._lockTabSizing();
|
||||
this.#keepTabSizeLocked = true;
|
||||
- tab.group.collapsed = true;
|
||||
+ tab.group.collapsed = !tab.group.hasAttribute("split-view-group");
|
||||
expandGroupOnDrop = true;
|
||||
}
|
||||
}
|
||||
@@ -913,6 +914,10 @@
|
||||
}
|
||||
|
||||
let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
|
||||
@@ -47,8 +56,8 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
+ }
|
||||
if (
|
||||
(effects == "move" || effects == "copy") &&
|
||||
this == draggedTab.container &&
|
||||
@@ -1012,6 +1017,18 @@
|
||||
document == draggedTab.ownerDocument &&
|
||||
@@ -1069,6 +1074,18 @@
|
||||
|
||||
this._tabDropIndicator.hidden = true;
|
||||
event.stopPropagation();
|
||||
@@ -60,14 +69,14 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
+ let moved = gZenPinnedTabManager.moveToAnotherTabContainerIfNecessary(event, movingTabs);
|
||||
+
|
||||
+ if (moved) {
|
||||
+ this._finishMoveTogetherSelectedTabs(draggedTab);
|
||||
+ this.finishMoveTogetherSelectedTabs(draggedTab);
|
||||
+ return;
|
||||
+ }
|
||||
+ }
|
||||
if (draggedTab && dropEffect == "copy") {
|
||||
// copy the dropped tab (wherever it's from)
|
||||
let newIndex = this._getDropIndex(event);
|
||||
@@ -1050,10 +1067,11 @@
|
||||
let duplicatedDraggedTab;
|
||||
let duplicatedTabs = [];
|
||||
@@ -1108,10 +1125,11 @@
|
||||
}
|
||||
} else {
|
||||
let isPinned = draggedTab.pinned;
|
||||
@@ -83,8 +92,8 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
);
|
||||
let size = this.verticalMode ? "height" : "width";
|
||||
let screenAxis = this.verticalMode ? "screenY" : "screenX";
|
||||
@@ -1129,7 +1147,7 @@
|
||||
tab.removeAttribute("tabdrop-samewindow");
|
||||
@@ -1203,7 +1221,7 @@
|
||||
item.removeAttribute("tabdrop-samewindow");
|
||||
resolve();
|
||||
};
|
||||
- if (gReduceMotion) {
|
||||
@@ -92,22 +101,18 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
postTransitionCleanup();
|
||||
} else {
|
||||
let onTransitionEnd = transitionendEvent => {
|
||||
@@ -1246,7 +1264,7 @@
|
||||
return;
|
||||
}
|
||||
}
|
||||
-
|
||||
@@ -1327,6 +1345,7 @@
|
||||
|
||||
let nextItem = this.ariaFocusableItems[newIndex];
|
||||
let tabGroup = isTab(nextItem) && nextItem.group;
|
||||
+ if (gZenViewSplitter.handleTabDrop(event, urls, replace, inBackground)) return;
|
||||
gBrowser.loadTabs(urls, {
|
||||
inBackground,
|
||||
replace,
|
||||
@@ -1276,13 +1294,25 @@
|
||||
@@ -1357,6 +1376,16 @@
|
||||
return;
|
||||
}
|
||||
|
||||
- this._finishMoveTogetherSelectedTabs(draggedTab);
|
||||
this._finishAnimateTabMove();
|
||||
|
||||
+ if (!dt.mozUserCancelled && dt.dropEffect == "none" && !this._isCustomizing) {
|
||||
+ const moved = gZenViewSplitter.moveTabToSplitView(event, draggedTab);
|
||||
+ if (moved) {
|
||||
@@ -118,18 +123,10 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
+ if (gZenViewSplitter._lastOpenedTab) gZenViewSplitter._lastOpenedTab._visuallySelected = false;
|
||||
+ }
|
||||
+
|
||||
+ this._finishMoveTogetherSelectedTabs(draggedTab);
|
||||
+
|
||||
if (
|
||||
dt.mozUserCancelled ||
|
||||
dt.dropEffect != "none" ||
|
||||
- this._isCustomizing
|
||||
+ this._isCustomizing ||
|
||||
+ draggedTab.pinned
|
||||
) {
|
||||
delete draggedTab._dragData;
|
||||
return;
|
||||
@@ -1504,7 +1534,7 @@
|
||||
this.finishMoveTogetherSelectedTabs(draggedTab);
|
||||
this.finishAnimateTabMove();
|
||||
this.#expandGroupOnDrop(draggedTab);
|
||||
@@ -1582,7 +1611,7 @@
|
||||
}
|
||||
|
||||
get newTabButton() {
|
||||
@@ -138,7 +135,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
}
|
||||
|
||||
get verticalMode() {
|
||||
@@ -1524,29 +1554,41 @@
|
||||
@@ -1606,29 +1635,41 @@
|
||||
if (this.#allTabs) {
|
||||
return this.#allTabs;
|
||||
}
|
||||
@@ -158,7 +155,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
|
||||
this.#allTabs = [
|
||||
- ...this.verticalPinnedTabsContainer.children,
|
||||
+ ...document.getElementById("zen-essentials-container").children, ...this.verticalPinnedTabsContainer.children,
|
||||
+ ...ZenWorkspaces.getCurrentEssentialsContainer().children, ...this.verticalPinnedTabsContainer.children,
|
||||
...children,
|
||||
];
|
||||
+ const lastPinnedTabIdx = gBrowser.pinnedTabCount;
|
||||
@@ -188,7 +185,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1566,7 +1608,7 @@
|
||||
@@ -1648,7 +1689,7 @@
|
||||
*/
|
||||
get visibleTabs() {
|
||||
if (!this.#visibleTabs) {
|
||||
@@ -197,7 +194,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
}
|
||||
return this.#visibleTabs;
|
||||
}
|
||||
@@ -1601,23 +1643,18 @@
|
||||
@@ -1683,23 +1724,18 @@
|
||||
}
|
||||
|
||||
let elementIndex = 0;
|
||||
@@ -213,7 +210,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
|
||||
let focusableItems = [];
|
||||
- for (let child of children) {
|
||||
+ for (let child of [...document.getElementById("zen-essentials-container").children, ...verticalPinnedTabsContainer.children, ...children]) {
|
||||
+ for (let child of [...ZenWorkspaces.getCurrentEssentialsContainer().children, ...verticalPinnedTabsContainer.children, ...children]) {
|
||||
if (isTab(child) && child.visible) {
|
||||
child.elementIndex = elementIndex++;
|
||||
focusableItems.push(child);
|
||||
@@ -225,7 +222,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
let visibleTabsInGroup = child.tabs.filter(tab => tab.visible);
|
||||
visibleTabsInGroup.forEach(tab => {
|
||||
tab.elementIndex = elementIndex++;
|
||||
@@ -1627,10 +1664,7 @@
|
||||
@@ -1709,10 +1745,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
@@ -237,7 +234,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
|
||||
return this.#focusableItems;
|
||||
}
|
||||
@@ -1638,6 +1672,7 @@
|
||||
@@ -1720,6 +1753,7 @@
|
||||
_invalidateCachedTabs() {
|
||||
this.#allTabs = null;
|
||||
this._invalidateCachedVisibleTabs();
|
||||
@@ -245,18 +242,18 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
}
|
||||
|
||||
_invalidateCachedVisibleTabs() {
|
||||
@@ -1652,8 +1687,8 @@
|
||||
#isContainerVerticalPinnedExpanded(tab) {
|
||||
@@ -1734,8 +1768,8 @@
|
||||
#isContainerVerticalPinnedGrid(tab) {
|
||||
return (
|
||||
this.verticalMode &&
|
||||
- tab.hasAttribute("pinned") &&
|
||||
- this.hasAttribute("expanded")
|
||||
- this.hasAttribute("expanded") &&
|
||||
+ (tab.hasAttribute("zen-essential")) &&
|
||||
+ (this.hasAttribute("expanded") || document.documentElement.hasAttribute("zen-sidebar-expanded"))
|
||||
+ (this.hasAttribute("expanded") || document.documentElement.hasAttribute("zen-sidebar-expanded")) &&
|
||||
!this.expandOnHover
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1668,7 +1703,7 @@
|
||||
@@ -1751,7 +1785,7 @@
|
||||
|
||||
if (node == null) {
|
||||
// We have a container for non-tab elements at the end of the scrollbox.
|
||||
@@ -265,7 +262,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
}
|
||||
|
||||
node.before(tab);
|
||||
@@ -1763,7 +1798,7 @@
|
||||
@@ -1846,7 +1880,7 @@
|
||||
// There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and
|
||||
// for when the tab strip is overflowed (which is shared by vertical and horizontal tabs);
|
||||
// Attach the long click popup to all of them.
|
||||
@@ -274,16 +271,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
const newTab2 = this.newTabButton;
|
||||
const newTabVertical = document.getElementById(
|
||||
"vertical-tabs-newtab-button"
|
||||
@@ -1846,7 +1881,7 @@
|
||||
let rect = ele => {
|
||||
return window.windowUtils.getBoundsWithoutFlushing(ele);
|
||||
};
|
||||
- let tab = this.visibleTabs[gBrowser.pinnedTabCount];
|
||||
+ let tab = this.visibleTabs[gBrowser._numVisiblePinTabs];
|
||||
if (tab && rect(tab).width <= this._tabClipWidth) {
|
||||
this.setAttribute("closebuttons", "activetab");
|
||||
} else {
|
||||
@@ -1858,10 +1893,12 @@
|
||||
@@ -1941,10 +1975,12 @@
|
||||
|
||||
_handleTabSelect(aInstant) {
|
||||
let selectedTab = this.selectedItem;
|
||||
@@ -296,34 +284,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
selectedTab._notselectedsinceload = false;
|
||||
}
|
||||
|
||||
@@ -1873,7 +1910,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
- let tabs = this.visibleTabs;
|
||||
+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab"));
|
||||
if (!tabs.length) {
|
||||
return;
|
||||
}
|
||||
@@ -1909,7 +1946,7 @@
|
||||
if (isEndTab && !this._hasTabTempMaxWidth) {
|
||||
return;
|
||||
}
|
||||
- let numPinned = gBrowser.pinnedTabCount;
|
||||
+ let numPinned = gBrowser._numVisiblePinTabs;
|
||||
// Force tabs to stay the same width, unless we're closing the last tab,
|
||||
// which case we need to let them expand just enough so that the overall
|
||||
// tabbar width is the same.
|
||||
@@ -1924,7 +1961,7 @@
|
||||
let tabsToReset = [];
|
||||
for (let i = numPinned; i < tabs.length; i++) {
|
||||
let tab = tabs[i];
|
||||
- tab.style.setProperty("max-width", aTabWidth, "important");
|
||||
+ //tab.style.setProperty("max-width", aTabWidth, "important");
|
||||
if (!isEndTab) {
|
||||
// keep tabs the same width
|
||||
tab.style.transition = "none";
|
||||
@@ -1990,16 +2027,15 @@
|
||||
@@ -2085,16 +2121,15 @@
|
||||
// Move pinned tabs to another container when the tabstrip is toggled to vertical
|
||||
// and when session restore code calls _positionPinnedTabs; update styling whenever
|
||||
// the number of pinned tabs changes.
|
||||
@@ -337,16 +298,16 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
- let tabs = this.visibleTabs;
|
||||
+ if (!ZenWorkspaces._hasInitializedTabsStrip) return;
|
||||
+ let count = ZenWorkspaces.makeSurePinTabIsInCorrectPosition();
|
||||
+ if (gBrowser.pinnedTabCount !== (verticalTabsContainer.children.length - count - 1 + document.getElementById("zen-essentials-container").children.length)) {
|
||||
+ if (gBrowser.pinnedTabCount !== (verticalTabsContainer.children.length - count - 1 + ZenWorkspaces.getCurrentEssentialsContainer().children.length)) {
|
||||
+ let tabs = this.allTabs.filter(tab => !tab.hasAttribute("zen-glance-tab"));
|
||||
for (let i = 0; i < numPinned; i++) {
|
||||
tabs[i].style.marginInlineStart = "";
|
||||
- verticalTabsContainer.appendChild(tabs[i]);
|
||||
+ tabs[i].hasAttribute("zen-essential") ? document.getElementById("zen-essentials-container").appendChild(tabs[i].group?.hasAttribute("split-view-group") ? tabs[i].group : tabs[i]) : verticalTabsContainer.insertBefore(tabs[i].group?.hasAttribute("split-view-group") ? tabs[i].group : tabs[i], verticalTabsContainer.lastChild);
|
||||
+ tabs[i].hasAttribute("zen-essential") ? ZenWorkspaces.getCurrentEssentialsContainer().appendChild(tabs[i].group?.hasAttribute("split-view-group") ? tabs[i].group : tabs[i]) : verticalTabsContainer.insertBefore(tabs[i].group?.hasAttribute("split-view-group") ? tabs[i].group : tabs[i], verticalTabsContainer.lastChild);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2007,9 +2043,7 @@
|
||||
@@ -2102,9 +2137,7 @@
|
||||
}
|
||||
|
||||
_resetVerticalPinnedTabs() {
|
||||
@@ -357,18 +318,16 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
|
||||
if (!verticalTabsContainer.children.length) {
|
||||
return;
|
||||
@@ -2022,8 +2056,8 @@
|
||||
@@ -2117,7 +2150,7 @@
|
||||
}
|
||||
|
||||
_positionPinnedTabs() {
|
||||
- let tabs = this.visibleTabs;
|
||||
- let numPinned = gBrowser.pinnedTabCount;
|
||||
+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab"));
|
||||
+ let numPinned = gBrowser._numVisiblePinTabs;
|
||||
let numPinned = gBrowser.pinnedTabCount;
|
||||
let absPositionHorizontalTabs =
|
||||
this.overflowing && tabs.length > numPinned && numPinned > 0;
|
||||
|
||||
@@ -2032,7 +2066,7 @@
|
||||
@@ -2127,7 +2160,7 @@
|
||||
|
||||
if (this.verticalMode) {
|
||||
this._updateVerticalPinnedTabs();
|
||||
@@ -377,7 +336,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
let layoutData = this._pinnedTabsLayoutCache;
|
||||
let uiDensity = document.documentElement.getAttribute("uidensity");
|
||||
if (!layoutData || layoutData.uiDensity != uiDensity) {
|
||||
@@ -2104,7 +2138,7 @@
|
||||
@@ -2191,7 +2224,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -386,7 +345,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
|
||||
let directionX = screenX > dragData.animLastScreenX;
|
||||
let directionY = screenY > dragData.animLastScreenY;
|
||||
@@ -2112,7 +2146,7 @@
|
||||
@@ -2199,7 +2232,7 @@
|
||||
dragData.animLastScreenX = screenX;
|
||||
|
||||
let { width: tabWidth, height: tabHeight } =
|
||||
@@ -395,14 +354,16 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
let shiftSizeX = tabWidth * movingTabs.length;
|
||||
let shiftSizeY = tabHeight;
|
||||
dragData.tabWidth = tabWidth;
|
||||
@@ -2296,11 +2330,15 @@
|
||||
@@ -2374,12 +2407,16 @@
|
||||
|
||||
this.#clearDragOverCreateGroupTimer();
|
||||
|
||||
let isPinned = draggedTab.pinned;
|
||||
- let isPinned = draggedTab.pinned;
|
||||
- let numPinned = gBrowser.pinnedTabCount;
|
||||
- let tabs = this.ariaFocusableItems.slice(
|
||||
- isPinned ? 0 : numPinned,
|
||||
- isPinned ? numPinned : undefined
|
||||
+ let isPinned = draggedTab?.group ? draggedTab.group.pinned : draggedTab.pinned;
|
||||
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
|
||||
+ let essential = draggedTab.hasAttribute("zen-essential");
|
||||
+ let tabs = this.ariaFocusableItems.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(
|
||||
@@ -415,7 +376,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
|
||||
if (this.#rtlMode) {
|
||||
tabs.reverse();
|
||||
@@ -2314,7 +2352,7 @@
|
||||
@@ -2393,7 +2430,7 @@
|
||||
let size = this.verticalMode ? "height" : "width";
|
||||
let translateAxis = this.verticalMode ? "translateY" : "translateX";
|
||||
let scrollDirection = this.verticalMode ? "scrollTop" : "scrollLeft";
|
||||
@@ -424,7 +385,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
let translateX = event.screenX - dragData.screenX;
|
||||
let translateY = event.screenY - dragData.screenY;
|
||||
|
||||
@@ -2328,6 +2366,12 @@
|
||||
@@ -2407,10 +2444,19 @@
|
||||
let lastTab = tabs.at(-1);
|
||||
let lastMovingTab = movingTabs.at(-1);
|
||||
let firstMovingTab = movingTabs[0];
|
||||
@@ -437,20 +398,24 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
let endEdge = ele => ele[screenAxis] + bounds(ele)[size];
|
||||
let lastMovingTabScreen = endEdge(lastMovingTab);
|
||||
let firstMovingTabScreen = firstMovingTab[screenAxis];
|
||||
@@ -2348,7 +2392,11 @@
|
||||
translate = Math.min(Math.max(translate, firstBound), lastBound);
|
||||
|
||||
for (let tab of movingTabs) {
|
||||
- tab.style.transform = `${translateAxis}(${translate}px)`;
|
||||
+ if (tab.group?.hasAttribute("split-view-group")) {
|
||||
+ tab.group.style.transform = `${translateAxis}(${translate}px)`;
|
||||
+ } else {
|
||||
+ tab.style.transform = `${translateAxis}(${translate}px)`;
|
||||
let shiftSize = lastMovingTabScreen - firstMovingTabScreen;
|
||||
+ if (firstMovingTab.hasAttribute("split-view-group")) {
|
||||
+ shiftSize += 5; // A hack to allow more space for the group
|
||||
+ }
|
||||
let translate = screen - dragData[screenAxis];
|
||||
if (!isPinned) {
|
||||
translate +=
|
||||
@@ -2431,6 +2477,9 @@
|
||||
// Shift the `.tab-group-label-container` to shift the label element.
|
||||
item = item.parentElement;
|
||||
}
|
||||
+ if (item.parentElement?.hasAttribute("split-view-group")) {
|
||||
+ item = item.parentElement;
|
||||
+ }
|
||||
item.style.transform = `${translateAxis}(${translate}px)`;
|
||||
}
|
||||
|
||||
dragData.translatePos = translate;
|
||||
@@ -2485,6 +2533,9 @@
|
||||
@@ -2568,6 +2617,9 @@
|
||||
break;
|
||||
}
|
||||
let element = tabs[mid];
|
||||
@@ -460,7 +425,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
let elementForSize = isTabGroupLabel(element)
|
||||
? element.parentElement
|
||||
: element;
|
||||
@@ -2507,6 +2558,10 @@
|
||||
@@ -2590,6 +2642,10 @@
|
||||
if (!dropElement) {
|
||||
dropElement = this.ariaFocusableItems[oldDropElementIndex];
|
||||
}
|
||||
@@ -471,7 +436,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
let newDropElementIndex = dropElement
|
||||
? dropElement.elementIndex
|
||||
: oldDropElementIndex;
|
||||
@@ -2515,7 +2570,7 @@
|
||||
@@ -2598,7 +2654,7 @@
|
||||
let shouldCreateGroupOnDrop;
|
||||
let dropBefore;
|
||||
if (dropElement) {
|
||||
@@ -480,11 +445,11 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
? dropElement.parentElement
|
||||
: dropElement;
|
||||
|
||||
@@ -2566,12 +2621,12 @@
|
||||
@@ -2660,12 +2716,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
- if (gBrowser._tabGroupsEnabled && !isPinned) {
|
||||
- if (gBrowser._tabGroupsEnabled && isTab(draggedTab) && !isPinned) {
|
||||
+ if (true) {
|
||||
let dragOverGroupingThreshold = 1 - moveOverThreshold;
|
||||
|
||||
@@ -495,7 +460,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
dropElement != draggedTab &&
|
||||
isTab(dropElement) &&
|
||||
!dropElement?.group &&
|
||||
@@ -2639,7 +2694,7 @@
|
||||
@@ -2735,7 +2791,7 @@
|
||||
// Shift background tabs to leave a gap where the dragged tab
|
||||
// would currently be dropped.
|
||||
for (let item of tabs) {
|
||||
@@ -504,7 +469,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -2648,6 +2703,9 @@
|
||||
@@ -2744,6 +2800,9 @@
|
||||
if (isTabGroupLabel(item)) {
|
||||
// Shift the `.tab-group-label-container` to shift the label element.
|
||||
item = item.parentElement;
|
||||
@@ -514,19 +479,19 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
}
|
||||
item.style.transform = transform;
|
||||
}
|
||||
@@ -2697,8 +2755,9 @@
|
||||
@@ -2796,8 +2855,9 @@
|
||||
);
|
||||
}
|
||||
|
||||
- _finishAnimateTabMove() {
|
||||
- if (!this.hasAttribute("movingtab")) {
|
||||
+ _finishAnimateTabMove(always = false) {
|
||||
- finishAnimateTabMove() {
|
||||
- if (!this.#isMovingTab()) {
|
||||
+ finishAnimateTabMove(always = false) {
|
||||
+ gZenPinnedTabManager.removeTabContainersDragoverClass();
|
||||
+ if (!this.hasAttribute("movingtab") && !always) {
|
||||
+ if (!this.#isMovingTab() && !always) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2711,6 +2770,12 @@
|
||||
@@ -2809,6 +2869,12 @@
|
||||
item = item.parentElement;
|
||||
}
|
||||
item.style.transform = "";
|
||||
@@ -539,7 +504,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
item.removeAttribute("dragover-createGroup");
|
||||
}
|
||||
this.removeAttribute("movingtab-createGroup");
|
||||
@@ -2754,7 +2819,7 @@
|
||||
@@ -2855,7 +2921,7 @@
|
||||
let postTransitionCleanup = () => {
|
||||
movingTab._moveTogetherSelectedTabsData.animate = false;
|
||||
};
|
||||
@@ -548,7 +513,7 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
postTransitionCleanup();
|
||||
} else {
|
||||
let onTransitionEnd = transitionendEvent => {
|
||||
@@ -2924,7 +2989,7 @@
|
||||
@@ -3028,7 +3094,7 @@
|
||||
}
|
||||
|
||||
_notifyBackgroundTab(aTab) {
|
||||
@@ -557,3 +522,13 @@ index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..75a30478387494c06e5c8131f55ba5dc
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3154,6 +3220,9 @@
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+ if (target?.group?.hasAttribute("split-view-group")) {
|
||||
+ target = target.group.labelElement;
|
||||
+ }
|
||||
return target;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
diff --git a/browser/extensions/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx b/browser/extensions/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx
|
||||
index dcf192d0ab7323d69f1bf505971e57c98ad4397d..a4d88304786af35030391f71bc99eee6cf7c1a64 100644
|
||||
--- a/browser/extensions/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx
|
||||
+++ b/browser/extensions/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx
|
||||
@@ -188,7 +188,7 @@ export class ContentSection extends React.PureComponent {
|
||||
data-l10n-args='{"num": 4}'
|
||||
/>
|
||||
</select>
|
||||
- {mayHaveSponsoredTopSites && (
|
||||
+ {false && (
|
||||
<div className="check-wrapper" role="presentation">
|
||||
<input
|
||||
id="sponsored-shortcuts"
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css
|
||||
index bafbb39aac37843e3b6dceb0e81304af51e186cc..92b4fd725118150634ab2ae0a24efb52c16c5227 100644
|
||||
index f03eb840f363c01a0ab304659795b51f4f61a866..24a0c0cc573e27776843925b83cc919fa546aeb9 100644
|
||||
--- a/browser/themes/shared/tabbrowser/tabs.css
|
||||
+++ b/browser/themes/shared/tabbrowser/tabs.css
|
||||
@@ -32,7 +32,7 @@
|
||||
@@ -11,7 +11,7 @@ index bafbb39aac37843e3b6dceb0e81304af51e186cc..92b4fd725118150634ab2ae0a24efb52
|
||||
--tab-hover-background-color: color-mix(in srgb, currentColor 11%, transparent);
|
||||
--tab-selected-textcolor: var(--toolbar-color);
|
||||
--tab-selected-bgcolor: var(--toolbar-bgcolor);
|
||||
@@ -214,8 +214,7 @@
|
||||
@@ -210,8 +210,7 @@
|
||||
}
|
||||
|
||||
#tabbrowser-tabs[positionpinnedtabs] > #tabbrowser-arrowscrollbox > &[pinned] {
|
||||
@@ -20,16 +20,16 @@ index bafbb39aac37843e3b6dceb0e81304af51e186cc..92b4fd725118150634ab2ae0a24efb52
|
||||
+
|
||||
}
|
||||
|
||||
#tabbrowser-tabs[movingtab] &:is([selected], [multiselected]) {
|
||||
@@ -254,7 +253,6 @@
|
||||
#tabbrowser-tabs[movingtab] &:is(:active, [multiselected]) {
|
||||
@@ -257,7 +256,6 @@
|
||||
}
|
||||
|
||||
:root:not([uidensity=compact]) &[pinned] {
|
||||
:root:not([uidensity=compact], [sidebar-expand-on-hover]) &[pinned] {
|
||||
- padding: 0 10px;
|
||||
}
|
||||
|
||||
&:is([selected], [multiselected]) {
|
||||
@@ -268,6 +266,7 @@
|
||||
@@ -271,6 +269,7 @@
|
||||
border-radius: inherit;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
@@ -37,7 +37,7 @@ index bafbb39aac37843e3b6dceb0e81304af51e186cc..92b4fd725118150634ab2ae0a24efb52
|
||||
|
||||
&::before {
|
||||
position: absolute;
|
||||
@@ -442,6 +441,7 @@
|
||||
@@ -458,6 +457,7 @@
|
||||
.tab-icon-image {
|
||||
-moz-context-properties: fill, stroke;
|
||||
fill: currentColor;
|
||||
@@ -45,7 +45,7 @@ index bafbb39aac37843e3b6dceb0e81304af51e186cc..92b4fd725118150634ab2ae0a24efb52
|
||||
|
||||
/* Apply crisp rendering for favicons at exactly 2dppx resolution */
|
||||
@media (resolution: 2dppx) {
|
||||
@@ -523,7 +523,7 @@
|
||||
@@ -557,7 +557,7 @@
|
||||
z-index: 1; /* Overlay tab title */
|
||||
|
||||
#tabbrowser-tabs[orient=vertical] & {
|
||||
@@ -54,7 +54,7 @@ index bafbb39aac37843e3b6dceb0e81304af51e186cc..92b4fd725118150634ab2ae0a24efb52
|
||||
}
|
||||
|
||||
&[crashed] {
|
||||
@@ -531,7 +531,7 @@
|
||||
@@ -565,7 +565,7 @@
|
||||
}
|
||||
|
||||
#tabbrowser-tabs[orient="vertical"]:not([expanded]) &:not([crashed]),
|
||||
@@ -63,7 +63,7 @@ index bafbb39aac37843e3b6dceb0e81304af51e186cc..92b4fd725118150634ab2ae0a24efb52
|
||||
&[soundplaying] {
|
||||
list-style-image: url("chrome://browser/skin/tabbrowser/tab-audio-playing-small.svg");
|
||||
}
|
||||
@@ -561,7 +561,7 @@
|
||||
@@ -595,7 +595,7 @@
|
||||
background-image: linear-gradient(var(--audio-overlay-extra-background)),
|
||||
linear-gradient(var(--toolbox-bgcolor));
|
||||
-moz-context-properties: fill;
|
||||
@@ -72,44 +72,7 @@ index bafbb39aac37843e3b6dceb0e81304af51e186cc..92b4fd725118150634ab2ae0a24efb52
|
||||
color-scheme: var(--tab-selected-color-scheme);
|
||||
border-radius: var(--border-radius-circle);
|
||||
|
||||
@@ -593,7 +593,7 @@
|
||||
}
|
||||
|
||||
#tabbrowser-tabs[orient="vertical"]:not([expanded]) &:is([soundplaying], [muted], [activemedia-blocked]),
|
||||
- &[pinned]:is([soundplaying], [muted], [activemedia-blocked]),
|
||||
+ &:is([soundplaying], [muted], [activemedia-blocked]),
|
||||
&[crashed] {
|
||||
display: revert;
|
||||
}
|
||||
@@ -607,7 +607,7 @@
|
||||
--button-min-height-small: 24px;
|
||||
--button-border-radius: var(--border-radius-small);
|
||||
|
||||
- #tabbrowser-tabs:is([orient="vertical"][expanded], [orient="horizontal"]) &:not([pinned]):not([crashed]) {
|
||||
+ #tabbrowser-tabs:is([orient="horizontal"]) &:not([pinned]):not([crashed]) {
|
||||
&:is([soundplaying], [muted], [activemedia-blocked]) {
|
||||
display: block;
|
||||
}
|
||||
@@ -638,14 +638,14 @@
|
||||
}
|
||||
|
||||
&[textoverflow] {
|
||||
- &[labeldirection=ltr]:not([pinned]),
|
||||
- &:not([labeldirection], [pinned]):-moz-locale-dir(ltr) {
|
||||
+ &[labeldirection=ltr],
|
||||
+ &:not([labeldirection]):-moz-locale-dir(ltr) {
|
||||
direction: ltr;
|
||||
mask-image: linear-gradient(to left, transparent, black var(--tab-label-mask-size));
|
||||
}
|
||||
|
||||
- &[labeldirection=rtl]:not([pinned]),
|
||||
- &:not([labeldirection], [pinned]):-moz-locale-dir(rtl) {
|
||||
+ &[labeldirection=rtl],
|
||||
+ &:not([labeldirection]):-moz-locale-dir(rtl) {
|
||||
direction: rtl;
|
||||
mask-image: linear-gradient(to right, transparent, black var(--tab-label-mask-size));
|
||||
}
|
||||
@@ -1201,7 +1201,7 @@
|
||||
@@ -1362,7 +1362,7 @@ tab-group {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,7 +81,7 @@ index bafbb39aac37843e3b6dceb0e81304af51e186cc..92b4fd725118150634ab2ae0a24efb52
|
||||
#vertical-tabs-newtab-button {
|
||||
appearance: none;
|
||||
min-height: var(--tab-min-height);
|
||||
@@ -1212,7 +1212,7 @@
|
||||
@@ -1373,7 +1373,7 @@ tab-group {
|
||||
margin-inline: var(--tab-inner-inline-margin);
|
||||
|
||||
#tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text {
|
||||
@@ -127,7 +90,7 @@ index bafbb39aac37843e3b6dceb0e81304af51e186cc..92b4fd725118150634ab2ae0a24efb52
|
||||
}
|
||||
|
||||
&:hover {
|
||||
@@ -1236,7 +1236,7 @@
|
||||
@@ -1397,7 +1397,7 @@ tab-group {
|
||||
* flex container. #tabs-newtab-button is a child of the arrowscrollbox where
|
||||
* we don't want a gap (between tabs), so we have to add some margin.
|
||||
*/
|
||||
@@ -136,15 +99,16 @@ index bafbb39aac37843e3b6dceb0e81304af51e186cc..92b4fd725118150634ab2ae0a24efb52
|
||||
margin-block: var(--tab-block-margin);
|
||||
}
|
||||
|
||||
@@ -1260,7 +1260,6 @@
|
||||
}
|
||||
@@ -1471,8 +1471,6 @@ tab-group {
|
||||
}
|
||||
|
||||
#vertical-pinned-tabs-container {
|
||||
- --tab-inline-padding: calc((calc(var(--tab-collapsed-background-width) + 2 * var(--tab-pinned-margin-inline-expanded) - var(--icon-size-default)) / 2));
|
||||
display: none;
|
||||
grid-template-columns: repeat(auto-fit, minmax(var(--tab-pinned-min-width-expanded), auto));
|
||||
overflow-y: auto;
|
||||
@@ -1480,7 +1479,7 @@
|
||||
:root:not([sidebar-expand-on-hover]) & {
|
||||
- --tab-inline-padding: calc((var(--tab-collapsed-background-width) + 2 *
|
||||
- var(--tab-pinned-margin-inline-expanded) - var(--icon-size-default)) / 2);
|
||||
/* stylelint-disable-next-line media-query-no-invalid */
|
||||
@media not -moz-pref("sidebar.visibility", "expand-on-hover") {
|
||||
/* We need these rules to apply at all times when the sidebar.visibility
|
||||
@@ -1717,7 +1715,7 @@ tab-group {
|
||||
toolbarbutton:not(#firefox-view-button),
|
||||
toolbarpaletteitem:not(#wrapper-firefox-view-button)
|
||||
) ~ #tabbrowser-tabs {
|
||||
@@ -153,7 +117,7 @@ index bafbb39aac37843e3b6dceb0e81304af51e186cc..92b4fd725118150634ab2ae0a24efb52
|
||||
padding-inline-start: calc(var(--tab-overflow-pinned-tabs-width) + 2px);
|
||||
margin-inline-start: 2px;
|
||||
}
|
||||
@@ -1514,7 +1513,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button {
|
||||
@@ -1751,7 +1749,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button {
|
||||
list-style-image: url(chrome://global/skin/icons/plus.svg);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,8 @@
|
||||
diff --git a/browser/themes/windows/browser.css b/browser/themes/windows/browser.css
|
||||
index 9af78803f0005a2b89e1c73f52153ed4d9e3154a..f5b21a09347f5890da3eef0efa38a66195c8e418 100644
|
||||
index 3e75a5f366e76acf4b9457a510b58b0cb8af580f..4962151f34ff52e8d009b82a9a12da99c4745a7a 100644
|
||||
--- a/browser/themes/windows/browser.css
|
||||
+++ b/browser/themes/windows/browser.css
|
||||
@@ -40,13 +40,12 @@
|
||||
* override these on the tabs toolbar because the accent color is
|
||||
* arbitrary, so the hardcoded colors from browser-custom-colors might
|
||||
* not provide sufficient contrast. */
|
||||
- --toolbarbutton-icon-fill: currentColor;
|
||||
--toolbarbutton-hover-background: color-mix(in srgb, currentColor 17%, transparent);
|
||||
--toolbarbutton-active-background: color-mix(in srgb, currentColor 30%, transparent);
|
||||
@@ -57,7 +57,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,10 +11,3 @@
|
||||
value: 1
|
||||
mirror: always
|
||||
#endif
|
||||
|
||||
#ifdef XP_WIN
|
||||
- name: zen.widget.windows.acrylic
|
||||
type: bool
|
||||
value: true
|
||||
mirror: always
|
||||
#endif
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
diff --git a/toolkit/content/aboutSupport.xhtml b/toolkit/content/aboutSupport.xhtml
|
||||
index 05e3d72a6e67900e9b3d9bfd35c89b056c7ca747..55408e77830492765c976dd967ca14a7b74cba97 100644
|
||||
index 296259cd0360a403e8659e22d0c08e968529a38a..bde1ee8d0a05e6ce2eb3ff8ff8a19ba28c20af98 100644
|
||||
--- a/toolkit/content/aboutSupport.xhtml
|
||||
+++ b/toolkit/content/aboutSupport.xhtml
|
||||
@@ -31,6 +31,7 @@
|
||||
#ifndef ANDROID
|
||||
<link rel="localization" href="toolkit/featuregates/features.ftl"/>
|
||||
#endif
|
||||
+ <script src="chrome://browser/content/zenThemeModifier.js"></script>
|
||||
</head>
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
<body class="wide-container">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
+ <script src="chrome://browser/content/zenThemeModifier.js"></script>
|
||||
<meta http-equiv="Content-Security-Policy" content="default-src chrome:; object-src 'none'" />
|
||||
<meta name="color-scheme" content="light dark" />
|
||||
<title data-l10n-id="page-title"/>
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.sys.mjs b/toolkit/mozapps/extensions/internal/XPIProvider.sys.mjs
|
||||
index 3af9a7779dd43a6ded906ceaf6768c56d53c8605..c0b597fa3f8073b9bfb4118d5352246a5b54c2d7 100644
|
||||
index 2cafde2156680a557081c5b82923f14618749358..0f4f5160f649165df80f35fbe72e02786a5b867e 100644
|
||||
--- a/toolkit/mozapps/extensions/internal/XPIProvider.sys.mjs
|
||||
+++ b/toolkit/mozapps/extensions/internal/XPIProvider.sys.mjs
|
||||
@@ -2556,8 +2556,8 @@ export var XPIProvider = {
|
||||
@@ -2674,8 +2674,8 @@ export var XPIProvider = {
|
||||
if (AppConstants.platform != "android") {
|
||||
// Keep version in sync with toolkit/mozapps/extensions/default-theme/manifest.json
|
||||
this.maybeInstallBuiltinAddon(
|
||||
- "default-theme@mozilla.org",
|
||||
- "1.4.1",
|
||||
+ "firefox-compact-dark@mozilla.org",
|
||||
+ "1.3",
|
||||
"resource://default-theme/"
|
||||
);
|
||||
}
|
||||
// Keep version in sync with toolkit/mozapps/extensions/default-theme/manifest.json
|
||||
this.maybeInstallBuiltinAddon(
|
||||
- "default-theme@mozilla.org",
|
||||
- "1.4.1",
|
||||
+ "firefox-compact-dark@mozilla.org",
|
||||
+ "1.3",
|
||||
"resource://default-theme/"
|
||||
);
|
||||
|
||||
|
||||
@@ -1,32 +1,15 @@
|
||||
diff --git a/toolkit/themes/shared/popup.css b/toolkit/themes/shared/popup.css
|
||||
index ed0caa97db5726a7d1bc1cd0aa7af3fdf99690dc..ce49d7f6900a1184c9aed00c26bd7b42916482aa 100644
|
||||
index 5701d305fdfc0407ead51aa52eefee38e7429de8..642325e981e9597eaaefefa725852a49b49ee6dc 100644
|
||||
--- a/toolkit/themes/shared/popup.css
|
||||
+++ b/toolkit/themes/shared/popup.css
|
||||
@@ -21,8 +21,8 @@ panel {
|
||||
@@ -22,8 +22,8 @@ panel {
|
||||
--panel-border-color: ThreeDShadow;
|
||||
--panel-width: initial;
|
||||
|
||||
- --panel-shadow-margin: 0px;
|
||||
- --panel-shadow-margin: 4px;
|
||||
- --panel-shadow: 0 0 var(--panel-shadow-margin) hsla(0,0%,0%,.2);
|
||||
+ --panel-shadow-margin: 10px;
|
||||
+ --panel-shadow: var(--zen-big-shadow);
|
||||
-moz-window-input-region-margin: var(--panel-shadow-margin);
|
||||
margin: calc(-1 * var(--panel-shadow-margin));
|
||||
|
||||
@@ -30,8 +30,6 @@ panel {
|
||||
--background-color-canvas: var(--panel-background);
|
||||
|
||||
@media (-moz-platform: linux) {
|
||||
- --panel-border-radius: 8px;
|
||||
- --panel-padding-block: 3px;
|
||||
|
||||
@media (prefers-contrast) {
|
||||
--panel-border-color: color-mix(in srgb, currentColor 60%, transparent);
|
||||
@@ -208,7 +206,6 @@ panel:where([type="arrow"]) {
|
||||
}
|
||||
|
||||
&[animating] {
|
||||
- pointer-events: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
diff --git a/widget/windows/WinUtils.cpp b/widget/windows/WinUtils.cpp
|
||||
index 598c96cbb5cd06a986a5793ebe9c5438d419d4a9..de1317749e6a6dd7df644818970d7706a51e6c14 100644
|
||||
--- a/widget/windows/WinUtils.cpp
|
||||
+++ b/widget/windows/WinUtils.cpp
|
||||
@@ -2007,6 +2007,7 @@ bool WinUtils::GetTimezoneName(wchar_t* aBuffer) {
|
||||
static constexpr nsLiteralCString kMicaPrefs[] = {
|
||||
"widget.windows.mica"_ns,
|
||||
"widget.windows.mica.popups"_ns,
|
||||
+ "zen.widget.windows.acrylic"_ns,
|
||||
};
|
||||
|
||||
static BOOL CALLBACK UpdateMicaInHwnd(HWND aHwnd, LPARAM aLParam) {
|
||||
@@ -1,21 +0,0 @@
|
||||
diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp
|
||||
index d2863d5fd9ce5cedc88253a07cb061a660d42e61..5c1097ad16cd6e27e76cc6dfbed85218d36cc36f 100644
|
||||
--- a/widget/windows/nsWindow.cpp
|
||||
+++ b/widget/windows/nsWindow.cpp
|
||||
@@ -165,6 +165,7 @@
|
||||
#include "mozilla/StaticPrefs_layout.h"
|
||||
#include "mozilla/StaticPrefs_ui.h"
|
||||
#include "mozilla/StaticPrefs_widget.h"
|
||||
+#include "mozilla/StaticPrefs_zen.h"
|
||||
#include "nsNativeAppSupportWin.h"
|
||||
|
||||
#include "nsIGfxInfo.h"
|
||||
@@ -2546,7 +2547,7 @@ void nsWindow::UpdateMicaBackdrop(bool aForce) {
|
||||
if (!useBackdrop) {
|
||||
return DWMSBT_AUTO;
|
||||
}
|
||||
- return IsPopup() ? DWMSBT_TRANSIENTWINDOW : DWMSBT_TABBEDWINDOW;
|
||||
+ return IsPopup() ? DWMSBT_TRANSIENTWINDOW : (StaticPrefs::zen_widget_windows_acrylic() ? DWMSBT_TRANSIENTWINDOW : DWMSBT_TABBEDWINDOW);
|
||||
}();
|
||||
::DwmSetWindowAttribute(mWnd, DWMWA_SYSTEMBACKDROP_TYPE, &backdrop,
|
||||
sizeof backdrop);
|
||||
36
src/zen/@types/index.d.ts
vendored
Normal file
36
src/zen/@types/index.d.ts
vendored
Normal file
@@ -0,0 +1,36 @@
|
||||
/**
|
||||
* NOTE: Do not modify this file by hand.
|
||||
* If you're updating some of the sources, see README for instructions.
|
||||
*/
|
||||
|
||||
/// <reference types="./lib.gecko.dom.d.ts" />
|
||||
/// <reference types="./lib.gecko.glean.d.ts" />
|
||||
/// <reference types="./lib.gecko.nsresult.d.ts" />
|
||||
/// <reference types="./lib.gecko.services.d.ts" />
|
||||
/// <reference types="./lib.gecko.xpcom.d.ts" />
|
||||
/// <reference types="./lib.gecko.xpidl.d.ts" />
|
||||
|
||||
/// Platform specific XPCOM modules.
|
||||
/// <reference types="./lib.gecko.darwin.d.ts" />
|
||||
/// <reference types="./lib.gecko.linux.d.ts" />
|
||||
/// <reference types="./lib.gecko.win32.d.ts" />
|
||||
|
||||
/// Order of references matters here, for overriding type signatures.
|
||||
/// <reference types="./lib.gecko.tweaks.d.ts" />
|
||||
|
||||
declare global {
|
||||
const Cc: nsXPCComponents_Classes;
|
||||
const Ci: nsIXPCComponents_Interfaces;
|
||||
const Components: nsIXPCComponents;
|
||||
const Cr: nsIXPCComponents_Results;
|
||||
|
||||
// Resolve typed generic overloads before the generated ones.
|
||||
const Cu: nsXPCComponents_Utils & nsIXPCComponents_Utils;
|
||||
|
||||
const Services: JSServices;
|
||||
const uneval: (any) => string;
|
||||
}
|
||||
|
||||
export {};
|
||||
|
||||
/// <reference types="./zen.d.ts" />
|
||||
225
src/zen/@types/lib.gecko.darwin.d.ts
vendored
Normal file
225
src/zen/@types/lib.gecko.darwin.d.ts
vendored
Normal file
@@ -0,0 +1,225 @@
|
||||
/**
|
||||
* NOTE: Do not modify this file by hand.
|
||||
* Content was generated from source XPCOM .idl files.
|
||||
* If you're updating some of the sources, see README for instructions.
|
||||
*/
|
||||
|
||||
declare global {
|
||||
// https://searchfox.org/mozilla-central/source/accessible/interfaces/nsIAccessibleMacInterface.idl
|
||||
|
||||
interface nsIAccessibleMacNSObjectWrapper extends nsISupports {}
|
||||
|
||||
interface nsIAccessibleMacInterface extends nsISupports {
|
||||
readonly attributeNames: string[];
|
||||
readonly parameterizedAttributeNames: string[];
|
||||
readonly actionNames: string[];
|
||||
getAttributeValue(attributeName: string): any;
|
||||
getParameterizedAttributeValue(attributeName: string, parameter: any): any;
|
||||
performAction(actionName: string): void;
|
||||
isAttributeSettable(attributeName: string): boolean;
|
||||
setAttributeValue(attributeName: string, attributeValue: any): void;
|
||||
}
|
||||
|
||||
interface nsIAccessibleMacEvent extends nsISupports {
|
||||
readonly macIface: nsIAccessibleMacInterface;
|
||||
readonly data: any;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/browser/components/migration/nsIKeychainMigrationUtils.idl
|
||||
|
||||
interface nsIKeychainMigrationUtils extends nsISupports {
|
||||
getGenericPassword(aServiceName: string, aAccountName: string): string;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/browser/components/shell/nsIMacShellService.idl
|
||||
|
||||
interface nsIMacShellService extends nsIShellService {
|
||||
showDesktopPreferences(): void;
|
||||
showSecurityPreferences(aPaneID: string): void;
|
||||
getAvailableApplicationsForProtocol(protocol: string): string[][];
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsIMacDockSupport.idl
|
||||
|
||||
interface nsIAppBundleLaunchOptions extends nsISupports {
|
||||
readonly addsToRecentItems: boolean;
|
||||
}
|
||||
|
||||
interface nsIMacDockSupport extends nsISupports {
|
||||
dockMenu: nsIStandaloneNativeMenu;
|
||||
activateApplication(aIgnoreOtherApplications: boolean): void;
|
||||
badgeText: string;
|
||||
setBadgeImage(aBadgeImage: imgIContainer, aPaintContext?: nsISVGPaintContext): void;
|
||||
readonly isAppInDock: boolean;
|
||||
ensureAppIsPinnedToDock(aAppPath?: string, aAppToReplacePath?: string): boolean;
|
||||
launchAppBundle(aAppBundle: nsIFile, aArgs: string[], aLaunchOptions?: nsIAppBundleLaunchOptions): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsIMacFinderProgress.idl
|
||||
|
||||
type nsIMacFinderProgressCanceledCallback = Callable<{
|
||||
canceled(): void;
|
||||
}>;
|
||||
|
||||
interface nsIMacFinderProgress extends nsISupports {
|
||||
init(path: string, canceledCallback: nsIMacFinderProgressCanceledCallback): void;
|
||||
updateProgress(currentProgress: u64, totalProgress: u64): void;
|
||||
end(): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsIMacSharingService.idl
|
||||
|
||||
interface nsIMacSharingService extends nsISupports {
|
||||
getSharingProviders(pageUrl: string): any;
|
||||
shareUrl(serviceName: string, pageUrl: string, pageTitle: string): void;
|
||||
openSharingPreferences(): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsIMacUserActivityUpdater.idl
|
||||
|
||||
interface nsIMacUserActivityUpdater extends nsISupports {
|
||||
updateLocation(pageUrl: string, pageTitle: string, window: nsIBaseWindow): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsIMacWebAppUtils.idl
|
||||
|
||||
type nsITrashAppCallback = Callable<{
|
||||
trashAppFinished(rv: nsresult): void;
|
||||
}>;
|
||||
|
||||
interface nsIMacWebAppUtils extends nsISupports {
|
||||
pathForAppWithIdentifier(bundleIdentifier: string): string;
|
||||
launchAppWithIdentifier(bundleIdentifier: string): void;
|
||||
trashApp(path: string, callback: nsITrashAppCallback): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsIStandaloneNativeMenu.idl
|
||||
|
||||
interface nsIStandaloneNativeMenu extends nsISupports {
|
||||
init(aElement: Element): void;
|
||||
menuWillOpen(): boolean;
|
||||
activateNativeMenuItemAt(anIndexString: string): void;
|
||||
forceUpdateNativeMenuAt(anIndexString: string): void;
|
||||
dump(): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarProgress.idl
|
||||
|
||||
interface nsITaskbarProgress extends nsISupports {
|
||||
readonly STATE_NO_PROGRESS?: 0;
|
||||
readonly STATE_INDETERMINATE?: 1;
|
||||
readonly STATE_NORMAL?: 2;
|
||||
readonly STATE_ERROR?: 3;
|
||||
readonly STATE_PAUSED?: 4;
|
||||
|
||||
setProgressState(state: nsTaskbarProgressState, currentValue?: u64, maxValue?: u64): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsITouchBarHelper.idl
|
||||
|
||||
interface nsITouchBarHelper extends nsISupports {
|
||||
readonly activeUrl: string;
|
||||
readonly activeTitle: string;
|
||||
readonly isUrlbarFocused: boolean;
|
||||
toggleFocusUrlbar(): void;
|
||||
unfocusUrlbar(): void;
|
||||
allItems: nsIArray;
|
||||
readonly document: Document;
|
||||
getTouchBarInput(aInputName: string): nsITouchBarInput;
|
||||
insertRestrictionInUrlbar(aToken: string): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsITouchBarInput.idl
|
||||
|
||||
type nsITouchBarInputCallback = Callable<{
|
||||
onCommand(): void;
|
||||
}>;
|
||||
|
||||
interface nsITouchBarInput extends nsISupports {
|
||||
readonly key: string;
|
||||
title: string;
|
||||
image: nsIURI;
|
||||
type: string;
|
||||
callback: nsITouchBarInputCallback;
|
||||
color: u32;
|
||||
disabled: boolean;
|
||||
children: nsIArray;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsITouchBarUpdater.idl
|
||||
|
||||
interface nsITouchBarUpdater extends nsISupports {
|
||||
updateTouchBarInputs(aWindow: nsIBaseWindow, aInputs: nsITouchBarInput[]): void;
|
||||
enterCustomizeMode(): void;
|
||||
isTouchBarInitialized(): boolean;
|
||||
setTouchBarInitialized(aIsInitialized: boolean): void;
|
||||
showPopover(aWindow: nsIBaseWindow, aPopover: nsITouchBarInput, aShowing: boolean): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/xpcom/base/nsIMacPreferencesReader.idl
|
||||
|
||||
interface nsIMacPreferencesReader extends nsISupports {
|
||||
policiesEnabled(): boolean;
|
||||
readPreferences(): any;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/xpcom/io/nsILocalFileMac.idl
|
||||
|
||||
interface nsILocalFileMac extends nsIFile {
|
||||
readonly fileSizeWithResFork: i64;
|
||||
launchWithDoc(aDocToLoad: nsIFile, aLaunchInBackground: boolean): void;
|
||||
openDocWithApp(aAppToOpenWith: nsIFile, aLaunchInBackground: boolean): void;
|
||||
isPackage(): boolean;
|
||||
readonly bundleDisplayName: string;
|
||||
readonly bundleIdentifier: string;
|
||||
readonly bundleContentsLastModifiedTime: i64;
|
||||
hasXAttr(aAttrName: string): boolean;
|
||||
getXAttr(aAttrName: string): u8[];
|
||||
setXAttr(aAttrName: string, aAttrValue: u8[]): void;
|
||||
delXAttr(aAttrName: string): void;
|
||||
}
|
||||
|
||||
interface nsIXPCComponents_Interfaces {
|
||||
nsIAccessibleMacNSObjectWrapper: nsJSIID<nsIAccessibleMacNSObjectWrapper>;
|
||||
nsIAccessibleMacInterface: nsJSIID<nsIAccessibleMacInterface>;
|
||||
nsIAccessibleMacEvent: nsJSIID<nsIAccessibleMacEvent>;
|
||||
nsIKeychainMigrationUtils: nsJSIID<nsIKeychainMigrationUtils>;
|
||||
nsIMacShellService: nsJSIID<nsIMacShellService>;
|
||||
nsIAppBundleLaunchOptions: nsJSIID<nsIAppBundleLaunchOptions>;
|
||||
nsIMacDockSupport: nsJSIID<nsIMacDockSupport>;
|
||||
nsIMacFinderProgressCanceledCallback: nsJSIID<nsIMacFinderProgressCanceledCallback>;
|
||||
nsIMacFinderProgress: nsJSIID<nsIMacFinderProgress>;
|
||||
nsIMacSharingService: nsJSIID<nsIMacSharingService>;
|
||||
nsIMacUserActivityUpdater: nsJSIID<nsIMacUserActivityUpdater>;
|
||||
nsITrashAppCallback: nsJSIID<nsITrashAppCallback>;
|
||||
nsIMacWebAppUtils: nsJSIID<nsIMacWebAppUtils>;
|
||||
nsIStandaloneNativeMenu: nsJSIID<nsIStandaloneNativeMenu>;
|
||||
nsITaskbarProgress: nsJSIID<nsITaskbarProgress>;
|
||||
nsITouchBarHelper: nsJSIID<nsITouchBarHelper>;
|
||||
nsITouchBarInputCallback: nsJSIID<nsITouchBarInputCallback>;
|
||||
nsITouchBarInput: nsJSIID<nsITouchBarInput>;
|
||||
nsITouchBarUpdater: nsJSIID<nsITouchBarUpdater>;
|
||||
nsIMacPreferencesReader: nsJSIID<nsIMacPreferencesReader>;
|
||||
nsILocalFileMac: nsJSIID<nsILocalFileMac>;
|
||||
}
|
||||
} // global
|
||||
|
||||
// Typedefs from xpidl.
|
||||
type PRTime = i64;
|
||||
type nsTaskbarProgressState = i32;
|
||||
|
||||
// XPCOM internal utility types.
|
||||
|
||||
/** XPCOM inout param is passed in as a js object with a value property. */
|
||||
type InOutParam<T> = { value: T };
|
||||
|
||||
/** XPCOM out param is written to the passed in object's value property. */
|
||||
type OutParam<T> = { value?: T };
|
||||
|
||||
/** Enable interfaces to inherit from enums: pick variants as optional. */
|
||||
type Enums<enums> = Partial<Pick<enums, keyof enums>>;
|
||||
|
||||
/** Callable accepts either form of a [function] interface. */
|
||||
type Callable<iface> = iface | Extract<iface[keyof iface], Function>;
|
||||
|
||||
export {};
|
||||
32649
src/zen/@types/lib.gecko.dom.d.ts
vendored
Normal file
32649
src/zen/@types/lib.gecko.dom.d.ts
vendored
Normal file
File diff suppressed because it is too large
Load Diff
12
src/zen/@types/lib.gecko.glean.d.ts
vendored
Normal file
12
src/zen/@types/lib.gecko.glean.d.ts
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
/**
|
||||
* NOTE: Do not modify this file by hand.
|
||||
* Content was generated from source metrics.yaml files.
|
||||
* If you're updating some of the sources, see README for instructions.
|
||||
*/
|
||||
|
||||
/// <reference types="./glean/browser_components_search.d.ts" />
|
||||
/// <reference types="./glean/browser_components_search_pings.d.ts" />
|
||||
/// <reference types="./glean/toolkit_components_extensions.d.ts" />
|
||||
/// <reference types="./glean/toolkit_components_places.d.ts" />
|
||||
/// <reference types="./glean/toolkit_components_search.d.ts" />
|
||||
/// <reference types="./glean/toolkit_mozapps_extensions.d.ts" />
|
||||
80
src/zen/@types/lib.gecko.linux.d.ts
vendored
Normal file
80
src/zen/@types/lib.gecko.linux.d.ts
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
/**
|
||||
* NOTE: Do not modify this file by hand.
|
||||
* Content was generated from source XPCOM .idl files.
|
||||
* If you're updating some of the sources, see README for instructions.
|
||||
*/
|
||||
|
||||
declare global {
|
||||
// https://searchfox.org/mozilla-central/source/browser/components/shell/nsIGNOMEShellService.idl
|
||||
|
||||
interface nsIGNOMEShellService extends nsIShellService {
|
||||
readonly canSetDesktopBackground: boolean;
|
||||
isDefaultForScheme(aScheme: string): boolean;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/browser/components/shell/nsIOpenTabsProvider.idl
|
||||
|
||||
interface nsIOpenTabsProvider extends nsISupports {
|
||||
getOpenTabs(): string[];
|
||||
switchToOpenTab(url: string): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsIApplicationChooser.idl
|
||||
|
||||
type nsIApplicationChooserFinishedCallback = Callable<{
|
||||
done(handlerApp: nsIHandlerApp): void;
|
||||
}>;
|
||||
|
||||
interface nsIApplicationChooser extends nsISupports {
|
||||
init(parent: mozIDOMWindowProxy, title: string): void;
|
||||
open(contentType: string, applicationChooserFinishedCallback: nsIApplicationChooserFinishedCallback): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsIGtkTaskbarProgress.idl
|
||||
|
||||
interface nsIGtkTaskbarProgress extends nsITaskbarProgress {
|
||||
setPrimaryWindow(aWindow: mozIDOMWindowProxy): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarProgress.idl
|
||||
|
||||
interface nsITaskbarProgress extends nsISupports {
|
||||
readonly STATE_NO_PROGRESS?: 0;
|
||||
readonly STATE_INDETERMINATE?: 1;
|
||||
readonly STATE_NORMAL?: 2;
|
||||
readonly STATE_ERROR?: 3;
|
||||
readonly STATE_PAUSED?: 4;
|
||||
|
||||
setProgressState(state: nsTaskbarProgressState, currentValue?: u64, maxValue?: u64): void;
|
||||
}
|
||||
|
||||
interface nsIXPCComponents_Interfaces {
|
||||
nsIGNOMEShellService: nsJSIID<nsIGNOMEShellService>;
|
||||
nsIOpenTabsProvider: nsJSIID<nsIOpenTabsProvider>;
|
||||
nsIApplicationChooserFinishedCallback: nsJSIID<nsIApplicationChooserFinishedCallback>;
|
||||
nsIApplicationChooser: nsJSIID<nsIApplicationChooser>;
|
||||
nsIGtkTaskbarProgress: nsJSIID<nsIGtkTaskbarProgress>;
|
||||
nsITaskbarProgress: nsJSIID<nsITaskbarProgress>;
|
||||
}
|
||||
} // global
|
||||
|
||||
// Typedefs from xpidl.
|
||||
type PRTime = i64;
|
||||
type nsHandlerInfoAction = i32;
|
||||
type nsTaskbarProgressState = i32;
|
||||
|
||||
// XPCOM internal utility types.
|
||||
|
||||
/** XPCOM inout param is passed in as a js object with a value property. */
|
||||
type InOutParam<T> = { value: T };
|
||||
|
||||
/** XPCOM out param is written to the passed in object's value property. */
|
||||
type OutParam<T> = { value?: T };
|
||||
|
||||
/** Enable interfaces to inherit from enums: pick variants as optional. */
|
||||
type Enums<enums> = Partial<Pick<enums, keyof enums>>;
|
||||
|
||||
/** Callable accepts either form of a [function] interface. */
|
||||
type Callable<iface> = iface | Extract<iface[keyof iface], Function>;
|
||||
|
||||
export {};
|
||||
951
src/zen/@types/lib.gecko.modules.d.ts
vendored
Normal file
951
src/zen/@types/lib.gecko.modules.d.ts
vendored
Normal file
@@ -0,0 +1,951 @@
|
||||
/**
|
||||
* NOTE: Do not modify this file by hand.
|
||||
* Content was generated by running "mach ts paths".
|
||||
*/
|
||||
|
||||
export interface LazyModules {
|
||||
'chrome://browser/content/backup/backup-constants.mjs': typeof import('chrome://browser/content/backup/backup-constants.mjs');
|
||||
'chrome://browser/content/firefoxview/helpers.mjs': typeof import('chrome://browser/content/firefoxview/helpers.mjs');
|
||||
'chrome://browser/content/migration/migration-wizard-constants.mjs': typeof import('chrome://browser/content/migration/migration-wizard-constants.mjs');
|
||||
'chrome://browser/content/nsContextMenu.sys.mjs': typeof import('chrome://browser/content/nsContextMenu.sys.mjs');
|
||||
'chrome://devtools-startup/content/DevToolsShim.sys.mjs': typeof import('chrome://devtools-startup/content/DevToolsShim.sys.mjs');
|
||||
'chrome://global/content/ml/EngineProcess.sys.mjs': typeof import('chrome://global/content/ml/EngineProcess.sys.mjs');
|
||||
'chrome://global/content/ml/HttpInference.sys.mjs': typeof import('chrome://global/content/ml/HttpInference.sys.mjs');
|
||||
'chrome://global/content/ml/ModelHub.sys.mjs': typeof import('chrome://global/content/ml/ModelHub.sys.mjs');
|
||||
'chrome://global/content/ml/Utils.sys.mjs': typeof import('chrome://global/content/ml/Utils.sys.mjs');
|
||||
'chrome://global/content/ml/backends/LlamaPipeline.mjs': typeof import('chrome://global/content/ml/backends/LlamaPipeline.mjs');
|
||||
'chrome://global/content/ml/backends/ONNXPipeline.mjs': typeof import('chrome://global/content/ml/backends/ONNXPipeline.mjs');
|
||||
'chrome://global/content/ml/backends/Pipeline.mjs': typeof import('chrome://global/content/ml/backends/Pipeline.mjs');
|
||||
'chrome://global/content/shopping/ProductValidator.sys.mjs': typeof import('chrome://global/content/shopping/ProductValidator.sys.mjs');
|
||||
'chrome://global/content/shopping/ShoppingProduct.mjs': typeof import('chrome://global/content/shopping/ShoppingProduct.mjs');
|
||||
'chrome://global/content/translations/TranslationsTelemetry.sys.mjs': typeof import('chrome://global/content/translations/TranslationsTelemetry.sys.mjs');
|
||||
'chrome://global/content/translations/TranslationsUtils.mjs': typeof import('chrome://global/content/translations/TranslationsUtils.mjs');
|
||||
'chrome://global/content/translations/translations-document.sys.mjs': typeof import('chrome://global/content/translations/translations-document.sys.mjs');
|
||||
'chrome://global/content/translations/translations-engine.sys.mjs': typeof import('chrome://global/content/translations/translations-engine.sys.mjs');
|
||||
'chrome://mochitests/content/browser/remote/shared/messagehandler/test/browser/resources/modules/ModuleRegistry.sys.mjs': typeof import('chrome://mochitests/content/browser/remote/shared/messagehandler/test/browser/resources/modules/ModuleRegistry.sys.mjs');
|
||||
'chrome://pocket/content/Pocket.sys.mjs': typeof import('chrome://pocket/content/Pocket.sys.mjs');
|
||||
'chrome://pocket/content/SaveToPocket.sys.mjs': typeof import('chrome://pocket/content/SaveToPocket.sys.mjs');
|
||||
'chrome://pocket/content/pktApi.sys.mjs': typeof import('chrome://pocket/content/pktApi.sys.mjs');
|
||||
'chrome://pocket/content/pktTelemetry.sys.mjs': typeof import('chrome://pocket/content/pktTelemetry.sys.mjs');
|
||||
'chrome://remote/content/cdp/CDP.sys.mjs': typeof import('chrome://remote/content/cdp/CDP.sys.mjs');
|
||||
'chrome://remote/content/cdp/CDPConnection.sys.mjs': typeof import('chrome://remote/content/cdp/CDPConnection.sys.mjs');
|
||||
'chrome://remote/content/cdp/Error.sys.mjs': typeof import('chrome://remote/content/cdp/Error.sys.mjs');
|
||||
'chrome://remote/content/cdp/JSONHandler.sys.mjs': typeof import('chrome://remote/content/cdp/JSONHandler.sys.mjs');
|
||||
'chrome://remote/content/cdp/Protocol.sys.mjs': typeof import('chrome://remote/content/cdp/Protocol.sys.mjs');
|
||||
'chrome://remote/content/cdp/StreamRegistry.sys.mjs': typeof import('chrome://remote/content/cdp/StreamRegistry.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/ContentProcessDomains.sys.mjs': typeof import('chrome://remote/content/cdp/domains/ContentProcessDomains.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/Domain.sys.mjs': typeof import('chrome://remote/content/cdp/domains/Domain.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/DomainCache.sys.mjs': typeof import('chrome://remote/content/cdp/domains/DomainCache.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/ParentProcessDomains.sys.mjs': typeof import('chrome://remote/content/cdp/domains/ParentProcessDomains.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/content/DOM.sys.mjs': typeof import('chrome://remote/content/cdp/domains/content/DOM.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/content/Emulation.sys.mjs': typeof import('chrome://remote/content/cdp/domains/content/Emulation.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/content/Input.sys.mjs': typeof import('chrome://remote/content/cdp/domains/content/Input.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/content/Log.sys.mjs': typeof import('chrome://remote/content/cdp/domains/content/Log.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/content/Network.sys.mjs': typeof import('chrome://remote/content/cdp/domains/content/Network.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/content/Page.sys.mjs': typeof import('chrome://remote/content/cdp/domains/content/Page.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/content/Performance.sys.mjs': typeof import('chrome://remote/content/cdp/domains/content/Performance.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/content/Runtime.sys.mjs': typeof import('chrome://remote/content/cdp/domains/content/Runtime.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/content/Security.sys.mjs': typeof import('chrome://remote/content/cdp/domains/content/Security.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/content/runtime/ExecutionContext.sys.mjs': typeof import('chrome://remote/content/cdp/domains/content/runtime/ExecutionContext.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/parent/Browser.sys.mjs': typeof import('chrome://remote/content/cdp/domains/parent/Browser.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/parent/Emulation.sys.mjs': typeof import('chrome://remote/content/cdp/domains/parent/Emulation.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/parent/Fetch.sys.mjs': typeof import('chrome://remote/content/cdp/domains/parent/Fetch.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/parent/IO.sys.mjs': typeof import('chrome://remote/content/cdp/domains/parent/IO.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/parent/Input.sys.mjs': typeof import('chrome://remote/content/cdp/domains/parent/Input.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/parent/Network.sys.mjs': typeof import('chrome://remote/content/cdp/domains/parent/Network.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/parent/Page.sys.mjs': typeof import('chrome://remote/content/cdp/domains/parent/Page.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/parent/Security.sys.mjs': typeof import('chrome://remote/content/cdp/domains/parent/Security.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/parent/SystemInfo.sys.mjs': typeof import('chrome://remote/content/cdp/domains/parent/SystemInfo.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/parent/Target.sys.mjs': typeof import('chrome://remote/content/cdp/domains/parent/Target.sys.mjs');
|
||||
'chrome://remote/content/cdp/domains/parent/page/DialogHandler.sys.mjs': typeof import('chrome://remote/content/cdp/domains/parent/page/DialogHandler.sys.mjs');
|
||||
'chrome://remote/content/cdp/observers/ChannelEventSink.sys.mjs': typeof import('chrome://remote/content/cdp/observers/ChannelEventSink.sys.mjs');
|
||||
'chrome://remote/content/cdp/observers/ContextObserver.sys.mjs': typeof import('chrome://remote/content/cdp/observers/ContextObserver.sys.mjs');
|
||||
'chrome://remote/content/cdp/observers/NetworkObserver.sys.mjs': typeof import('chrome://remote/content/cdp/observers/NetworkObserver.sys.mjs');
|
||||
'chrome://remote/content/cdp/observers/TargetObserver.sys.mjs': typeof import('chrome://remote/content/cdp/observers/TargetObserver.sys.mjs');
|
||||
'chrome://remote/content/cdp/sessions/MainProcessSession.sys.mjs': typeof import('chrome://remote/content/cdp/sessions/MainProcessSession.sys.mjs');
|
||||
'chrome://remote/content/cdp/sessions/TabSession.sys.mjs': typeof import('chrome://remote/content/cdp/sessions/TabSession.sys.mjs');
|
||||
'chrome://remote/content/cdp/targets/MainProcessTarget.sys.mjs': typeof import('chrome://remote/content/cdp/targets/MainProcessTarget.sys.mjs');
|
||||
'chrome://remote/content/cdp/targets/TabTarget.sys.mjs': typeof import('chrome://remote/content/cdp/targets/TabTarget.sys.mjs');
|
||||
'chrome://remote/content/cdp/targets/TargetList.sys.mjs': typeof import('chrome://remote/content/cdp/targets/TargetList.sys.mjs');
|
||||
'chrome://remote/content/components/Marionette.sys.mjs': typeof import('chrome://remote/content/components/Marionette.sys.mjs');
|
||||
'chrome://remote/content/components/RemoteAgent.sys.mjs': typeof import('chrome://remote/content/components/RemoteAgent.sys.mjs');
|
||||
'chrome://remote/content/marionette/actors/MarionetteCommandsParent.sys.mjs': typeof import('chrome://remote/content/marionette/actors/MarionetteCommandsParent.sys.mjs');
|
||||
'chrome://remote/content/marionette/actors/MarionetteEventsParent.sys.mjs': typeof import('chrome://remote/content/marionette/actors/MarionetteEventsParent.sys.mjs');
|
||||
'chrome://remote/content/marionette/atom.sys.mjs': typeof import('chrome://remote/content/marionette/atom.sys.mjs');
|
||||
'chrome://remote/content/marionette/browser.sys.mjs': typeof import('chrome://remote/content/marionette/browser.sys.mjs');
|
||||
'chrome://remote/content/marionette/cert.sys.mjs': typeof import('chrome://remote/content/marionette/cert.sys.mjs');
|
||||
'chrome://remote/content/marionette/cookie.sys.mjs': typeof import('chrome://remote/content/marionette/cookie.sys.mjs');
|
||||
'chrome://remote/content/marionette/driver.sys.mjs': typeof import('chrome://remote/content/marionette/driver.sys.mjs');
|
||||
'chrome://remote/content/marionette/evaluate.sys.mjs': typeof import('chrome://remote/content/marionette/evaluate.sys.mjs');
|
||||
'chrome://remote/content/marionette/interaction.sys.mjs': typeof import('chrome://remote/content/marionette/interaction.sys.mjs');
|
||||
'chrome://remote/content/marionette/json.sys.mjs': typeof import('chrome://remote/content/marionette/json.sys.mjs');
|
||||
'chrome://remote/content/marionette/l10n.sys.mjs': typeof import('chrome://remote/content/marionette/l10n.sys.mjs');
|
||||
'chrome://remote/content/marionette/message.sys.mjs': typeof import('chrome://remote/content/marionette/message.sys.mjs');
|
||||
'chrome://remote/content/marionette/navigate.sys.mjs': typeof import('chrome://remote/content/marionette/navigate.sys.mjs');
|
||||
'chrome://remote/content/marionette/packets.sys.mjs': typeof import('chrome://remote/content/marionette/packets.sys.mjs');
|
||||
'chrome://remote/content/marionette/prefs.sys.mjs': typeof import('chrome://remote/content/marionette/prefs.sys.mjs');
|
||||
'chrome://remote/content/marionette/reftest.sys.mjs': typeof import('chrome://remote/content/marionette/reftest.sys.mjs');
|
||||
'chrome://remote/content/marionette/server.sys.mjs': typeof import('chrome://remote/content/marionette/server.sys.mjs');
|
||||
'chrome://remote/content/marionette/stream-utils.sys.mjs': typeof import('chrome://remote/content/marionette/stream-utils.sys.mjs');
|
||||
'chrome://remote/content/marionette/sync.sys.mjs': typeof import('chrome://remote/content/marionette/sync.sys.mjs');
|
||||
'chrome://remote/content/marionette/transport.sys.mjs': typeof import('chrome://remote/content/marionette/transport.sys.mjs');
|
||||
'chrome://remote/content/marionette/web-reference.sys.mjs': typeof import('chrome://remote/content/marionette/web-reference.sys.mjs');
|
||||
'chrome://remote/content/marionette/webauthn.sys.mjs': typeof import('chrome://remote/content/marionette/webauthn.sys.mjs');
|
||||
'chrome://remote/content/server/WebSocketHandshake.sys.mjs': typeof import('chrome://remote/content/server/WebSocketHandshake.sys.mjs');
|
||||
'chrome://remote/content/server/WebSocketTransport.sys.mjs': typeof import('chrome://remote/content/server/WebSocketTransport.sys.mjs');
|
||||
'chrome://remote/content/server/httpd.sys.mjs': typeof import('chrome://remote/content/server/httpd.sys.mjs');
|
||||
'chrome://remote/content/shared/Addon.sys.mjs': typeof import('chrome://remote/content/shared/Addon.sys.mjs');
|
||||
'chrome://remote/content/shared/AppInfo.sys.mjs': typeof import('chrome://remote/content/shared/AppInfo.sys.mjs');
|
||||
'chrome://remote/content/shared/AsyncQueue.sys.mjs': typeof import('chrome://remote/content/shared/AsyncQueue.sys.mjs');
|
||||
'chrome://remote/content/shared/Browser.sys.mjs': typeof import('chrome://remote/content/shared/Browser.sys.mjs');
|
||||
'chrome://remote/content/shared/Capture.sys.mjs': typeof import('chrome://remote/content/shared/Capture.sys.mjs');
|
||||
'chrome://remote/content/shared/ChallengeHeaderParser.sys.mjs': typeof import('chrome://remote/content/shared/ChallengeHeaderParser.sys.mjs');
|
||||
'chrome://remote/content/shared/DOM.sys.mjs': typeof import('chrome://remote/content/shared/DOM.sys.mjs');
|
||||
'chrome://remote/content/shared/Format.sys.mjs': typeof import('chrome://remote/content/shared/Format.sys.mjs');
|
||||
'chrome://remote/content/shared/Log.sys.mjs': typeof import('chrome://remote/content/shared/Log.sys.mjs');
|
||||
'chrome://remote/content/shared/MobileTabBrowser.sys.mjs': typeof import('chrome://remote/content/shared/MobileTabBrowser.sys.mjs');
|
||||
'chrome://remote/content/shared/Navigate.sys.mjs': typeof import('chrome://remote/content/shared/Navigate.sys.mjs');
|
||||
'chrome://remote/content/shared/NavigationManager.sys.mjs': typeof import('chrome://remote/content/shared/NavigationManager.sys.mjs');
|
||||
'chrome://remote/content/shared/NetworkCacheManager.sys.mjs': typeof import('chrome://remote/content/shared/NetworkCacheManager.sys.mjs');
|
||||
'chrome://remote/content/shared/NetworkDecodedBodySizeMap.sys.mjs': typeof import('chrome://remote/content/shared/NetworkDecodedBodySizeMap.sys.mjs');
|
||||
'chrome://remote/content/shared/NetworkRequest.sys.mjs': typeof import('chrome://remote/content/shared/NetworkRequest.sys.mjs');
|
||||
'chrome://remote/content/shared/NetworkResponse.sys.mjs': typeof import('chrome://remote/content/shared/NetworkResponse.sys.mjs');
|
||||
'chrome://remote/content/shared/PDF.sys.mjs': typeof import('chrome://remote/content/shared/PDF.sys.mjs');
|
||||
'chrome://remote/content/shared/Permissions.sys.mjs': typeof import('chrome://remote/content/shared/Permissions.sys.mjs');
|
||||
'chrome://remote/content/shared/Prompt.sys.mjs': typeof import('chrome://remote/content/shared/Prompt.sys.mjs');
|
||||
'chrome://remote/content/shared/Realm.sys.mjs': typeof import('chrome://remote/content/shared/Realm.sys.mjs');
|
||||
'chrome://remote/content/shared/RecommendedPreferences.sys.mjs': typeof import('chrome://remote/content/shared/RecommendedPreferences.sys.mjs');
|
||||
'chrome://remote/content/shared/Stack.sys.mjs': typeof import('chrome://remote/content/shared/Stack.sys.mjs');
|
||||
'chrome://remote/content/shared/Sync.sys.mjs': typeof import('chrome://remote/content/shared/Sync.sys.mjs');
|
||||
'chrome://remote/content/shared/TabManager.sys.mjs': typeof import('chrome://remote/content/shared/TabManager.sys.mjs');
|
||||
'chrome://remote/content/shared/UUID.sys.mjs': typeof import('chrome://remote/content/shared/UUID.sys.mjs');
|
||||
'chrome://remote/content/shared/UserContextManager.sys.mjs': typeof import('chrome://remote/content/shared/UserContextManager.sys.mjs');
|
||||
'chrome://remote/content/shared/WindowManager.sys.mjs': typeof import('chrome://remote/content/shared/WindowManager.sys.mjs');
|
||||
'chrome://remote/content/shared/js-window-actors/NavigationListenerActor.sys.mjs': typeof import('chrome://remote/content/shared/js-window-actors/NavigationListenerActor.sys.mjs');
|
||||
'chrome://remote/content/shared/listeners/BeforeStopRequestListener.sys.mjs': typeof import('chrome://remote/content/shared/listeners/BeforeStopRequestListener.sys.mjs');
|
||||
'chrome://remote/content/shared/listeners/BrowsingContextListener.sys.mjs': typeof import('chrome://remote/content/shared/listeners/BrowsingContextListener.sys.mjs');
|
||||
'chrome://remote/content/shared/listeners/CachedResourceListener.sys.mjs': typeof import('chrome://remote/content/shared/listeners/CachedResourceListener.sys.mjs');
|
||||
'chrome://remote/content/shared/listeners/ConsoleAPIListener.sys.mjs': typeof import('chrome://remote/content/shared/listeners/ConsoleAPIListener.sys.mjs');
|
||||
'chrome://remote/content/shared/listeners/ConsoleListener.sys.mjs': typeof import('chrome://remote/content/shared/listeners/ConsoleListener.sys.mjs');
|
||||
'chrome://remote/content/shared/listeners/ContextualIdentityListener.sys.mjs': typeof import('chrome://remote/content/shared/listeners/ContextualIdentityListener.sys.mjs');
|
||||
'chrome://remote/content/shared/listeners/LoadListener.sys.mjs': typeof import('chrome://remote/content/shared/listeners/LoadListener.sys.mjs');
|
||||
'chrome://remote/content/shared/listeners/NavigationListener.sys.mjs': typeof import('chrome://remote/content/shared/listeners/NavigationListener.sys.mjs');
|
||||
'chrome://remote/content/shared/listeners/NetworkEventRecord.sys.mjs': typeof import('chrome://remote/content/shared/listeners/NetworkEventRecord.sys.mjs');
|
||||
'chrome://remote/content/shared/listeners/NetworkListener.sys.mjs': typeof import('chrome://remote/content/shared/listeners/NetworkListener.sys.mjs');
|
||||
'chrome://remote/content/shared/listeners/PromptListener.sys.mjs': typeof import('chrome://remote/content/shared/listeners/PromptListener.sys.mjs');
|
||||
'chrome://remote/content/shared/messagehandler/Errors.sys.mjs': typeof import('chrome://remote/content/shared/messagehandler/Errors.sys.mjs');
|
||||
'chrome://remote/content/shared/messagehandler/EventsDispatcher.sys.mjs': typeof import('chrome://remote/content/shared/messagehandler/EventsDispatcher.sys.mjs');
|
||||
'chrome://remote/content/shared/messagehandler/MessageHandler.sys.mjs': typeof import('chrome://remote/content/shared/messagehandler/MessageHandler.sys.mjs');
|
||||
'chrome://remote/content/shared/messagehandler/MessageHandlerRegistry.sys.mjs': typeof import('chrome://remote/content/shared/messagehandler/MessageHandlerRegistry.sys.mjs');
|
||||
'chrome://remote/content/shared/messagehandler/ModuleCache.sys.mjs': typeof import('chrome://remote/content/shared/messagehandler/ModuleCache.sys.mjs');
|
||||
'chrome://remote/content/shared/messagehandler/RootMessageHandler.sys.mjs': typeof import('chrome://remote/content/shared/messagehandler/RootMessageHandler.sys.mjs');
|
||||
'chrome://remote/content/shared/messagehandler/RootMessageHandlerRegistry.sys.mjs': typeof import('chrome://remote/content/shared/messagehandler/RootMessageHandlerRegistry.sys.mjs');
|
||||
'chrome://remote/content/shared/messagehandler/WindowGlobalMessageHandler.sys.mjs': typeof import('chrome://remote/content/shared/messagehandler/WindowGlobalMessageHandler.sys.mjs');
|
||||
'chrome://remote/content/shared/messagehandler/sessiondata/SessionData.sys.mjs': typeof import('chrome://remote/content/shared/messagehandler/sessiondata/SessionData.sys.mjs');
|
||||
'chrome://remote/content/shared/messagehandler/sessiondata/SessionDataReader.sys.mjs': typeof import('chrome://remote/content/shared/messagehandler/sessiondata/SessionDataReader.sys.mjs');
|
||||
'chrome://remote/content/shared/messagehandler/transports/BrowsingContextUtils.sys.mjs': typeof import('chrome://remote/content/shared/messagehandler/transports/BrowsingContextUtils.sys.mjs');
|
||||
'chrome://remote/content/shared/messagehandler/transports/RootTransport.sys.mjs': typeof import('chrome://remote/content/shared/messagehandler/transports/RootTransport.sys.mjs');
|
||||
'chrome://remote/content/shared/messagehandler/transports/js-window-actors/MessageHandlerFrameActor.sys.mjs': typeof import('chrome://remote/content/shared/messagehandler/transports/js-window-actors/MessageHandlerFrameActor.sys.mjs');
|
||||
'chrome://remote/content/shared/messagehandler/transports/js-window-actors/MessageHandlerFrameChild.sys.mjs': typeof import('chrome://remote/content/shared/messagehandler/transports/js-window-actors/MessageHandlerFrameChild.sys.mjs');
|
||||
'chrome://remote/content/shared/webdriver/Accessibility.sys.mjs': typeof import('chrome://remote/content/shared/webdriver/Accessibility.sys.mjs');
|
||||
'chrome://remote/content/shared/webdriver/Actions.sys.mjs': typeof import('chrome://remote/content/shared/webdriver/Actions.sys.mjs');
|
||||
'chrome://remote/content/shared/webdriver/Assert.sys.mjs': typeof import('chrome://remote/content/shared/webdriver/Assert.sys.mjs');
|
||||
'chrome://remote/content/shared/webdriver/Capabilities.sys.mjs': typeof import('chrome://remote/content/shared/webdriver/Capabilities.sys.mjs');
|
||||
'chrome://remote/content/shared/webdriver/Errors.sys.mjs': typeof import('chrome://remote/content/shared/webdriver/Errors.sys.mjs');
|
||||
'chrome://remote/content/shared/webdriver/Event.sys.mjs': typeof import('chrome://remote/content/shared/webdriver/Event.sys.mjs');
|
||||
'chrome://remote/content/shared/webdriver/KeyData.sys.mjs': typeof import('chrome://remote/content/shared/webdriver/KeyData.sys.mjs');
|
||||
'chrome://remote/content/shared/webdriver/NodeCache.sys.mjs': typeof import('chrome://remote/content/shared/webdriver/NodeCache.sys.mjs');
|
||||
'chrome://remote/content/shared/webdriver/Session.sys.mjs': typeof import('chrome://remote/content/shared/webdriver/Session.sys.mjs');
|
||||
'chrome://remote/content/shared/webdriver/URLPattern.sys.mjs': typeof import('chrome://remote/content/shared/webdriver/URLPattern.sys.mjs');
|
||||
'chrome://remote/content/shared/webdriver/UserPromptHandler.sys.mjs': typeof import('chrome://remote/content/shared/webdriver/UserPromptHandler.sys.mjs');
|
||||
'chrome://remote/content/shared/webdriver/process-actors/WebDriverProcessDataParent.sys.mjs': typeof import('chrome://remote/content/shared/webdriver/process-actors/WebDriverProcessDataParent.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/NewSessionHandler.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/NewSessionHandler.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/RemoteValue.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/RemoteValue.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/WebDriverBiDi.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/WebDriverBiDi.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/WebDriverBiDiConnection.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/Intercept.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/Intercept.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/ModuleRegistry.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/ModuleRegistry.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/root/browser.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/root/browser.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/root/browsingContext.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/root/browsingContext.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/root/input.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/root/input.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/root/log.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/root/log.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/root/network.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/root/network.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/root/permissions.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/root/permissions.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/root/script.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/root/script.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/root/session.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/root/session.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/root/storage.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/root/storage.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/root/webExtension.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/root/webExtension.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/windowglobal-in-root/browsingContext.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/windowglobal-in-root/browsingContext.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/windowglobal-in-root/log.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/windowglobal-in-root/log.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/windowglobal-in-root/network.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/windowglobal-in-root/network.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/windowglobal-in-root/script.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/windowglobal-in-root/script.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/windowglobal/_configuration.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/windowglobal/_configuration.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/windowglobal/browsingContext.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/windowglobal/browsingContext.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/windowglobal/input.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/windowglobal/input.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/windowglobal/log.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/windowglobal/log.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/windowglobal/network.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/windowglobal/network.sys.mjs');
|
||||
'chrome://remote/content/webdriver-bidi/modules/windowglobal/script.sys.mjs': typeof import('chrome://remote/content/webdriver-bidi/modules/windowglobal/script.sys.mjs');
|
||||
'moz-src:///browser/components/search/BrowserSearchTelemetry.sys.mjs': typeof import('moz-src:///browser/components/search/BrowserSearchTelemetry.sys.mjs');
|
||||
'moz-src:///browser/components/search/OpenSearchManager.sys.mjs': typeof import('moz-src:///browser/components/search/OpenSearchManager.sys.mjs');
|
||||
'moz-src:///browser/components/search/SERPCategorization.sys.mjs': typeof import('moz-src:///browser/components/search/SERPCategorization.sys.mjs');
|
||||
'moz-src:///browser/components/search/SearchOneOffs.sys.mjs': typeof import('moz-src:///browser/components/search/SearchOneOffs.sys.mjs');
|
||||
'moz-src:///browser/components/search/SearchSERPTelemetry.sys.mjs': typeof import('moz-src:///browser/components/search/SearchSERPTelemetry.sys.mjs');
|
||||
'moz-src:///browser/components/search/SearchUIUtils.sys.mjs': typeof import('moz-src:///browser/components/search/SearchUIUtils.sys.mjs');
|
||||
'moz-src:///browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs': typeof import('moz-src:///browser/components/tabbrowser/AsyncTabSwitcher.sys.mjs');
|
||||
'moz-src:///browser/components/tabbrowser/GroupsList.sys.mjs': typeof import('moz-src:///browser/components/tabbrowser/GroupsList.sys.mjs');
|
||||
'moz-src:///browser/components/tabbrowser/NewTabPagePreloading.sys.mjs': typeof import('moz-src:///browser/components/tabbrowser/NewTabPagePreloading.sys.mjs');
|
||||
'moz-src:///browser/components/tabbrowser/OpenInTabsUtils.sys.mjs': typeof import('moz-src:///browser/components/tabbrowser/OpenInTabsUtils.sys.mjs');
|
||||
'moz-src:///browser/components/tabbrowser/SmartTabGrouping.sys.mjs': typeof import('moz-src:///browser/components/tabbrowser/SmartTabGrouping.sys.mjs');
|
||||
'moz-src:///browser/components/tabbrowser/TabsList.sys.mjs': typeof import('moz-src:///browser/components/tabbrowser/TabsList.sys.mjs');
|
||||
'moz-src:///toolkit/components/reader/AboutReader.sys.mjs': typeof import('moz-src:///toolkit/components/reader/AboutReader.sys.mjs');
|
||||
'moz-src:///toolkit/components/reader/ReaderMode.sys.mjs': typeof import('moz-src:///toolkit/components/reader/ReaderMode.sys.mjs');
|
||||
'moz-src:///toolkit/components/reader/ReaderWorker.sys.mjs': typeof import('moz-src:///toolkit/components/reader/ReaderWorker.sys.mjs');
|
||||
'resource:///actors/AboutNewTabParent.sys.mjs': typeof import('resource:///actors/AboutNewTabParent.sys.mjs');
|
||||
'resource:///actors/AboutReaderParent.sys.mjs': typeof import('resource:///actors/AboutReaderParent.sys.mjs');
|
||||
'resource:///actors/AboutWelcomeParent.sys.mjs': typeof import('resource:///actors/AboutWelcomeParent.sys.mjs');
|
||||
'resource:///actors/ClickHandlerParent.sys.mjs': typeof import('resource:///actors/ClickHandlerParent.sys.mjs');
|
||||
'resource:///actors/ContentSearchParent.sys.mjs': typeof import('resource:///actors/ContentSearchParent.sys.mjs');
|
||||
'resource:///actors/ContextMenuChild.sys.mjs': typeof import('resource:///actors/ContextMenuChild.sys.mjs');
|
||||
'resource:///actors/LinkHandlerParent.sys.mjs': typeof import('resource:///actors/LinkHandlerParent.sys.mjs');
|
||||
'resource:///actors/PluginParent.sys.mjs': typeof import('resource:///actors/PluginParent.sys.mjs');
|
||||
'resource:///actors/SearchSERPTelemetryChild.sys.mjs': typeof import('resource:///actors/SearchSERPTelemetryChild.sys.mjs');
|
||||
'resource:///actors/ShoppingSidebarParent.sys.mjs': typeof import('resource:///actors/ShoppingSidebarParent.sys.mjs');
|
||||
'resource:///actors/WebRTCChild.sys.mjs': typeof import('resource:///actors/WebRTCChild.sys.mjs');
|
||||
'resource:///modules/360seMigrationUtils.sys.mjs': typeof import('resource:///modules/360seMigrationUtils.sys.mjs');
|
||||
'resource:///modules/AboutHomeStartupCache.sys.mjs': typeof import('resource:///modules/AboutHomeStartupCache.sys.mjs');
|
||||
'resource:///modules/AboutNewTab.sys.mjs': typeof import('resource:///modules/AboutNewTab.sys.mjs');
|
||||
'resource:///modules/AboutNewTabRedirector.sys.mjs': typeof import('resource:///modules/AboutNewTabRedirector.sys.mjs');
|
||||
'resource:///modules/ActionsProviderContextualSearch.sys.mjs': typeof import('resource:///modules/ActionsProviderContextualSearch.sys.mjs');
|
||||
'resource:///modules/ActionsProviderQuickActions.sys.mjs': typeof import('resource:///modules/ActionsProviderQuickActions.sys.mjs');
|
||||
'resource:///modules/AttributionCode.sys.mjs': typeof import('resource:///modules/AttributionCode.sys.mjs');
|
||||
'resource:///modules/BrowserGlue.sys.mjs': typeof import('resource:///modules/BrowserGlue.sys.mjs');
|
||||
'resource:///modules/BrowserUIUtils.sys.mjs': typeof import('resource:///modules/BrowserUIUtils.sys.mjs');
|
||||
'resource:///modules/BrowserUsageTelemetry.sys.mjs': typeof import('resource:///modules/BrowserUsageTelemetry.sys.mjs');
|
||||
'resource:///modules/BrowserWindowTracker.sys.mjs': typeof import('resource:///modules/BrowserWindowTracker.sys.mjs');
|
||||
'resource:///modules/BuiltInThemeConfig.sys.mjs': typeof import('resource:///modules/BuiltInThemeConfig.sys.mjs');
|
||||
'resource:///modules/BuiltInThemes.sys.mjs': typeof import('resource:///modules/BuiltInThemes.sys.mjs');
|
||||
'resource:///modules/ChromeMigrationUtils.sys.mjs': typeof import('resource:///modules/ChromeMigrationUtils.sys.mjs');
|
||||
'resource:///modules/ContentAnalysis.sys.mjs': typeof import('resource:///modules/ContentAnalysis.sys.mjs');
|
||||
'resource:///modules/ContentCrashHandlers.sys.mjs': typeof import('resource:///modules/ContentCrashHandlers.sys.mjs');
|
||||
'resource:///modules/CustomizableUI.sys.mjs': typeof import('resource:///modules/CustomizableUI.sys.mjs');
|
||||
'resource:///modules/CustomizableWidgets.sys.mjs': typeof import('resource:///modules/CustomizableWidgets.sys.mjs');
|
||||
'resource:///modules/Discovery.sys.mjs': typeof import('resource:///modules/Discovery.sys.mjs');
|
||||
'resource:///modules/DoHConfig.sys.mjs': typeof import('resource:///modules/DoHConfig.sys.mjs');
|
||||
'resource:///modules/DoHController.sys.mjs': typeof import('resource:///modules/DoHController.sys.mjs');
|
||||
'resource:///modules/DoHHeuristics.sys.mjs': typeof import('resource:///modules/DoHHeuristics.sys.mjs');
|
||||
'resource:///modules/DownloadSpamProtection.sys.mjs': typeof import('resource:///modules/DownloadSpamProtection.sys.mjs');
|
||||
'resource:///modules/DownloadsCommon.sys.mjs': typeof import('resource:///modules/DownloadsCommon.sys.mjs');
|
||||
'resource:///modules/DownloadsViewUI.sys.mjs': typeof import('resource:///modules/DownloadsViewUI.sys.mjs');
|
||||
'resource:///modules/DownloadsViewableInternally.sys.mjs': typeof import('resource:///modules/DownloadsViewableInternally.sys.mjs');
|
||||
'resource:///modules/DragPositionManager.sys.mjs': typeof import('resource:///modules/DragPositionManager.sys.mjs');
|
||||
'resource:///modules/ESEDBReader.sys.mjs': typeof import('resource:///modules/ESEDBReader.sys.mjs');
|
||||
'resource:///modules/EveryWindow.sys.mjs': typeof import('resource:///modules/EveryWindow.sys.mjs');
|
||||
'resource:///modules/ExtensionBrowsingData.sys.mjs': typeof import('resource:///modules/ExtensionBrowsingData.sys.mjs');
|
||||
'resource:///modules/ExtensionControlledPopup.sys.mjs': typeof import('resource:///modules/ExtensionControlledPopup.sys.mjs');
|
||||
'resource:///modules/ExtensionPopups.sys.mjs': typeof import('resource:///modules/ExtensionPopups.sys.mjs');
|
||||
'resource:///modules/ExtensionsUI.sys.mjs': typeof import('resource:///modules/ExtensionsUI.sys.mjs');
|
||||
'resource:///modules/FaviconLoader.sys.mjs': typeof import('resource:///modules/FaviconLoader.sys.mjs');
|
||||
'resource:///modules/FileMigrators.sys.mjs': typeof import('resource:///modules/FileMigrators.sys.mjs');
|
||||
'resource:///modules/FilePickerCrashed.sys.mjs': typeof import('resource:///modules/FilePickerCrashed.sys.mjs');
|
||||
'resource:///modules/FilterAdult.sys.mjs': typeof import('resource:///modules/FilterAdult.sys.mjs');
|
||||
'resource:///modules/FirefoxBridgeExtensionUtils.sys.mjs': typeof import('resource:///modules/FirefoxBridgeExtensionUtils.sys.mjs');
|
||||
'resource:///modules/FirefoxProfileMigrator.sys.mjs': typeof import('resource:///modules/FirefoxProfileMigrator.sys.mjs');
|
||||
'resource:///modules/GenAI.sys.mjs': typeof import('resource:///modules/GenAI.sys.mjs');
|
||||
'resource:///modules/HeadlessShell.sys.mjs': typeof import('resource:///modules/HeadlessShell.sys.mjs');
|
||||
'resource:///modules/HistoryController.sys.mjs': typeof import('resource:///modules/HistoryController.sys.mjs');
|
||||
'resource:///modules/HomePage.sys.mjs': typeof import('resource:///modules/HomePage.sys.mjs');
|
||||
'resource:///modules/Interactions.sys.mjs': typeof import('resource:///modules/Interactions.sys.mjs');
|
||||
'resource:///modules/InteractionsBlocklist.sys.mjs': typeof import('resource:///modules/InteractionsBlocklist.sys.mjs');
|
||||
'resource:///modules/InternalTestingProfileMigrator.sys.mjs': typeof import('resource:///modules/InternalTestingProfileMigrator.sys.mjs');
|
||||
'resource:///modules/LaterRun.sys.mjs': typeof import('resource:///modules/LaterRun.sys.mjs');
|
||||
'resource:///modules/LinksCache.sys.mjs': typeof import('resource:///modules/LinksCache.sys.mjs');
|
||||
'resource:///modules/LoginBreaches.sys.mjs': typeof import('resource:///modules/LoginBreaches.sys.mjs');
|
||||
'resource:///modules/MacAttribution.sys.mjs': typeof import('resource:///modules/MacAttribution.sys.mjs');
|
||||
'resource:///modules/MerinoClient.sys.mjs': typeof import('resource:///modules/MerinoClient.sys.mjs');
|
||||
'resource:///modules/MigrationUtils.sys.mjs': typeof import('resource:///modules/MigrationUtils.sys.mjs');
|
||||
'resource:///modules/OpenTabs.sys.mjs': typeof import('resource:///modules/OpenTabs.sys.mjs');
|
||||
'resource:///modules/PageActions.sys.mjs': typeof import('resource:///modules/PageActions.sys.mjs');
|
||||
'resource:///modules/PanelMultiView.sys.mjs': typeof import('resource:///modules/PanelMultiView.sys.mjs');
|
||||
'resource:///modules/PartnerLinkAttribution.sys.mjs': typeof import('resource:///modules/PartnerLinkAttribution.sys.mjs');
|
||||
'resource:///modules/PermissionUI.sys.mjs': typeof import('resource:///modules/PermissionUI.sys.mjs');
|
||||
'resource:///modules/PlacesUIUtils.sys.mjs': typeof import('resource:///modules/PlacesUIUtils.sys.mjs');
|
||||
'resource:///modules/PopupBlockerObserver.sys.mjs': typeof import('resource:///modules/PopupBlockerObserver.sys.mjs');
|
||||
'resource:///modules/ProcessHangMonitor.sys.mjs': typeof import('resource:///modules/ProcessHangMonitor.sys.mjs');
|
||||
'resource:///modules/QuickActionsLoaderDefault.sys.mjs': typeof import('resource:///modules/QuickActionsLoaderDefault.sys.mjs');
|
||||
'resource:///modules/QuickSuggest.sys.mjs': typeof import('resource:///modules/QuickSuggest.sys.mjs');
|
||||
'resource:///modules/ReportBrokenSite.sys.mjs': typeof import('resource:///modules/ReportBrokenSite.sys.mjs');
|
||||
'resource:///modules/ResetPBMPanel.sys.mjs': typeof import('resource:///modules/ResetPBMPanel.sys.mjs');
|
||||
'resource:///modules/ReviewCheckerManager.sys.mjs': typeof import('resource:///modules/ReviewCheckerManager.sys.mjs');
|
||||
'resource:///modules/SafariProfileMigrator.sys.mjs': typeof import('resource:///modules/SafariProfileMigrator.sys.mjs');
|
||||
'resource:///modules/Sanitizer.sys.mjs': typeof import('resource:///modules/Sanitizer.sys.mjs');
|
||||
'resource:///modules/ScreenshotsOverlayChild.sys.mjs': typeof import('resource:///modules/ScreenshotsOverlayChild.sys.mjs');
|
||||
'resource:///modules/ScreenshotsUtils.sys.mjs': typeof import('resource:///modules/ScreenshotsUtils.sys.mjs');
|
||||
'resource:///modules/SearchModeSwitcher.sys.mjs': typeof import('resource:///modules/SearchModeSwitcher.sys.mjs');
|
||||
'resource:///modules/SelectionChangedMenulist.sys.mjs': typeof import('resource:///modules/SelectionChangedMenulist.sys.mjs');
|
||||
'resource:///modules/ShellService.sys.mjs': typeof import('resource:///modules/ShellService.sys.mjs');
|
||||
'resource:///modules/ShoppingUtils.sys.mjs': typeof import('resource:///modules/ShoppingUtils.sys.mjs');
|
||||
'resource:///modules/SidebarManager.sys.mjs': typeof import('resource:///modules/SidebarManager.sys.mjs');
|
||||
'resource:///modules/SidebarState.sys.mjs': typeof import('resource:///modules/SidebarState.sys.mjs');
|
||||
'resource:///modules/SiteDataManager.sys.mjs': typeof import('resource:///modules/SiteDataManager.sys.mjs');
|
||||
'resource:///modules/SitePermissions.sys.mjs': typeof import('resource:///modules/SitePermissions.sys.mjs');
|
||||
'resource:///modules/SyncedTabsController.sys.mjs': typeof import('resource:///modules/SyncedTabsController.sys.mjs');
|
||||
'resource:///modules/TRRPerformance.sys.mjs': typeof import('resource:///modules/TRRPerformance.sys.mjs');
|
||||
'resource:///modules/TaskbarTabUI.sys.mjs': typeof import('resource:///modules/TaskbarTabUI.sys.mjs');
|
||||
'resource:///modules/ThemeVariableMap.sys.mjs': typeof import('resource:///modules/ThemeVariableMap.sys.mjs');
|
||||
'resource:///modules/ToolbarContextMenu.sys.mjs': typeof import('resource:///modules/ToolbarContextMenu.sys.mjs');
|
||||
'resource:///modules/TransientPrefs.sys.mjs': typeof import('resource:///modules/TransientPrefs.sys.mjs');
|
||||
'resource:///modules/UITour.sys.mjs': typeof import('resource:///modules/UITour.sys.mjs');
|
||||
'resource:///modules/URILoadingHelper.sys.mjs': typeof import('resource:///modules/URILoadingHelper.sys.mjs');
|
||||
'resource:///modules/UrlbarController.sys.mjs': typeof import('resource:///modules/UrlbarController.sys.mjs');
|
||||
'resource:///modules/UrlbarEventBufferer.sys.mjs': typeof import('resource:///modules/UrlbarEventBufferer.sys.mjs');
|
||||
'resource:///modules/UrlbarInput.sys.mjs': typeof import('resource:///modules/UrlbarInput.sys.mjs');
|
||||
'resource:///modules/UrlbarPrefs.sys.mjs': typeof import('resource:///modules/UrlbarPrefs.sys.mjs');
|
||||
'resource:///modules/UrlbarProviderAutofill.sys.mjs': typeof import('resource:///modules/UrlbarProviderAutofill.sys.mjs');
|
||||
'resource:///modules/UrlbarProviderCalculator.sys.mjs': typeof import('resource:///modules/UrlbarProviderCalculator.sys.mjs');
|
||||
'resource:///modules/UrlbarProviderClipboard.sys.mjs': typeof import('resource:///modules/UrlbarProviderClipboard.sys.mjs');
|
||||
'resource:///modules/UrlbarProviderGlobalActions.sys.mjs': typeof import('resource:///modules/UrlbarProviderGlobalActions.sys.mjs');
|
||||
'resource:///modules/UrlbarProviderInterventions.sys.mjs': typeof import('resource:///modules/UrlbarProviderInterventions.sys.mjs');
|
||||
'resource:///modules/UrlbarProviderOpenTabs.sys.mjs': typeof import('resource:///modules/UrlbarProviderOpenTabs.sys.mjs');
|
||||
'resource:///modules/UrlbarProviderPlaces.sys.mjs': typeof import('resource:///modules/UrlbarProviderPlaces.sys.mjs');
|
||||
'resource:///modules/UrlbarProviderQuickSuggest.sys.mjs': typeof import('resource:///modules/UrlbarProviderQuickSuggest.sys.mjs');
|
||||
'resource:///modules/UrlbarProviderQuickSuggestContextualOptIn.sys.mjs': typeof import('resource:///modules/UrlbarProviderQuickSuggestContextualOptIn.sys.mjs');
|
||||
'resource:///modules/UrlbarProviderRecentSearches.sys.mjs': typeof import('resource:///modules/UrlbarProviderRecentSearches.sys.mjs');
|
||||
'resource:///modules/UrlbarProviderSearchSuggestions.sys.mjs': typeof import('resource:///modules/UrlbarProviderSearchSuggestions.sys.mjs');
|
||||
'resource:///modules/UrlbarProviderSearchTips.sys.mjs': typeof import('resource:///modules/UrlbarProviderSearchTips.sys.mjs');
|
||||
'resource:///modules/UrlbarProviderTabToSearch.sys.mjs': typeof import('resource:///modules/UrlbarProviderTabToSearch.sys.mjs');
|
||||
'resource:///modules/UrlbarProviderTopSites.sys.mjs': typeof import('resource:///modules/UrlbarProviderTopSites.sys.mjs');
|
||||
'resource:///modules/UrlbarProviderUnitConversion.sys.mjs': typeof import('resource:///modules/UrlbarProviderUnitConversion.sys.mjs');
|
||||
'resource:///modules/UrlbarProvidersManager.sys.mjs': typeof import('resource:///modules/UrlbarProvidersManager.sys.mjs');
|
||||
'resource:///modules/UrlbarResult.sys.mjs': typeof import('resource:///modules/UrlbarResult.sys.mjs');
|
||||
'resource:///modules/UrlbarSearchOneOffs.sys.mjs': typeof import('resource:///modules/UrlbarSearchOneOffs.sys.mjs');
|
||||
'resource:///modules/UrlbarSearchTermsPersistence.sys.mjs': typeof import('resource:///modules/UrlbarSearchTermsPersistence.sys.mjs');
|
||||
'resource:///modules/UrlbarSearchUtils.sys.mjs': typeof import('resource:///modules/UrlbarSearchUtils.sys.mjs');
|
||||
'resource:///modules/UrlbarTokenizer.sys.mjs': typeof import('resource:///modules/UrlbarTokenizer.sys.mjs');
|
||||
'resource:///modules/UrlbarUtils.sys.mjs': typeof import('resource:///modules/UrlbarUtils.sys.mjs');
|
||||
'resource:///modules/UrlbarValueFormatter.sys.mjs': typeof import('resource:///modules/UrlbarValueFormatter.sys.mjs');
|
||||
'resource:///modules/UrlbarView.sys.mjs': typeof import('resource:///modules/UrlbarView.sys.mjs');
|
||||
'resource:///modules/WebProtocolHandlerRegistrar.sys.mjs': typeof import('resource:///modules/WebProtocolHandlerRegistrar.sys.mjs');
|
||||
'resource:///modules/ZoomUI.sys.mjs': typeof import('resource:///modules/ZoomUI.sys.mjs');
|
||||
'resource:///modules/aboutwelcome/AWScreenUtils.sys.mjs': typeof import('resource:///modules/aboutwelcome/AWScreenUtils.sys.mjs');
|
||||
'resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs': typeof import('resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs');
|
||||
'resource:///modules/aboutwelcome/AboutWelcomeDefaults.sys.mjs': typeof import('resource:///modules/aboutwelcome/AboutWelcomeDefaults.sys.mjs');
|
||||
'resource:///modules/aboutwelcome/AboutWelcomeTelemetry.sys.mjs': typeof import('resource:///modules/aboutwelcome/AboutWelcomeTelemetry.sys.mjs');
|
||||
'resource:///modules/asrouter/ASRouter.sys.mjs': typeof import('resource:///modules/asrouter/ASRouter.sys.mjs');
|
||||
'resource:///modules/asrouter/ASRouterDefaultConfig.sys.mjs': typeof import('resource:///modules/asrouter/ASRouterDefaultConfig.sys.mjs');
|
||||
'resource:///modules/asrouter/ASRouterNewTabHook.sys.mjs': typeof import('resource:///modules/asrouter/ASRouterNewTabHook.sys.mjs');
|
||||
'resource:///modules/asrouter/ASRouterPreferences.sys.mjs': typeof import('resource:///modules/asrouter/ASRouterPreferences.sys.mjs');
|
||||
'resource:///modules/asrouter/ASRouterStorage.sys.mjs': typeof import('resource:///modules/asrouter/ASRouterStorage.sys.mjs');
|
||||
'resource:///modules/asrouter/ASRouterTargeting.sys.mjs': typeof import('resource:///modules/asrouter/ASRouterTargeting.sys.mjs');
|
||||
'resource:///modules/asrouter/ASRouterTriggerListeners.sys.mjs': typeof import('resource:///modules/asrouter/ASRouterTriggerListeners.sys.mjs');
|
||||
'resource:///modules/asrouter/ActorConstants.mjs': typeof import('resource:///modules/asrouter/ActorConstants.mjs');
|
||||
'resource:///modules/asrouter/BookmarksBarButton.sys.mjs': typeof import('resource:///modules/asrouter/BookmarksBarButton.sys.mjs');
|
||||
'resource:///modules/asrouter/CFRMessageProvider.sys.mjs': typeof import('resource:///modules/asrouter/CFRMessageProvider.sys.mjs');
|
||||
'resource:///modules/asrouter/CFRPageActions.sys.mjs': typeof import('resource:///modules/asrouter/CFRPageActions.sys.mjs');
|
||||
'resource:///modules/asrouter/FeatureCallout.sys.mjs': typeof import('resource:///modules/asrouter/FeatureCallout.sys.mjs');
|
||||
'resource:///modules/asrouter/FeatureCalloutBroker.sys.mjs': typeof import('resource:///modules/asrouter/FeatureCalloutBroker.sys.mjs');
|
||||
'resource:///modules/asrouter/FeatureCalloutMessages.sys.mjs': typeof import('resource:///modules/asrouter/FeatureCalloutMessages.sys.mjs');
|
||||
'resource:///modules/asrouter/InfoBar.sys.mjs': typeof import('resource:///modules/asrouter/InfoBar.sys.mjs');
|
||||
'resource:///modules/asrouter/MenuMessage.sys.mjs': typeof import('resource:///modules/asrouter/MenuMessage.sys.mjs');
|
||||
'resource:///modules/asrouter/MomentsPageHub.sys.mjs': typeof import('resource:///modules/asrouter/MomentsPageHub.sys.mjs');
|
||||
'resource:///modules/asrouter/OnboardingMessageProvider.sys.mjs': typeof import('resource:///modules/asrouter/OnboardingMessageProvider.sys.mjs');
|
||||
'resource:///modules/asrouter/PageEventManager.sys.mjs': typeof import('resource:///modules/asrouter/PageEventManager.sys.mjs');
|
||||
'resource:///modules/asrouter/PanelTestProvider.sys.mjs': typeof import('resource:///modules/asrouter/PanelTestProvider.sys.mjs');
|
||||
'resource:///modules/asrouter/RemoteL10n.sys.mjs': typeof import('resource:///modules/asrouter/RemoteL10n.sys.mjs');
|
||||
'resource:///modules/asrouter/Spotlight.sys.mjs': typeof import('resource:///modules/asrouter/Spotlight.sys.mjs');
|
||||
'resource:///modules/asrouter/ToastNotification.sys.mjs': typeof import('resource:///modules/asrouter/ToastNotification.sys.mjs');
|
||||
'resource:///modules/asrouter/ToolbarBadgeHub.sys.mjs': typeof import('resource:///modules/asrouter/ToolbarBadgeHub.sys.mjs');
|
||||
'resource:///modules/backup/ArchiveEncryption.sys.mjs': typeof import('resource:///modules/backup/ArchiveEncryption.sys.mjs');
|
||||
'resource:///modules/backup/ArchiveEncryptionState.sys.mjs': typeof import('resource:///modules/backup/ArchiveEncryptionState.sys.mjs');
|
||||
'resource:///modules/backup/ArchiveUtils.sys.mjs': typeof import('resource:///modules/backup/ArchiveUtils.sys.mjs');
|
||||
'resource:///modules/backup/BackupError.mjs': typeof import('resource:///modules/backup/BackupError.mjs');
|
||||
'resource:///modules/backup/BackupService.sys.mjs': typeof import('resource:///modules/backup/BackupService.sys.mjs');
|
||||
'resource:///modules/firefox-view-synced-tabs-error-handler.sys.mjs': typeof import('resource:///modules/firefox-view-synced-tabs-error-handler.sys.mjs');
|
||||
'resource:///modules/firefox-view-tabs-setup-manager.sys.mjs': typeof import('resource:///modules/firefox-view-tabs-setup-manager.sys.mjs');
|
||||
'resource:///modules/pagedata/OpenGraphPageData.sys.mjs': typeof import('resource:///modules/pagedata/OpenGraphPageData.sys.mjs');
|
||||
'resource:///modules/pagedata/PageDataSchema.sys.mjs': typeof import('resource:///modules/pagedata/PageDataSchema.sys.mjs');
|
||||
'resource:///modules/pagedata/PageDataService.sys.mjs': typeof import('resource:///modules/pagedata/PageDataService.sys.mjs');
|
||||
'resource:///modules/pagedata/SchemaOrgPageData.sys.mjs': typeof import('resource:///modules/pagedata/SchemaOrgPageData.sys.mjs');
|
||||
'resource:///modules/pagedata/TwitterPageData.sys.mjs': typeof import('resource:///modules/pagedata/TwitterPageData.sys.mjs');
|
||||
'resource:///modules/policies/BookmarksPolicies.sys.mjs': typeof import('resource:///modules/policies/BookmarksPolicies.sys.mjs');
|
||||
'resource:///modules/policies/Policies.sys.mjs': typeof import('resource:///modules/policies/Policies.sys.mjs');
|
||||
'resource:///modules/policies/ProxyPolicies.sys.mjs': typeof import('resource:///modules/policies/ProxyPolicies.sys.mjs');
|
||||
'resource:///modules/policies/WebsiteFilter.sys.mjs': typeof import('resource:///modules/policies/WebsiteFilter.sys.mjs');
|
||||
'resource:///modules/policies/schema.sys.mjs': typeof import('resource:///modules/policies/schema.sys.mjs');
|
||||
'resource:///modules/profiles/SelectableProfileService.sys.mjs': typeof import('resource:///modules/profiles/SelectableProfileService.sys.mjs');
|
||||
'resource:///modules/sessionstore/PageWireframes.sys.mjs': typeof import('resource:///modules/sessionstore/PageWireframes.sys.mjs');
|
||||
'resource:///modules/sessionstore/RecentlyClosedTabsAndWindowsMenuUtils.sys.mjs': typeof import('resource:///modules/sessionstore/RecentlyClosedTabsAndWindowsMenuUtils.sys.mjs');
|
||||
'resource:///modules/sessionstore/RunState.sys.mjs': typeof import('resource:///modules/sessionstore/RunState.sys.mjs');
|
||||
'resource:///modules/sessionstore/SessionCookies.sys.mjs': typeof import('resource:///modules/sessionstore/SessionCookies.sys.mjs');
|
||||
'resource:///modules/sessionstore/SessionFile.sys.mjs': typeof import('resource:///modules/sessionstore/SessionFile.sys.mjs');
|
||||
'resource:///modules/sessionstore/SessionLogger.sys.mjs': typeof import('resource:///modules/sessionstore/SessionLogger.sys.mjs');
|
||||
'resource:///modules/sessionstore/SessionMigration.sys.mjs': typeof import('resource:///modules/sessionstore/SessionMigration.sys.mjs');
|
||||
'resource:///modules/sessionstore/SessionSaver.sys.mjs': typeof import('resource:///modules/sessionstore/SessionSaver.sys.mjs');
|
||||
'resource:///modules/sessionstore/SessionStartup.sys.mjs': typeof import('resource:///modules/sessionstore/SessionStartup.sys.mjs');
|
||||
'resource:///modules/sessionstore/SessionStore.sys.mjs': typeof import('resource:///modules/sessionstore/SessionStore.sys.mjs');
|
||||
'resource:///modules/sessionstore/SessionWriter.sys.mjs': typeof import('resource:///modules/sessionstore/SessionWriter.sys.mjs');
|
||||
'resource:///modules/sessionstore/StartupPerformance.sys.mjs': typeof import('resource:///modules/sessionstore/StartupPerformance.sys.mjs');
|
||||
'resource:///modules/sessionstore/TabAttributes.sys.mjs': typeof import('resource:///modules/sessionstore/TabAttributes.sys.mjs');
|
||||
'resource:///modules/sessionstore/TabGroupState.sys.mjs': typeof import('resource:///modules/sessionstore/TabGroupState.sys.mjs');
|
||||
'resource:///modules/sessionstore/TabState.sys.mjs': typeof import('resource:///modules/sessionstore/TabState.sys.mjs');
|
||||
'resource:///modules/sessionstore/TabStateCache.sys.mjs': typeof import('resource:///modules/sessionstore/TabStateCache.sys.mjs');
|
||||
'resource:///modules/sessionstore/TabStateFlusher.sys.mjs': typeof import('resource:///modules/sessionstore/TabStateFlusher.sys.mjs');
|
||||
'resource:///modules/topsites/TippyTopProvider.sys.mjs': typeof import('resource:///modules/topsites/TippyTopProvider.sys.mjs');
|
||||
'resource:///modules/topsites/TopSites.sys.mjs': typeof import('resource:///modules/topsites/TopSites.sys.mjs');
|
||||
'resource:///modules/topsites/constants.mjs': typeof import('resource:///modules/topsites/constants.mjs');
|
||||
'resource:///modules/urlbar/private/AmpSuggestions.sys.mjs': typeof import('resource:///modules/urlbar/private/AmpSuggestions.sys.mjs');
|
||||
'resource:///modules/urlbar/private/GeolocationUtils.sys.mjs': typeof import('resource:///modules/urlbar/private/GeolocationUtils.sys.mjs');
|
||||
'resource:///modules/urlbar/private/MLSuggest.sys.mjs': typeof import('resource:///modules/urlbar/private/MLSuggest.sys.mjs');
|
||||
'resource:///modules/webrtcUI.sys.mjs': typeof import('resource:///modules/webrtcUI.sys.mjs');
|
||||
'resource://autofill/FormAutofill.sys.mjs': typeof import('resource://autofill/FormAutofill.sys.mjs');
|
||||
'resource://autofill/FormAutofillContent.sys.mjs': typeof import('resource://autofill/FormAutofillContent.sys.mjs');
|
||||
'resource://autofill/FormAutofillParent.sys.mjs': typeof import('resource://autofill/FormAutofillParent.sys.mjs');
|
||||
'resource://autofill/FormAutofillPreferences.sys.mjs': typeof import('resource://autofill/FormAutofillPreferences.sys.mjs');
|
||||
'resource://autofill/FormAutofillPrompter.sys.mjs': typeof import('resource://autofill/FormAutofillPrompter.sys.mjs');
|
||||
'resource://autofill/FormAutofillStorage.sys.mjs': typeof import('resource://autofill/FormAutofillStorage.sys.mjs');
|
||||
'resource://autofill/MLAutofill.sys.mjs': typeof import('resource://autofill/MLAutofill.sys.mjs');
|
||||
'resource://autofill/ProfileAutoCompleteResult.sys.mjs': typeof import('resource://autofill/ProfileAutoCompleteResult.sys.mjs');
|
||||
'resource://devtools/client/framework/browser-toolbox/Launcher.sys.mjs': typeof import('resource://devtools/client/framework/browser-toolbox/Launcher.sys.mjs');
|
||||
'resource://devtools/client/performance-new/popup/menu-button.sys.mjs': typeof import('resource://devtools/client/performance-new/popup/menu-button.sys.mjs');
|
||||
'resource://devtools/client/shared/components/reps/reps/rep-utils.mjs': typeof import('resource://devtools/client/shared/components/reps/reps/rep-utils.mjs');
|
||||
'resource://devtools/client/shared/focus.mjs': typeof import('resource://devtools/client/shared/focus.mjs');
|
||||
'resource://devtools/client/storage/VariablesView.sys.mjs': typeof import('resource://devtools/client/storage/VariablesView.sys.mjs');
|
||||
'resource://devtools/server/actors/targets/target-actor-registry.sys.mjs': typeof import('resource://devtools/server/actors/targets/target-actor-registry.sys.mjs');
|
||||
'resource://devtools/server/actors/watcher/SessionDataHelpers.sys.mjs': typeof import('resource://devtools/server/actors/watcher/SessionDataHelpers.sys.mjs');
|
||||
'resource://devtools/server/actors/watcher/browsing-context-helpers.sys.mjs': typeof import('resource://devtools/server/actors/watcher/browsing-context-helpers.sys.mjs');
|
||||
'resource://devtools/server/connectors/js-process-actor/target-watchers/content_script.sys.mjs': typeof import('resource://devtools/server/connectors/js-process-actor/target-watchers/content_script.sys.mjs');
|
||||
'resource://devtools/server/connectors/js-process-actor/target-watchers/process.sys.mjs': typeof import('resource://devtools/server/connectors/js-process-actor/target-watchers/process.sys.mjs');
|
||||
'resource://devtools/server/connectors/js-process-actor/target-watchers/service_worker.sys.mjs': typeof import('resource://devtools/server/connectors/js-process-actor/target-watchers/service_worker.sys.mjs');
|
||||
'resource://devtools/server/connectors/js-process-actor/target-watchers/shared_worker.sys.mjs': typeof import('resource://devtools/server/connectors/js-process-actor/target-watchers/shared_worker.sys.mjs');
|
||||
'resource://devtools/server/connectors/js-process-actor/target-watchers/window-global.sys.mjs': typeof import('resource://devtools/server/connectors/js-process-actor/target-watchers/window-global.sys.mjs');
|
||||
'resource://devtools/server/connectors/js-process-actor/target-watchers/worker.sys.mjs': typeof import('resource://devtools/server/connectors/js-process-actor/target-watchers/worker.sys.mjs');
|
||||
'resource://devtools/server/tracer/tracer.sys.mjs': typeof import('resource://devtools/server/tracer/tracer.sys.mjs');
|
||||
'resource://devtools/shared/DevToolsInfaillibleUtils.sys.mjs': typeof import('resource://devtools/shared/DevToolsInfaillibleUtils.sys.mjs');
|
||||
'resource://devtools/shared/highlighters.mjs': typeof import('resource://devtools/shared/highlighters.mjs');
|
||||
'resource://devtools/shared/loader/DistinctSystemPrincipalLoader.sys.mjs': typeof import('resource://devtools/shared/loader/DistinctSystemPrincipalLoader.sys.mjs');
|
||||
'resource://devtools/shared/loader/Loader.sys.mjs': typeof import('resource://devtools/shared/loader/Loader.sys.mjs');
|
||||
'resource://devtools/shared/network-observer/ChannelMap.sys.mjs': typeof import('resource://devtools/shared/network-observer/ChannelMap.sys.mjs');
|
||||
'resource://devtools/shared/network-observer/NetworkAuthListener.sys.mjs': typeof import('resource://devtools/shared/network-observer/NetworkAuthListener.sys.mjs');
|
||||
'resource://devtools/shared/network-observer/NetworkHelper.sys.mjs': typeof import('resource://devtools/shared/network-observer/NetworkHelper.sys.mjs');
|
||||
'resource://devtools/shared/network-observer/NetworkObserver.sys.mjs': typeof import('resource://devtools/shared/network-observer/NetworkObserver.sys.mjs');
|
||||
'resource://devtools/shared/network-observer/NetworkOverride.sys.mjs': typeof import('resource://devtools/shared/network-observer/NetworkOverride.sys.mjs');
|
||||
'resource://devtools/shared/network-observer/NetworkResponseListener.sys.mjs': typeof import('resource://devtools/shared/network-observer/NetworkResponseListener.sys.mjs');
|
||||
'resource://devtools/shared/network-observer/NetworkThrottleManager.sys.mjs': typeof import('resource://devtools/shared/network-observer/NetworkThrottleManager.sys.mjs');
|
||||
'resource://devtools/shared/network-observer/NetworkUtils.sys.mjs': typeof import('resource://devtools/shared/network-observer/NetworkUtils.sys.mjs');
|
||||
'resource://devtools/shared/network-observer/WildcardToRegexp.sys.mjs': typeof import('resource://devtools/shared/network-observer/WildcardToRegexp.sys.mjs');
|
||||
'resource://devtools/shared/platform/CacheEntry.sys.mjs': typeof import('resource://devtools/shared/platform/CacheEntry.sys.mjs');
|
||||
'resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs': typeof import('resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs');
|
||||
'resource://devtools/shared/validate-breakpoint.sys.mjs': typeof import('resource://devtools/shared/validate-breakpoint.sys.mjs');
|
||||
'resource://devtools/shared/worker/worker.sys.mjs': typeof import('resource://devtools/shared/worker/worker.sys.mjs');
|
||||
'resource://gre/actors/AutoCompleteParent.sys.mjs': typeof import('resource://gre/actors/AutoCompleteParent.sys.mjs');
|
||||
'resource://gre/actors/FormHandlerChild.sys.mjs': typeof import('resource://gre/actors/FormHandlerChild.sys.mjs');
|
||||
'resource://gre/actors/MLEngineParent.sys.mjs': typeof import('resource://gre/actors/MLEngineParent.sys.mjs');
|
||||
'resource://gre/actors/PopupBlockingParent.sys.mjs': typeof import('resource://gre/actors/PopupBlockingParent.sys.mjs');
|
||||
'resource://gre/actors/SelectParent.sys.mjs': typeof import('resource://gre/actors/SelectParent.sys.mjs');
|
||||
'resource://gre/actors/TranslationsParent.sys.mjs': typeof import('resource://gre/actors/TranslationsParent.sys.mjs');
|
||||
'resource://gre/actors/ViewSourcePageChild.sys.mjs': typeof import('resource://gre/actors/ViewSourcePageChild.sys.mjs');
|
||||
'resource://gre/modules/AboutPagesUtils.sys.mjs': typeof import('resource://gre/modules/AboutPagesUtils.sys.mjs');
|
||||
'resource://gre/modules/AbuseReporter.sys.mjs': typeof import('resource://gre/modules/AbuseReporter.sys.mjs');
|
||||
'resource://gre/modules/ActorManagerParent.sys.mjs': typeof import('resource://gre/modules/ActorManagerParent.sys.mjs');
|
||||
'resource://gre/modules/AddonManager.sys.mjs': typeof import('resource://gre/modules/AddonManager.sys.mjs');
|
||||
'resource://gre/modules/AddonSearchEngine.sys.mjs': typeof import('resource://gre/modules/AddonSearchEngine.sys.mjs');
|
||||
'resource://gre/modules/AndroidLog.sys.mjs': typeof import('resource://gre/modules/AndroidLog.sys.mjs');
|
||||
'resource://gre/modules/AppConstants.sys.mjs': typeof import('resource://gre/modules/AppConstants.sys.mjs');
|
||||
'resource://gre/modules/AppMenuNotifications.sys.mjs': typeof import('resource://gre/modules/AppMenuNotifications.sys.mjs');
|
||||
'resource://gre/modules/AppProvidedSearchEngine.sys.mjs': typeof import('resource://gre/modules/AppProvidedSearchEngine.sys.mjs');
|
||||
'resource://gre/modules/AppUpdater.sys.mjs': typeof import('resource://gre/modules/AppUpdater.sys.mjs');
|
||||
'resource://gre/modules/AsyncPrefs.sys.mjs': typeof import('resource://gre/modules/AsyncPrefs.sys.mjs');
|
||||
'resource://gre/modules/AsyncShutdown.sys.mjs': typeof import('resource://gre/modules/AsyncShutdown.sys.mjs');
|
||||
'resource://gre/modules/BackgroundPageThumbs.sys.mjs': typeof import('resource://gre/modules/BackgroundPageThumbs.sys.mjs');
|
||||
'resource://gre/modules/BackgroundTasksUtils.sys.mjs': typeof import('resource://gre/modules/BackgroundTasksUtils.sys.mjs');
|
||||
'resource://gre/modules/BackgroundUpdate.sys.mjs': typeof import('resource://gre/modules/BackgroundUpdate.sys.mjs');
|
||||
'resource://gre/modules/BinarySearch.sys.mjs': typeof import('resource://gre/modules/BinarySearch.sys.mjs');
|
||||
'resource://gre/modules/Blocklist.sys.mjs': typeof import('resource://gre/modules/Blocklist.sys.mjs');
|
||||
'resource://gre/modules/BookmarkHTMLUtils.sys.mjs': typeof import('resource://gre/modules/BookmarkHTMLUtils.sys.mjs');
|
||||
'resource://gre/modules/BookmarkJSONUtils.sys.mjs': typeof import('resource://gre/modules/BookmarkJSONUtils.sys.mjs');
|
||||
'resource://gre/modules/BookmarkList.sys.mjs': typeof import('resource://gre/modules/BookmarkList.sys.mjs');
|
||||
'resource://gre/modules/Bookmarks.sys.mjs': typeof import('resource://gre/modules/Bookmarks.sys.mjs');
|
||||
'resource://gre/modules/BrowserTelemetryUtils.sys.mjs': typeof import('resource://gre/modules/BrowserTelemetryUtils.sys.mjs');
|
||||
'resource://gre/modules/BrowserUtils.sys.mjs': typeof import('resource://gre/modules/BrowserUtils.sys.mjs');
|
||||
'resource://gre/modules/CSV.sys.mjs': typeof import('resource://gre/modules/CSV.sys.mjs');
|
||||
'resource://gre/modules/CanonicalJSON.sys.mjs': typeof import('resource://gre/modules/CanonicalJSON.sys.mjs');
|
||||
'resource://gre/modules/CaptchaDetectionPingUtils.sys.mjs': typeof import('resource://gre/modules/CaptchaDetectionPingUtils.sys.mjs');
|
||||
'resource://gre/modules/CaptchaResponseObserver.sys.mjs': typeof import('resource://gre/modules/CaptchaResponseObserver.sys.mjs');
|
||||
'resource://gre/modules/CertUtils.sys.mjs': typeof import('resource://gre/modules/CertUtils.sys.mjs');
|
||||
'resource://gre/modules/ChildCrashHandler.sys.mjs': typeof import('resource://gre/modules/ChildCrashHandler.sys.mjs');
|
||||
'resource://gre/modules/ClientID.sys.mjs': typeof import('resource://gre/modules/ClientID.sys.mjs');
|
||||
'resource://gre/modules/ClipboardContextMenu.sys.mjs': typeof import('resource://gre/modules/ClipboardContextMenu.sys.mjs');
|
||||
'resource://gre/modules/Color.sys.mjs': typeof import('resource://gre/modules/Color.sys.mjs');
|
||||
'resource://gre/modules/CommonDialog.sys.mjs': typeof import('resource://gre/modules/CommonDialog.sys.mjs');
|
||||
'resource://gre/modules/ConduitsParent.sys.mjs': typeof import('resource://gre/modules/ConduitsParent.sys.mjs');
|
||||
'resource://gre/modules/Console.sys.mjs': typeof import('resource://gre/modules/Console.sys.mjs');
|
||||
'resource://gre/modules/ContentBlockingAllowList.sys.mjs': typeof import('resource://gre/modules/ContentBlockingAllowList.sys.mjs');
|
||||
'resource://gre/modules/ContentDOMReference.sys.mjs': typeof import('resource://gre/modules/ContentDOMReference.sys.mjs');
|
||||
'resource://gre/modules/ContentPrefUtils.sys.mjs': typeof import('resource://gre/modules/ContentPrefUtils.sys.mjs');
|
||||
'resource://gre/modules/ContentRelevancyManager.sys.mjs': typeof import('resource://gre/modules/ContentRelevancyManager.sys.mjs');
|
||||
'resource://gre/modules/ContextualIdentityService.sys.mjs': typeof import('resource://gre/modules/ContextualIdentityService.sys.mjs');
|
||||
'resource://gre/modules/CoveragePing.sys.mjs': typeof import('resource://gre/modules/CoveragePing.sys.mjs');
|
||||
'resource://gre/modules/CrashMonitor.sys.mjs': typeof import('resource://gre/modules/CrashMonitor.sys.mjs');
|
||||
'resource://gre/modules/CrashService.sys.mjs': typeof import('resource://gre/modules/CrashService.sys.mjs');
|
||||
'resource://gre/modules/CrashSubmit.sys.mjs': typeof import('resource://gre/modules/CrashSubmit.sys.mjs');
|
||||
'resource://gre/modules/CreditCard.sys.mjs': typeof import('resource://gre/modules/CreditCard.sys.mjs');
|
||||
'resource://gre/modules/DAPTelemetrySender.sys.mjs': typeof import('resource://gre/modules/DAPTelemetrySender.sys.mjs');
|
||||
'resource://gre/modules/DAPVisitCounter.sys.mjs': typeof import('resource://gre/modules/DAPVisitCounter.sys.mjs');
|
||||
'resource://gre/modules/DateTimePickerPanel.sys.mjs': typeof import('resource://gre/modules/DateTimePickerPanel.sys.mjs');
|
||||
'resource://gre/modules/DeferredTask.sys.mjs': typeof import('resource://gre/modules/DeferredTask.sys.mjs');
|
||||
'resource://gre/modules/DownloadCore.sys.mjs': typeof import('resource://gre/modules/DownloadCore.sys.mjs');
|
||||
'resource://gre/modules/DownloadHistory.sys.mjs': typeof import('resource://gre/modules/DownloadHistory.sys.mjs');
|
||||
'resource://gre/modules/DownloadLastDir.sys.mjs': typeof import('resource://gre/modules/DownloadLastDir.sys.mjs');
|
||||
'resource://gre/modules/DownloadList.sys.mjs': typeof import('resource://gre/modules/DownloadList.sys.mjs');
|
||||
'resource://gre/modules/DownloadPaths.sys.mjs': typeof import('resource://gre/modules/DownloadPaths.sys.mjs');
|
||||
'resource://gre/modules/DownloadStore.sys.mjs': typeof import('resource://gre/modules/DownloadStore.sys.mjs');
|
||||
'resource://gre/modules/DownloadUIHelper.sys.mjs': typeof import('resource://gre/modules/DownloadUIHelper.sys.mjs');
|
||||
'resource://gre/modules/DownloadUtils.sys.mjs': typeof import('resource://gre/modules/DownloadUtils.sys.mjs');
|
||||
'resource://gre/modules/Downloads.sys.mjs': typeof import('resource://gre/modules/Downloads.sys.mjs');
|
||||
'resource://gre/modules/E10SUtils.sys.mjs': typeof import('resource://gre/modules/E10SUtils.sys.mjs');
|
||||
'resource://gre/modules/EssentialDomainsRemoteSettings.sys.mjs': typeof import('resource://gre/modules/EssentialDomainsRemoteSettings.sys.mjs');
|
||||
'resource://gre/modules/EventEmitter.sys.mjs': typeof import('resource://gre/modules/EventEmitter.sys.mjs');
|
||||
'resource://gre/modules/EventPing.sys.mjs': typeof import('resource://gre/modules/EventPing.sys.mjs');
|
||||
'resource://gre/modules/Extension.sys.mjs': typeof import('resource://gre/modules/Extension.sys.mjs');
|
||||
'resource://gre/modules/ExtensionActivityLog.sys.mjs': typeof import('resource://gre/modules/ExtensionActivityLog.sys.mjs');
|
||||
'resource://gre/modules/ExtensionChild.sys.mjs': typeof import('resource://gre/modules/ExtensionChild.sys.mjs');
|
||||
'resource://gre/modules/ExtensionChildDevToolsUtils.sys.mjs': typeof import('resource://gre/modules/ExtensionChildDevToolsUtils.sys.mjs');
|
||||
'resource://gre/modules/ExtensionCommon.sys.mjs': typeof import('resource://gre/modules/ExtensionCommon.sys.mjs');
|
||||
'resource://gre/modules/ExtensionContent.sys.mjs': typeof import('resource://gre/modules/ExtensionContent.sys.mjs');
|
||||
'resource://gre/modules/ExtensionDNR.sys.mjs': typeof import('resource://gre/modules/ExtensionDNR.sys.mjs');
|
||||
'resource://gre/modules/ExtensionDNRLimits.sys.mjs': typeof import('resource://gre/modules/ExtensionDNRLimits.sys.mjs');
|
||||
'resource://gre/modules/ExtensionDNRStore.sys.mjs': typeof import('resource://gre/modules/ExtensionDNRStore.sys.mjs');
|
||||
'resource://gre/modules/ExtensionMenus.sys.mjs': typeof import('resource://gre/modules/ExtensionMenus.sys.mjs');
|
||||
'resource://gre/modules/ExtensionPageChild.sys.mjs': typeof import('resource://gre/modules/ExtensionPageChild.sys.mjs');
|
||||
'resource://gre/modules/ExtensionParent.sys.mjs': typeof import('resource://gre/modules/ExtensionParent.sys.mjs');
|
||||
'resource://gre/modules/ExtensionPermissionMessages.sys.mjs': typeof import('resource://gre/modules/ExtensionPermissionMessages.sys.mjs');
|
||||
'resource://gre/modules/ExtensionPermissions.sys.mjs': typeof import('resource://gre/modules/ExtensionPermissions.sys.mjs');
|
||||
'resource://gre/modules/ExtensionPreferencesManager.sys.mjs': typeof import('resource://gre/modules/ExtensionPreferencesManager.sys.mjs');
|
||||
'resource://gre/modules/ExtensionProcessScript.sys.mjs': typeof import('resource://gre/modules/ExtensionProcessScript.sys.mjs');
|
||||
'resource://gre/modules/ExtensionScriptingStore.sys.mjs': typeof import('resource://gre/modules/ExtensionScriptingStore.sys.mjs');
|
||||
'resource://gre/modules/ExtensionSearchHandler.sys.mjs': typeof import('resource://gre/modules/ExtensionSearchHandler.sys.mjs');
|
||||
'resource://gre/modules/ExtensionSettingsStore.sys.mjs': typeof import('resource://gre/modules/ExtensionSettingsStore.sys.mjs');
|
||||
'resource://gre/modules/ExtensionShortcuts.sys.mjs': typeof import('resource://gre/modules/ExtensionShortcuts.sys.mjs');
|
||||
'resource://gre/modules/ExtensionStorage.sys.mjs': typeof import('resource://gre/modules/ExtensionStorage.sys.mjs');
|
||||
'resource://gre/modules/ExtensionStorageComponents.sys.mjs': typeof import('resource://gre/modules/ExtensionStorageComponents.sys.mjs');
|
||||
'resource://gre/modules/ExtensionStorageIDB.sys.mjs': typeof import('resource://gre/modules/ExtensionStorageIDB.sys.mjs');
|
||||
'resource://gre/modules/ExtensionStorageSync.sys.mjs': typeof import('resource://gre/modules/ExtensionStorageSync.sys.mjs');
|
||||
'resource://gre/modules/ExtensionStorageSyncKinto.sys.mjs': typeof import('resource://gre/modules/ExtensionStorageSyncKinto.sys.mjs');
|
||||
'resource://gre/modules/ExtensionTelemetry.sys.mjs': typeof import('resource://gre/modules/ExtensionTelemetry.sys.mjs');
|
||||
'resource://gre/modules/ExtensionUserScripts.sys.mjs': typeof import('resource://gre/modules/ExtensionUserScripts.sys.mjs');
|
||||
'resource://gre/modules/ExtensionUserScriptsContent.sys.mjs': typeof import('resource://gre/modules/ExtensionUserScriptsContent.sys.mjs');
|
||||
'resource://gre/modules/ExtensionUtils.sys.mjs': typeof import('resource://gre/modules/ExtensionUtils.sys.mjs');
|
||||
'resource://gre/modules/ExtensionWorkerChild.sys.mjs': typeof import('resource://gre/modules/ExtensionWorkerChild.sys.mjs');
|
||||
'resource://gre/modules/FileUtils.sys.mjs': typeof import('resource://gre/modules/FileUtils.sys.mjs');
|
||||
'resource://gre/modules/FillHelpers.sys.mjs': typeof import('resource://gre/modules/FillHelpers.sys.mjs');
|
||||
'resource://gre/modules/FindContent.sys.mjs': typeof import('resource://gre/modules/FindContent.sys.mjs');
|
||||
'resource://gre/modules/Finder.sys.mjs': typeof import('resource://gre/modules/Finder.sys.mjs');
|
||||
'resource://gre/modules/FinderHighlighter.sys.mjs': typeof import('resource://gre/modules/FinderHighlighter.sys.mjs');
|
||||
'resource://gre/modules/FinderIterator.sys.mjs': typeof import('resource://gre/modules/FinderIterator.sys.mjs');
|
||||
'resource://gre/modules/FinderParent.sys.mjs': typeof import('resource://gre/modules/FinderParent.sys.mjs');
|
||||
'resource://gre/modules/FirefoxRelay.sys.mjs': typeof import('resource://gre/modules/FirefoxRelay.sys.mjs');
|
||||
'resource://gre/modules/FirstStartup.sys.mjs': typeof import('resource://gre/modules/FirstStartup.sys.mjs');
|
||||
'resource://gre/modules/ForgetAboutSite.sys.mjs': typeof import('resource://gre/modules/ForgetAboutSite.sys.mjs');
|
||||
'resource://gre/modules/FormHistory.sys.mjs': typeof import('resource://gre/modules/FormHistory.sys.mjs');
|
||||
'resource://gre/modules/FormHistoryAutoComplete.sys.mjs': typeof import('resource://gre/modules/FormHistoryAutoComplete.sys.mjs');
|
||||
'resource://gre/modules/FormLikeFactory.sys.mjs': typeof import('resource://gre/modules/FormLikeFactory.sys.mjs');
|
||||
'resource://gre/modules/FormScenarios.sys.mjs': typeof import('resource://gre/modules/FormScenarios.sys.mjs');
|
||||
'resource://gre/modules/FxAccounts.sys.mjs': typeof import('resource://gre/modules/FxAccounts.sys.mjs');
|
||||
'resource://gre/modules/FxAccountsClient.sys.mjs': typeof import('resource://gre/modules/FxAccountsClient.sys.mjs');
|
||||
'resource://gre/modules/FxAccountsCommands.sys.mjs': typeof import('resource://gre/modules/FxAccountsCommands.sys.mjs');
|
||||
'resource://gre/modules/FxAccountsCommon.sys.mjs': typeof import('resource://gre/modules/FxAccountsCommon.sys.mjs');
|
||||
'resource://gre/modules/FxAccountsConfig.sys.mjs': typeof import('resource://gre/modules/FxAccountsConfig.sys.mjs');
|
||||
'resource://gre/modules/FxAccountsDevice.sys.mjs': typeof import('resource://gre/modules/FxAccountsDevice.sys.mjs');
|
||||
'resource://gre/modules/FxAccountsKeys.sys.mjs': typeof import('resource://gre/modules/FxAccountsKeys.sys.mjs');
|
||||
'resource://gre/modules/FxAccountsOAuth.sys.mjs': typeof import('resource://gre/modules/FxAccountsOAuth.sys.mjs');
|
||||
'resource://gre/modules/FxAccountsPairing.sys.mjs': typeof import('resource://gre/modules/FxAccountsPairing.sys.mjs');
|
||||
'resource://gre/modules/FxAccountsPairingChannel.sys.mjs': typeof import('resource://gre/modules/FxAccountsPairingChannel.sys.mjs');
|
||||
'resource://gre/modules/FxAccountsProfile.sys.mjs': typeof import('resource://gre/modules/FxAccountsProfile.sys.mjs');
|
||||
'resource://gre/modules/FxAccountsProfileClient.sys.mjs': typeof import('resource://gre/modules/FxAccountsProfileClient.sys.mjs');
|
||||
'resource://gre/modules/FxAccountsStorage.sys.mjs': typeof import('resource://gre/modules/FxAccountsStorage.sys.mjs');
|
||||
'resource://gre/modules/FxAccountsTelemetry.sys.mjs': typeof import('resource://gre/modules/FxAccountsTelemetry.sys.mjs');
|
||||
'resource://gre/modules/FxAccountsWebChannel.sys.mjs': typeof import('resource://gre/modules/FxAccountsWebChannel.sys.mjs');
|
||||
'resource://gre/modules/GMPInstallManager.sys.mjs': typeof import('resource://gre/modules/GMPInstallManager.sys.mjs');
|
||||
'resource://gre/modules/GeckoViewActorManager.sys.mjs': typeof import('resource://gre/modules/GeckoViewActorManager.sys.mjs');
|
||||
'resource://gre/modules/GeckoViewAutocomplete.sys.mjs': typeof import('resource://gre/modules/GeckoViewAutocomplete.sys.mjs');
|
||||
'resource://gre/modules/GeckoViewAutofill.sys.mjs': typeof import('resource://gre/modules/GeckoViewAutofill.sys.mjs');
|
||||
'resource://gre/modules/GeckoViewClipboardPermission.sys.mjs': typeof import('resource://gre/modules/GeckoViewClipboardPermission.sys.mjs');
|
||||
'resource://gre/modules/GeckoViewIdentityCredential.sys.mjs': typeof import('resource://gre/modules/GeckoViewIdentityCredential.sys.mjs');
|
||||
'resource://gre/modules/GeckoViewPrompter.sys.mjs': typeof import('resource://gre/modules/GeckoViewPrompter.sys.mjs');
|
||||
'resource://gre/modules/GeckoViewSettings.sys.mjs': typeof import('resource://gre/modules/GeckoViewSettings.sys.mjs');
|
||||
'resource://gre/modules/GeckoViewTab.sys.mjs': typeof import('resource://gre/modules/GeckoViewTab.sys.mjs');
|
||||
'resource://gre/modules/GeckoViewTelemetry.sys.mjs': typeof import('resource://gre/modules/GeckoViewTelemetry.sys.mjs');
|
||||
'resource://gre/modules/GeckoViewTestUtils.sys.mjs': typeof import('resource://gre/modules/GeckoViewTestUtils.sys.mjs');
|
||||
'resource://gre/modules/GeckoViewUtils.sys.mjs': typeof import('resource://gre/modules/GeckoViewUtils.sys.mjs');
|
||||
'resource://gre/modules/GeckoViewWebExtension.sys.mjs': typeof import('resource://gre/modules/GeckoViewWebExtension.sys.mjs');
|
||||
'resource://gre/modules/Geometry.sys.mjs': typeof import('resource://gre/modules/Geometry.sys.mjs');
|
||||
'resource://gre/modules/HPKEConfigManager.sys.mjs': typeof import('resource://gre/modules/HPKEConfigManager.sys.mjs');
|
||||
'resource://gre/modules/HealthPing.sys.mjs': typeof import('resource://gre/modules/HealthPing.sys.mjs');
|
||||
'resource://gre/modules/HiddenFrame.sys.mjs': typeof import('resource://gre/modules/HiddenFrame.sys.mjs');
|
||||
'resource://gre/modules/History.sys.mjs': typeof import('resource://gre/modules/History.sys.mjs');
|
||||
'resource://gre/modules/IgnoreLists.sys.mjs': typeof import('resource://gre/modules/IgnoreLists.sys.mjs');
|
||||
'resource://gre/modules/IndexedDB.sys.mjs': typeof import('resource://gre/modules/IndexedDB.sys.mjs');
|
||||
'resource://gre/modules/InlineSpellChecker.sys.mjs': typeof import('resource://gre/modules/InlineSpellChecker.sys.mjs');
|
||||
'resource://gre/modules/InlineSpellCheckerContent.sys.mjs': typeof import('resource://gre/modules/InlineSpellCheckerContent.sys.mjs');
|
||||
'resource://gre/modules/InsecurePasswordUtils.sys.mjs': typeof import('resource://gre/modules/InsecurePasswordUtils.sys.mjs');
|
||||
'resource://gre/modules/Integration.sys.mjs': typeof import('resource://gre/modules/Integration.sys.mjs');
|
||||
'resource://gre/modules/JSONFile.sys.mjs': typeof import('resource://gre/modules/JSONFile.sys.mjs');
|
||||
'resource://gre/modules/JsonSchema.sys.mjs': typeof import('resource://gre/modules/JsonSchema.sys.mjs');
|
||||
'resource://gre/modules/KeywordUtils.sys.mjs': typeof import('resource://gre/modules/KeywordUtils.sys.mjs');
|
||||
'resource://gre/modules/LangPackMatcher.sys.mjs': typeof import('resource://gre/modules/LangPackMatcher.sys.mjs');
|
||||
'resource://gre/modules/LayoutUtils.sys.mjs': typeof import('resource://gre/modules/LayoutUtils.sys.mjs');
|
||||
'resource://gre/modules/LightweightThemeConsumer.sys.mjs': typeof import('resource://gre/modules/LightweightThemeConsumer.sys.mjs');
|
||||
'resource://gre/modules/LightweightThemeManager.sys.mjs': typeof import('resource://gre/modules/LightweightThemeManager.sys.mjs');
|
||||
'resource://gre/modules/LoadURIDelegate.sys.mjs': typeof import('resource://gre/modules/LoadURIDelegate.sys.mjs');
|
||||
'resource://gre/modules/LocationHelper.sys.mjs': typeof import('resource://gre/modules/LocationHelper.sys.mjs');
|
||||
'resource://gre/modules/Log.sys.mjs': typeof import('resource://gre/modules/Log.sys.mjs');
|
||||
'resource://gre/modules/LoginAutoComplete.sys.mjs': typeof import('resource://gre/modules/LoginAutoComplete.sys.mjs');
|
||||
'resource://gre/modules/LoginCSVImport.sys.mjs': typeof import('resource://gre/modules/LoginCSVImport.sys.mjs');
|
||||
'resource://gre/modules/LoginExport.sys.mjs': typeof import('resource://gre/modules/LoginExport.sys.mjs');
|
||||
'resource://gre/modules/LoginHelper.sys.mjs': typeof import('resource://gre/modules/LoginHelper.sys.mjs');
|
||||
'resource://gre/modules/LoginManager.shared.sys.mjs': typeof import('resource://gre/modules/LoginManager.shared.sys.mjs');
|
||||
'resource://gre/modules/LoginManagerChild.sys.mjs': typeof import('resource://gre/modules/LoginManagerChild.sys.mjs');
|
||||
'resource://gre/modules/LoginManagerContextMenu.sys.mjs': typeof import('resource://gre/modules/LoginManagerContextMenu.sys.mjs');
|
||||
'resource://gre/modules/LoginManagerParent.sys.mjs': typeof import('resource://gre/modules/LoginManagerParent.sys.mjs');
|
||||
'resource://gre/modules/LoginManagerTelemetry.sys.mjs': typeof import('resource://gre/modules/LoginManagerTelemetry.sys.mjs');
|
||||
'resource://gre/modules/LoginRecipes.sys.mjs': typeof import('resource://gre/modules/LoginRecipes.sys.mjs');
|
||||
'resource://gre/modules/LoginStore.sys.mjs': typeof import('resource://gre/modules/LoginStore.sys.mjs');
|
||||
'resource://gre/modules/ManifestFinder.sys.mjs': typeof import('resource://gre/modules/ManifestFinder.sys.mjs');
|
||||
'resource://gre/modules/ManifestIcons.sys.mjs': typeof import('resource://gre/modules/ManifestIcons.sys.mjs');
|
||||
'resource://gre/modules/ManifestObtainer.sys.mjs': typeof import('resource://gre/modules/ManifestObtainer.sys.mjs');
|
||||
'resource://gre/modules/MatchURLFilters.sys.mjs': typeof import('resource://gre/modules/MatchURLFilters.sys.mjs');
|
||||
'resource://gre/modules/MediaUtils.sys.mjs': typeof import('resource://gre/modules/MediaUtils.sys.mjs');
|
||||
'resource://gre/modules/MessageManagerProxy.sys.mjs': typeof import('resource://gre/modules/MessageManagerProxy.sys.mjs');
|
||||
'resource://gre/modules/Messaging.sys.mjs': typeof import('resource://gre/modules/Messaging.sys.mjs');
|
||||
'resource://gre/modules/ModulesPing.sys.mjs': typeof import('resource://gre/modules/ModulesPing.sys.mjs');
|
||||
'resource://gre/modules/NLP.sys.mjs': typeof import('resource://gre/modules/NLP.sys.mjs');
|
||||
'resource://gre/modules/NativeManifests.sys.mjs': typeof import('resource://gre/modules/NativeManifests.sys.mjs');
|
||||
'resource://gre/modules/NativeMessaging.sys.mjs': typeof import('resource://gre/modules/NativeMessaging.sys.mjs');
|
||||
'resource://gre/modules/NetUtil.sys.mjs': typeof import('resource://gre/modules/NetUtil.sys.mjs');
|
||||
'resource://gre/modules/NewTabUtils.sys.mjs': typeof import('resource://gre/modules/NewTabUtils.sys.mjs');
|
||||
'resource://gre/modules/OSCrypto_win.sys.mjs': typeof import('resource://gre/modules/OSCrypto_win.sys.mjs');
|
||||
'resource://gre/modules/OSKeyStore.sys.mjs': typeof import('resource://gre/modules/OSKeyStore.sys.mjs');
|
||||
'resource://gre/modules/ObjectUtils.sys.mjs': typeof import('resource://gre/modules/ObjectUtils.sys.mjs');
|
||||
'resource://gre/modules/ObliviousHTTP.sys.mjs': typeof import('resource://gre/modules/ObliviousHTTP.sys.mjs');
|
||||
'resource://gre/modules/OpenSearchEngine.sys.mjs': typeof import('resource://gre/modules/OpenSearchEngine.sys.mjs');
|
||||
'resource://gre/modules/OpenSearchLoader.sys.mjs': typeof import('resource://gre/modules/OpenSearchLoader.sys.mjs');
|
||||
'resource://gre/modules/OsEnvironment.sys.mjs': typeof import('resource://gre/modules/OsEnvironment.sys.mjs');
|
||||
'resource://gre/modules/PageThumbUtils.sys.mjs': typeof import('resource://gre/modules/PageThumbUtils.sys.mjs');
|
||||
'resource://gre/modules/PageThumbs.sys.mjs': typeof import('resource://gre/modules/PageThumbs.sys.mjs');
|
||||
'resource://gre/modules/PermissionsUtils.sys.mjs': typeof import('resource://gre/modules/PermissionsUtils.sys.mjs');
|
||||
'resource://gre/modules/PictureInPicture.sys.mjs': typeof import('resource://gre/modules/PictureInPicture.sys.mjs');
|
||||
'resource://gre/modules/PictureInPictureControls.sys.mjs': typeof import('resource://gre/modules/PictureInPictureControls.sys.mjs');
|
||||
'resource://gre/modules/PlacesBackups.sys.mjs': typeof import('resource://gre/modules/PlacesBackups.sys.mjs');
|
||||
'resource://gre/modules/PlacesDBUtils.sys.mjs': typeof import('resource://gre/modules/PlacesDBUtils.sys.mjs');
|
||||
'resource://gre/modules/PlacesPreviews.sys.mjs': typeof import('resource://gre/modules/PlacesPreviews.sys.mjs');
|
||||
'resource://gre/modules/PlacesQuery.sys.mjs': typeof import('resource://gre/modules/PlacesQuery.sys.mjs');
|
||||
'resource://gre/modules/PlacesSyncUtils.sys.mjs': typeof import('resource://gre/modules/PlacesSyncUtils.sys.mjs');
|
||||
'resource://gre/modules/PlacesTransactions.sys.mjs': typeof import('resource://gre/modules/PlacesTransactions.sys.mjs');
|
||||
'resource://gre/modules/PlacesUtils.sys.mjs': typeof import('resource://gre/modules/PlacesUtils.sys.mjs');
|
||||
'resource://gre/modules/PolicySearchEngine.sys.mjs': typeof import('resource://gre/modules/PolicySearchEngine.sys.mjs');
|
||||
'resource://gre/modules/Preferences.sys.mjs': typeof import('resource://gre/modules/Preferences.sys.mjs');
|
||||
'resource://gre/modules/PrincipalsCollector.sys.mjs': typeof import('resource://gre/modules/PrincipalsCollector.sys.mjs');
|
||||
'resource://gre/modules/PrivateBrowsingUtils.sys.mjs': typeof import('resource://gre/modules/PrivateBrowsingUtils.sys.mjs');
|
||||
'resource://gre/modules/ProcessType.sys.mjs': typeof import('resource://gre/modules/ProcessType.sys.mjs');
|
||||
'resource://gre/modules/ProfileAge.sys.mjs': typeof import('resource://gre/modules/ProfileAge.sys.mjs');
|
||||
'resource://gre/modules/PromiseWorker.sys.mjs': typeof import('resource://gre/modules/PromiseWorker.sys.mjs');
|
||||
'resource://gre/modules/PromptUtils.sys.mjs': typeof import('resource://gre/modules/PromptUtils.sys.mjs');
|
||||
'resource://gre/modules/PropertyListUtils.sys.mjs': typeof import('resource://gre/modules/PropertyListUtils.sys.mjs');
|
||||
'resource://gre/modules/ProxyChannelFilter.sys.mjs': typeof import('resource://gre/modules/ProxyChannelFilter.sys.mjs');
|
||||
'resource://gre/modules/PushBroadcastService.sys.mjs': typeof import('resource://gre/modules/PushBroadcastService.sys.mjs');
|
||||
'resource://gre/modules/PushCrypto.sys.mjs': typeof import('resource://gre/modules/PushCrypto.sys.mjs');
|
||||
'resource://gre/modules/PushService.sys.mjs': typeof import('resource://gre/modules/PushService.sys.mjs');
|
||||
'resource://gre/modules/PushServiceWebSocket.sys.mjs': typeof import('resource://gre/modules/PushServiceWebSocket.sys.mjs');
|
||||
'resource://gre/modules/RFPHelper.sys.mjs': typeof import('resource://gre/modules/RFPHelper.sys.mjs');
|
||||
'resource://gre/modules/Readerable.sys.mjs': typeof import('resource://gre/modules/Readerable.sys.mjs');
|
||||
'resource://gre/modules/Region.sys.mjs': typeof import('resource://gre/modules/Region.sys.mjs');
|
||||
'resource://gre/modules/RemotePageAccessManager.sys.mjs': typeof import('resource://gre/modules/RemotePageAccessManager.sys.mjs');
|
||||
'resource://gre/modules/RemoteSettingsCrashPull.sys.mjs': typeof import('resource://gre/modules/RemoteSettingsCrashPull.sys.mjs');
|
||||
'resource://gre/modules/RemoteWebNavigation.sys.mjs': typeof import('resource://gre/modules/RemoteWebNavigation.sys.mjs');
|
||||
'resource://gre/modules/ResetProfile.sys.mjs': typeof import('resource://gre/modules/ResetProfile.sys.mjs');
|
||||
'resource://gre/modules/ResponsivenessMonitor.sys.mjs': typeof import('resource://gre/modules/ResponsivenessMonitor.sys.mjs');
|
||||
'resource://gre/modules/RustRelevancy.sys.mjs': typeof import('resource://gre/modules/RustRelevancy.sys.mjs');
|
||||
'resource://gre/modules/RustSearch.sys.mjs': typeof import('resource://gre/modules/RustSearch.sys.mjs');
|
||||
'resource://gre/modules/RustSuggest.sys.mjs': typeof import('resource://gre/modules/RustSuggest.sys.mjs');
|
||||
'resource://gre/modules/RustTabs.sys.mjs': typeof import('resource://gre/modules/RustTabs.sys.mjs');
|
||||
'resource://gre/modules/RustWebextstorage.sys.mjs': typeof import('resource://gre/modules/RustWebextstorage.sys.mjs');
|
||||
'resource://gre/modules/SafeBrowsing.sys.mjs': typeof import('resource://gre/modules/SafeBrowsing.sys.mjs');
|
||||
'resource://gre/modules/SandboxUtils.sys.mjs': typeof import('resource://gre/modules/SandboxUtils.sys.mjs');
|
||||
'resource://gre/modules/Schemas.sys.mjs': typeof import('resource://gre/modules/Schemas.sys.mjs');
|
||||
'resource://gre/modules/SearchEngine.sys.mjs': typeof import('resource://gre/modules/SearchEngine.sys.mjs');
|
||||
'resource://gre/modules/SearchEngineSelector.sys.mjs': typeof import('resource://gre/modules/SearchEngineSelector.sys.mjs');
|
||||
'resource://gre/modules/SearchService.sys.mjs': typeof import('resource://gre/modules/SearchService.sys.mjs');
|
||||
'resource://gre/modules/SearchSettings.sys.mjs': typeof import('resource://gre/modules/SearchSettings.sys.mjs');
|
||||
'resource://gre/modules/SearchShortcuts.sys.mjs': typeof import('resource://gre/modules/SearchShortcuts.sys.mjs');
|
||||
'resource://gre/modules/SearchStaticData.sys.mjs': typeof import('resource://gre/modules/SearchStaticData.sys.mjs');
|
||||
'resource://gre/modules/SearchSuggestionController.sys.mjs': typeof import('resource://gre/modules/SearchSuggestionController.sys.mjs');
|
||||
'resource://gre/modules/SearchUtils.sys.mjs': typeof import('resource://gre/modules/SearchUtils.sys.mjs');
|
||||
'resource://gre/modules/SecurityInfo.sys.mjs': typeof import('resource://gre/modules/SecurityInfo.sys.mjs');
|
||||
'resource://gre/modules/SelectionUtils.sys.mjs': typeof import('resource://gre/modules/SelectionUtils.sys.mjs');
|
||||
'resource://gre/modules/ServiceRequest.sys.mjs': typeof import('resource://gre/modules/ServiceRequest.sys.mjs');
|
||||
'resource://gre/modules/ServiceWorkerCleanUp.sys.mjs': typeof import('resource://gre/modules/ServiceWorkerCleanUp.sys.mjs');
|
||||
'resource://gre/modules/ShortcutUtils.sys.mjs': typeof import('resource://gre/modules/ShortcutUtils.sys.mjs');
|
||||
'resource://gre/modules/Sqlite.sys.mjs': typeof import('resource://gre/modules/Sqlite.sys.mjs');
|
||||
'resource://gre/modules/SubDialog.sys.mjs': typeof import('resource://gre/modules/SubDialog.sys.mjs');
|
||||
'resource://gre/modules/Subprocess.sys.mjs': typeof import('resource://gre/modules/Subprocess.sys.mjs');
|
||||
'resource://gre/modules/SyncedBookmarksMirror.sys.mjs': typeof import('resource://gre/modules/SyncedBookmarksMirror.sys.mjs');
|
||||
'resource://gre/modules/TaskScheduler.sys.mjs': typeof import('resource://gre/modules/TaskScheduler.sys.mjs');
|
||||
'resource://gre/modules/TaskSchedulerMacOSImpl.sys.mjs': typeof import('resource://gre/modules/TaskSchedulerMacOSImpl.sys.mjs');
|
||||
'resource://gre/modules/TaskSchedulerWinImpl.sys.mjs': typeof import('resource://gre/modules/TaskSchedulerWinImpl.sys.mjs');
|
||||
'resource://gre/modules/TelemetryArchive.sys.mjs': typeof import('resource://gre/modules/TelemetryArchive.sys.mjs');
|
||||
'resource://gre/modules/TelemetryController.sys.mjs': typeof import('resource://gre/modules/TelemetryController.sys.mjs');
|
||||
'resource://gre/modules/TelemetryEnvironment.sys.mjs': typeof import('resource://gre/modules/TelemetryEnvironment.sys.mjs');
|
||||
'resource://gre/modules/TelemetryReportingPolicy.sys.mjs': typeof import('resource://gre/modules/TelemetryReportingPolicy.sys.mjs');
|
||||
'resource://gre/modules/TelemetryScheduler.sys.mjs': typeof import('resource://gre/modules/TelemetryScheduler.sys.mjs');
|
||||
'resource://gre/modules/TelemetrySend.sys.mjs': typeof import('resource://gre/modules/TelemetrySend.sys.mjs');
|
||||
'resource://gre/modules/TelemetrySession.sys.mjs': typeof import('resource://gre/modules/TelemetrySession.sys.mjs');
|
||||
'resource://gre/modules/TelemetryStorage.sys.mjs': typeof import('resource://gre/modules/TelemetryStorage.sys.mjs');
|
||||
'resource://gre/modules/TelemetryTimestamps.sys.mjs': typeof import('resource://gre/modules/TelemetryTimestamps.sys.mjs');
|
||||
'resource://gre/modules/TelemetryUtils.sys.mjs': typeof import('resource://gre/modules/TelemetryUtils.sys.mjs');
|
||||
'resource://gre/modules/Timer.sys.mjs': typeof import('resource://gre/modules/Timer.sys.mjs');
|
||||
'resource://gre/modules/UninstallPing.sys.mjs': typeof import('resource://gre/modules/UninstallPing.sys.mjs');
|
||||
'resource://gre/modules/UntrustedModulesPing.sys.mjs': typeof import('resource://gre/modules/UntrustedModulesPing.sys.mjs');
|
||||
'resource://gre/modules/UpdateListener.sys.mjs': typeof import('resource://gre/modules/UpdateListener.sys.mjs');
|
||||
'resource://gre/modules/UpdateLog.sys.mjs': typeof import('resource://gre/modules/UpdateLog.sys.mjs');
|
||||
'resource://gre/modules/UpdatePing.sys.mjs': typeof import('resource://gre/modules/UpdatePing.sys.mjs');
|
||||
'resource://gre/modules/UpdateService.sys.mjs': typeof import('resource://gre/modules/UpdateService.sys.mjs');
|
||||
'resource://gre/modules/UpdateUtils.sys.mjs': typeof import('resource://gre/modules/UpdateUtils.sys.mjs');
|
||||
'resource://gre/modules/UsageReporting.sys.mjs': typeof import('resource://gre/modules/UsageReporting.sys.mjs');
|
||||
'resource://gre/modules/UserSearchEngine.sys.mjs': typeof import('resource://gre/modules/UserSearchEngine.sys.mjs');
|
||||
'resource://gre/modules/WebAuthnFeature.sys.mjs': typeof import('resource://gre/modules/WebAuthnFeature.sys.mjs');
|
||||
'resource://gre/modules/WebChannel.sys.mjs': typeof import('resource://gre/modules/WebChannel.sys.mjs');
|
||||
'resource://gre/modules/WebNavigation.sys.mjs': typeof import('resource://gre/modules/WebNavigation.sys.mjs');
|
||||
'resource://gre/modules/WebNavigationFrames.sys.mjs': typeof import('resource://gre/modules/WebNavigationFrames.sys.mjs');
|
||||
'resource://gre/modules/WebRequest.sys.mjs': typeof import('resource://gre/modules/WebRequest.sys.mjs');
|
||||
'resource://gre/modules/WebRequestUpload.sys.mjs': typeof import('resource://gre/modules/WebRequestUpload.sys.mjs');
|
||||
'resource://gre/modules/WindowsLaunchOnLogin.sys.mjs': typeof import('resource://gre/modules/WindowsLaunchOnLogin.sys.mjs');
|
||||
'resource://gre/modules/WindowsRegistry.sys.mjs': typeof import('resource://gre/modules/WindowsRegistry.sys.mjs');
|
||||
'resource://gre/modules/addons/AddonRepository.sys.mjs': typeof import('resource://gre/modules/addons/AddonRepository.sys.mjs');
|
||||
'resource://gre/modules/addons/AddonSettings.sys.mjs': typeof import('resource://gre/modules/addons/AddonSettings.sys.mjs');
|
||||
'resource://gre/modules/addons/ProductAddonChecker.sys.mjs': typeof import('resource://gre/modules/addons/ProductAddonChecker.sys.mjs');
|
||||
'resource://gre/modules/addons/XPIDatabase.sys.mjs': typeof import('resource://gre/modules/addons/XPIDatabase.sys.mjs');
|
||||
'resource://gre/modules/addons/XPIInstall.sys.mjs': typeof import('resource://gre/modules/addons/XPIInstall.sys.mjs');
|
||||
'resource://gre/modules/addons/XPIProvider.sys.mjs': typeof import('resource://gre/modules/addons/XPIProvider.sys.mjs');
|
||||
'resource://gre/modules/addons/siteperms-addon-utils.sys.mjs': typeof import('resource://gre/modules/addons/siteperms-addon-utils.sys.mjs');
|
||||
'resource://gre/modules/components-utils/ClientEnvironment.sys.mjs': typeof import('resource://gre/modules/components-utils/ClientEnvironment.sys.mjs');
|
||||
'resource://gre/modules/components-utils/FilterExpressions.sys.mjs': typeof import('resource://gre/modules/components-utils/FilterExpressions.sys.mjs');
|
||||
'resource://gre/modules/components-utils/JsonSchemaValidator.sys.mjs': typeof import('resource://gre/modules/components-utils/JsonSchemaValidator.sys.mjs');
|
||||
'resource://gre/modules/components-utils/Sampling.sys.mjs': typeof import('resource://gre/modules/components-utils/Sampling.sys.mjs');
|
||||
'resource://gre/modules/components-utils/WindowsInstallsInfo.sys.mjs': typeof import('resource://gre/modules/components-utils/WindowsInstallsInfo.sys.mjs');
|
||||
'resource://gre/modules/components-utils/WindowsVersionInfo.sys.mjs': typeof import('resource://gre/modules/components-utils/WindowsVersionInfo.sys.mjs');
|
||||
'resource://gre/modules/components-utils/mozjexl.sys.mjs': typeof import('resource://gre/modules/components-utils/mozjexl.sys.mjs');
|
||||
'resource://gre/modules/contentrelevancy/private/InputUtils.sys.mjs': typeof import('resource://gre/modules/contentrelevancy/private/InputUtils.sys.mjs');
|
||||
'resource://gre/modules/ctypes.sys.mjs': typeof import('resource://gre/modules/ctypes.sys.mjs');
|
||||
'resource://gre/modules/handlers/HandlerList.sys.mjs': typeof import('resource://gre/modules/handlers/HandlerList.sys.mjs');
|
||||
'resource://gre/modules/jsdebugger.sys.mjs': typeof import('resource://gre/modules/jsdebugger.sys.mjs');
|
||||
'resource://gre/modules/kvstore.sys.mjs': typeof import('resource://gre/modules/kvstore.sys.mjs');
|
||||
'resource://gre/modules/media/IdpSandbox.sys.mjs': typeof import('resource://gre/modules/media/IdpSandbox.sys.mjs');
|
||||
'resource://gre/modules/media/PeerConnectionIdp.sys.mjs': typeof import('resource://gre/modules/media/PeerConnectionIdp.sys.mjs');
|
||||
'resource://gre/modules/narrate/NarrateControls.sys.mjs': typeof import('resource://gre/modules/narrate/NarrateControls.sys.mjs');
|
||||
'resource://gre/modules/policies/WindowsGPOParser.sys.mjs': typeof import('resource://gre/modules/policies/WindowsGPOParser.sys.mjs');
|
||||
'resource://gre/modules/policies/macOSPoliciesParser.sys.mjs': typeof import('resource://gre/modules/policies/macOSPoliciesParser.sys.mjs');
|
||||
'resource://gre/modules/psm/RemoteSecuritySettings.sys.mjs': typeof import('resource://gre/modules/psm/RemoteSecuritySettings.sys.mjs');
|
||||
'resource://gre/modules/reflect.sys.mjs': typeof import('resource://gre/modules/reflect.sys.mjs');
|
||||
'resource://gre/modules/sessionstore/PrivacyFilter.sys.mjs': typeof import('resource://gre/modules/sessionstore/PrivacyFilter.sys.mjs');
|
||||
'resource://gre/modules/sessionstore/PrivacyLevel.sys.mjs': typeof import('resource://gre/modules/sessionstore/PrivacyLevel.sys.mjs');
|
||||
'resource://gre/modules/sessionstore/SessionHistory.sys.mjs': typeof import('resource://gre/modules/sessionstore/SessionHistory.sys.mjs');
|
||||
'resource://gre/modules/sessionstore/SessionStoreHelper.sys.mjs': typeof import('resource://gre/modules/sessionstore/SessionStoreHelper.sys.mjs');
|
||||
'resource://gre/modules/shared/AddressComponent.sys.mjs': typeof import('resource://gre/modules/shared/AddressComponent.sys.mjs');
|
||||
'resource://gre/modules/shared/AddressMetaData.sys.mjs': typeof import('resource://gre/modules/shared/AddressMetaData.sys.mjs');
|
||||
'resource://gre/modules/shared/AddressMetaDataExtension.sys.mjs': typeof import('resource://gre/modules/shared/AddressMetaDataExtension.sys.mjs');
|
||||
'resource://gre/modules/shared/AddressMetaDataLoader.sys.mjs': typeof import('resource://gre/modules/shared/AddressMetaDataLoader.sys.mjs');
|
||||
'resource://gre/modules/shared/AddressParser.sys.mjs': typeof import('resource://gre/modules/shared/AddressParser.sys.mjs');
|
||||
'resource://gre/modules/shared/AutofillFormFactory.sys.mjs': typeof import('resource://gre/modules/shared/AutofillFormFactory.sys.mjs');
|
||||
'resource://gre/modules/shared/AutofillTelemetry.sys.mjs': typeof import('resource://gre/modules/shared/AutofillTelemetry.sys.mjs');
|
||||
'resource://gre/modules/shared/CreditCardRecord.sys.mjs': typeof import('resource://gre/modules/shared/CreditCardRecord.sys.mjs');
|
||||
'resource://gre/modules/shared/CreditCardRuleset.sys.mjs': typeof import('resource://gre/modules/shared/CreditCardRuleset.sys.mjs');
|
||||
'resource://gre/modules/shared/FieldScanner.sys.mjs': typeof import('resource://gre/modules/shared/FieldScanner.sys.mjs');
|
||||
'resource://gre/modules/shared/FormAutofillHandler.sys.mjs': typeof import('resource://gre/modules/shared/FormAutofillHandler.sys.mjs');
|
||||
'resource://gre/modules/shared/FormAutofillHeuristics.sys.mjs': typeof import('resource://gre/modules/shared/FormAutofillHeuristics.sys.mjs');
|
||||
'resource://gre/modules/shared/FormAutofillNameUtils.sys.mjs': typeof import('resource://gre/modules/shared/FormAutofillNameUtils.sys.mjs');
|
||||
'resource://gre/modules/shared/FormAutofillSection.sys.mjs': typeof import('resource://gre/modules/shared/FormAutofillSection.sys.mjs');
|
||||
'resource://gre/modules/shared/FormAutofillUtils.sys.mjs': typeof import('resource://gre/modules/shared/FormAutofillUtils.sys.mjs');
|
||||
'resource://gre/modules/shared/FormStateManager.sys.mjs': typeof import('resource://gre/modules/shared/FormStateManager.sys.mjs');
|
||||
'resource://gre/modules/shared/LabelUtils.sys.mjs': typeof import('resource://gre/modules/shared/LabelUtils.sys.mjs');
|
||||
'resource://gre/modules/shared/LoginFormFactory.sys.mjs': typeof import('resource://gre/modules/shared/LoginFormFactory.sys.mjs');
|
||||
'resource://gre/modules/shared/PasswordGenerator.sys.mjs': typeof import('resource://gre/modules/shared/PasswordGenerator.sys.mjs');
|
||||
'resource://gre/modules/shared/PasswordRulesParser.sys.mjs': typeof import('resource://gre/modules/shared/PasswordRulesParser.sys.mjs');
|
||||
'resource://gre/modules/shared/PhoneNumber.sys.mjs': typeof import('resource://gre/modules/shared/PhoneNumber.sys.mjs');
|
||||
'resource://gre/modules/shared/PhoneNumberNormalizer.sys.mjs': typeof import('resource://gre/modules/shared/PhoneNumberNormalizer.sys.mjs');
|
||||
'resource://gre/modules/subprocess/subprocess_unix.sys.mjs': typeof import('resource://gre/modules/subprocess/subprocess_unix.sys.mjs');
|
||||
'resource://gre/modules/subprocess/subprocess_win.sys.mjs': typeof import('resource://gre/modules/subprocess/subprocess_win.sys.mjs');
|
||||
'resource://gre/modules/translations/LanguageDetector.sys.mjs': typeof import('resource://gre/modules/translations/LanguageDetector.sys.mjs');
|
||||
'resource://gre/modules/workers/PromiseWorker.mjs': typeof import('resource://gre/modules/workers/PromiseWorker.mjs');
|
||||
'resource://messaging-system/lib/SpecialMessageActions.sys.mjs': typeof import('resource://messaging-system/lib/SpecialMessageActions.sys.mjs');
|
||||
'resource://messaging-system/targeting/Targeting.sys.mjs': typeof import('resource://messaging-system/targeting/Targeting.sys.mjs');
|
||||
'resource://mozscreenshots/Screenshot.sys.mjs': typeof import('resource://mozscreenshots/Screenshot.sys.mjs');
|
||||
'resource://newtab/common/Actions.mjs': typeof import('resource://newtab/common/Actions.mjs');
|
||||
'resource://newtab/lib/AboutPreferences.sys.mjs': typeof import('resource://newtab/lib/AboutPreferences.sys.mjs');
|
||||
'resource://newtab/lib/ActivityStream.sys.mjs': typeof import('resource://newtab/lib/ActivityStream.sys.mjs');
|
||||
'resource://newtab/lib/ActivityStreamMessageChannel.sys.mjs': typeof import('resource://newtab/lib/ActivityStreamMessageChannel.sys.mjs');
|
||||
'resource://newtab/lib/ActivityStreamPrefs.sys.mjs': typeof import('resource://newtab/lib/ActivityStreamPrefs.sys.mjs');
|
||||
'resource://newtab/lib/AdsFeed.sys.mjs': typeof import('resource://newtab/lib/AdsFeed.sys.mjs');
|
||||
'resource://newtab/lib/DefaultSites.sys.mjs': typeof import('resource://newtab/lib/DefaultSites.sys.mjs');
|
||||
'resource://newtab/lib/DiscoveryStreamFeed.sys.mjs': typeof import('resource://newtab/lib/DiscoveryStreamFeed.sys.mjs');
|
||||
'resource://newtab/lib/DownloadsManager.sys.mjs': typeof import('resource://newtab/lib/DownloadsManager.sys.mjs');
|
||||
'resource://newtab/lib/FaviconFeed.sys.mjs': typeof import('resource://newtab/lib/FaviconFeed.sys.mjs');
|
||||
'resource://newtab/lib/HighlightsFeed.sys.mjs': typeof import('resource://newtab/lib/HighlightsFeed.sys.mjs');
|
||||
'resource://newtab/lib/NewTabInit.sys.mjs': typeof import('resource://newtab/lib/NewTabInit.sys.mjs');
|
||||
'resource://newtab/lib/PersistentCache.sys.mjs': typeof import('resource://newtab/lib/PersistentCache.sys.mjs');
|
||||
'resource://newtab/lib/PersonalityProvider/PersonalityProvider.sys.mjs': typeof import('resource://newtab/lib/PersonalityProvider/PersonalityProvider.sys.mjs');
|
||||
'resource://newtab/lib/PlacesFeed.sys.mjs': typeof import('resource://newtab/lib/PlacesFeed.sys.mjs');
|
||||
'resource://newtab/lib/PrefsFeed.sys.mjs': typeof import('resource://newtab/lib/PrefsFeed.sys.mjs');
|
||||
'resource://newtab/lib/RecommendationProvider.sys.mjs': typeof import('resource://newtab/lib/RecommendationProvider.sys.mjs');
|
||||
'resource://newtab/lib/Screenshots.sys.mjs': typeof import('resource://newtab/lib/Screenshots.sys.mjs');
|
||||
'resource://newtab/lib/SectionsManager.sys.mjs': typeof import('resource://newtab/lib/SectionsManager.sys.mjs');
|
||||
'resource://newtab/lib/Store.sys.mjs': typeof import('resource://newtab/lib/Store.sys.mjs');
|
||||
'resource://newtab/lib/SystemTickFeed.sys.mjs': typeof import('resource://newtab/lib/SystemTickFeed.sys.mjs');
|
||||
'resource://newtab/lib/TelemetryFeed.sys.mjs': typeof import('resource://newtab/lib/TelemetryFeed.sys.mjs');
|
||||
'resource://newtab/lib/TopSitesFeed.sys.mjs': typeof import('resource://newtab/lib/TopSitesFeed.sys.mjs');
|
||||
'resource://newtab/lib/TopStoriesFeed.sys.mjs': typeof import('resource://newtab/lib/TopStoriesFeed.sys.mjs');
|
||||
'resource://newtab/lib/UTEventReporting.sys.mjs': typeof import('resource://newtab/lib/UTEventReporting.sys.mjs');
|
||||
'resource://newtab/lib/WallpaperFeed.sys.mjs': typeof import('resource://newtab/lib/WallpaperFeed.sys.mjs');
|
||||
'resource://newtab/lib/WeatherFeed.sys.mjs': typeof import('resource://newtab/lib/WeatherFeed.sys.mjs');
|
||||
'resource://nimbus/ExperimentAPI.sys.mjs': typeof import('resource://nimbus/ExperimentAPI.sys.mjs');
|
||||
'resource://nimbus/FeatureManifest.sys.mjs': typeof import('resource://nimbus/FeatureManifest.sys.mjs');
|
||||
'resource://nimbus/FirefoxLabs.sys.mjs': typeof import('resource://nimbus/FirefoxLabs.sys.mjs');
|
||||
'resource://nimbus/lib/ExperimentManager.sys.mjs': typeof import('resource://nimbus/lib/ExperimentManager.sys.mjs');
|
||||
'resource://nimbus/lib/ExperimentStore.sys.mjs': typeof import('resource://nimbus/lib/ExperimentStore.sys.mjs');
|
||||
'resource://nimbus/lib/Migrations.sys.mjs': typeof import('resource://nimbus/lib/Migrations.sys.mjs');
|
||||
'resource://nimbus/lib/RemoteSettingsExperimentLoader.sys.mjs': typeof import('resource://nimbus/lib/RemoteSettingsExperimentLoader.sys.mjs');
|
||||
'resource://nimbus/lib/TargetingContextRecorder.sys.mjs': typeof import('resource://nimbus/lib/TargetingContextRecorder.sys.mjs');
|
||||
'resource://normandy-content/AboutPages.sys.mjs': typeof import('resource://normandy-content/AboutPages.sys.mjs');
|
||||
'resource://normandy/Normandy.sys.mjs': typeof import('resource://normandy/Normandy.sys.mjs');
|
||||
'resource://normandy/NormandyMigrations.sys.mjs': typeof import('resource://normandy/NormandyMigrations.sys.mjs');
|
||||
'resource://normandy/actions/AddonRollbackAction.sys.mjs': typeof import('resource://normandy/actions/AddonRollbackAction.sys.mjs');
|
||||
'resource://normandy/actions/AddonRolloutAction.sys.mjs': typeof import('resource://normandy/actions/AddonRolloutAction.sys.mjs');
|
||||
'resource://normandy/actions/BaseAction.sys.mjs': typeof import('resource://normandy/actions/BaseAction.sys.mjs');
|
||||
'resource://normandy/actions/BranchedAddonStudyAction.sys.mjs': typeof import('resource://normandy/actions/BranchedAddonStudyAction.sys.mjs');
|
||||
'resource://normandy/actions/ConsoleLogAction.sys.mjs': typeof import('resource://normandy/actions/ConsoleLogAction.sys.mjs');
|
||||
'resource://normandy/actions/MessagingExperimentAction.sys.mjs': typeof import('resource://normandy/actions/MessagingExperimentAction.sys.mjs');
|
||||
'resource://normandy/actions/PreferenceExperimentAction.sys.mjs': typeof import('resource://normandy/actions/PreferenceExperimentAction.sys.mjs');
|
||||
'resource://normandy/actions/PreferenceRollbackAction.sys.mjs': typeof import('resource://normandy/actions/PreferenceRollbackAction.sys.mjs');
|
||||
'resource://normandy/actions/PreferenceRolloutAction.sys.mjs': typeof import('resource://normandy/actions/PreferenceRolloutAction.sys.mjs');
|
||||
'resource://normandy/actions/ShowHeartbeatAction.sys.mjs': typeof import('resource://normandy/actions/ShowHeartbeatAction.sys.mjs');
|
||||
'resource://normandy/actions/schemas/index.sys.mjs': typeof import('resource://normandy/actions/schemas/index.sys.mjs');
|
||||
'resource://normandy/lib/ActionsManager.sys.mjs': typeof import('resource://normandy/lib/ActionsManager.sys.mjs');
|
||||
'resource://normandy/lib/AddonRollouts.sys.mjs': typeof import('resource://normandy/lib/AddonRollouts.sys.mjs');
|
||||
'resource://normandy/lib/AddonStudies.sys.mjs': typeof import('resource://normandy/lib/AddonStudies.sys.mjs');
|
||||
'resource://normandy/lib/CleanupManager.sys.mjs': typeof import('resource://normandy/lib/CleanupManager.sys.mjs');
|
||||
'resource://normandy/lib/ClientEnvironment.sys.mjs': typeof import('resource://normandy/lib/ClientEnvironment.sys.mjs');
|
||||
'resource://normandy/lib/Heartbeat.sys.mjs': typeof import('resource://normandy/lib/Heartbeat.sys.mjs');
|
||||
'resource://normandy/lib/LegacyHeartbeat.sys.mjs': typeof import('resource://normandy/lib/LegacyHeartbeat.sys.mjs');
|
||||
'resource://normandy/lib/LogManager.sys.mjs': typeof import('resource://normandy/lib/LogManager.sys.mjs');
|
||||
'resource://normandy/lib/NormandyAddonManager.sys.mjs': typeof import('resource://normandy/lib/NormandyAddonManager.sys.mjs');
|
||||
'resource://normandy/lib/NormandyApi.sys.mjs': typeof import('resource://normandy/lib/NormandyApi.sys.mjs');
|
||||
'resource://normandy/lib/NormandyUtils.sys.mjs': typeof import('resource://normandy/lib/NormandyUtils.sys.mjs');
|
||||
'resource://normandy/lib/PrefUtils.sys.mjs': typeof import('resource://normandy/lib/PrefUtils.sys.mjs');
|
||||
'resource://normandy/lib/PreferenceExperiments.sys.mjs': typeof import('resource://normandy/lib/PreferenceExperiments.sys.mjs');
|
||||
'resource://normandy/lib/PreferenceRollouts.sys.mjs': typeof import('resource://normandy/lib/PreferenceRollouts.sys.mjs');
|
||||
'resource://normandy/lib/RecipeRunner.sys.mjs': typeof import('resource://normandy/lib/RecipeRunner.sys.mjs');
|
||||
'resource://normandy/lib/ShieldPreferences.sys.mjs': typeof import('resource://normandy/lib/ShieldPreferences.sys.mjs');
|
||||
'resource://normandy/lib/Storage.sys.mjs': typeof import('resource://normandy/lib/Storage.sys.mjs');
|
||||
'resource://normandy/lib/TelemetryEvents.sys.mjs': typeof import('resource://normandy/lib/TelemetryEvents.sys.mjs');
|
||||
'resource://normandy/lib/Uptake.sys.mjs': typeof import('resource://normandy/lib/Uptake.sys.mjs');
|
||||
'resource://pdf.js/PdfJs.sys.mjs': typeof import('resource://pdf.js/PdfJs.sys.mjs');
|
||||
'resource://pdf.js/PdfJsNetwork.sys.mjs': typeof import('resource://pdf.js/PdfJsNetwork.sys.mjs');
|
||||
'resource://pdf.js/PdfJsTelemetry.sys.mjs': typeof import('resource://pdf.js/PdfJsTelemetry.sys.mjs');
|
||||
'resource://pdf.js/PdfSandbox.sys.mjs': typeof import('resource://pdf.js/PdfSandbox.sys.mjs');
|
||||
'resource://pdf.js/PdfStreamConverter.sys.mjs': typeof import('resource://pdf.js/PdfStreamConverter.sys.mjs');
|
||||
'resource://services-common/async.sys.mjs': typeof import('resource://services-common/async.sys.mjs');
|
||||
'resource://services-common/kinto-http-client.sys.mjs': typeof import('resource://services-common/kinto-http-client.sys.mjs');
|
||||
'resource://services-common/kinto-offline-client.sys.mjs': typeof import('resource://services-common/kinto-offline-client.sys.mjs');
|
||||
'resource://services-common/kinto-storage-adapter.sys.mjs': typeof import('resource://services-common/kinto-storage-adapter.sys.mjs');
|
||||
'resource://services-common/observers.sys.mjs': typeof import('resource://services-common/observers.sys.mjs');
|
||||
'resource://services-common/uptake-telemetry.sys.mjs': typeof import('resource://services-common/uptake-telemetry.sys.mjs');
|
||||
'resource://services-common/utils.sys.mjs': typeof import('resource://services-common/utils.sys.mjs');
|
||||
'resource://services-crypto/jwcrypto.sys.mjs': typeof import('resource://services-crypto/jwcrypto.sys.mjs');
|
||||
'resource://services-crypto/utils.sys.mjs': typeof import('resource://services-crypto/utils.sys.mjs');
|
||||
'resource://services-settings/Attachments.sys.mjs': typeof import('resource://services-settings/Attachments.sys.mjs');
|
||||
'resource://services-settings/Database.sys.mjs': typeof import('resource://services-settings/Database.sys.mjs');
|
||||
'resource://services-settings/IDBHelpers.sys.mjs': typeof import('resource://services-settings/IDBHelpers.sys.mjs');
|
||||
'resource://services-settings/RemoteSettingsClient.sys.mjs': typeof import('resource://services-settings/RemoteSettingsClient.sys.mjs');
|
||||
'resource://services-settings/RemoteSettingsWorker.sys.mjs': typeof import('resource://services-settings/RemoteSettingsWorker.sys.mjs');
|
||||
'resource://services-settings/SharedUtils.sys.mjs': typeof import('resource://services-settings/SharedUtils.sys.mjs');
|
||||
'resource://services-settings/SyncHistory.sys.mjs': typeof import('resource://services-settings/SyncHistory.sys.mjs');
|
||||
'resource://services-settings/Utils.sys.mjs': typeof import('resource://services-settings/Utils.sys.mjs');
|
||||
'resource://services-settings/remote-settings.sys.mjs': typeof import('resource://services-settings/remote-settings.sys.mjs');
|
||||
'resource://services-sync/SyncedTabs.sys.mjs': typeof import('resource://services-sync/SyncedTabs.sys.mjs');
|
||||
'resource://services-sync/TabsStore.sys.mjs': typeof import('resource://services-sync/TabsStore.sys.mjs');
|
||||
'resource://services-sync/UIState.sys.mjs': typeof import('resource://services-sync/UIState.sys.mjs');
|
||||
'resource://services-sync/constants.sys.mjs': typeof import('resource://services-sync/constants.sys.mjs');
|
||||
'resource://services-sync/doctor.sys.mjs': typeof import('resource://services-sync/doctor.sys.mjs');
|
||||
'resource://services-sync/engines/addons.sys.mjs': typeof import('resource://services-sync/engines/addons.sys.mjs');
|
||||
'resource://services-sync/engines/forms.sys.mjs': typeof import('resource://services-sync/engines/forms.sys.mjs');
|
||||
'resource://services-sync/engines/passwords.sys.mjs': typeof import('resource://services-sync/engines/passwords.sys.mjs');
|
||||
'resource://services-sync/keys.sys.mjs': typeof import('resource://services-sync/keys.sys.mjs');
|
||||
'resource://services-sync/main.sys.mjs': typeof import('resource://services-sync/main.sys.mjs');
|
||||
'resource://services-sync/record.sys.mjs': typeof import('resource://services-sync/record.sys.mjs');
|
||||
'resource://services-sync/resource.sys.mjs': typeof import('resource://services-sync/resource.sys.mjs');
|
||||
'resource://services-sync/service.sys.mjs': typeof import('resource://services-sync/service.sys.mjs');
|
||||
'resource://services-sync/status.sys.mjs': typeof import('resource://services-sync/status.sys.mjs');
|
||||
'resource://services-sync/sync_auth.sys.mjs': typeof import('resource://services-sync/sync_auth.sys.mjs');
|
||||
'resource://services-sync/telemetry.sys.mjs': typeof import('resource://services-sync/telemetry.sys.mjs');
|
||||
'resource://services-sync/util.sys.mjs': typeof import('resource://services-sync/util.sys.mjs');
|
||||
'resource://talos-powers/TalosParentProfiler.sys.mjs': typeof import('resource://talos-powers/TalosParentProfiler.sys.mjs');
|
||||
'resource://test/es6module_devtoolsLoader.js': typeof import('resource://test/es6module_devtoolsLoader.js');
|
||||
'resource://test/esm_lazy-1.sys.mjs': typeof import('resource://test/esm_lazy-1.sys.mjs');
|
||||
'resource://test/esm_lazy-2.sys.mjs': typeof import('resource://test/esm_lazy-2.sys.mjs');
|
||||
'resource://test/esmified-1.sys.mjs': typeof import('resource://test/esmified-1.sys.mjs');
|
||||
'resource://testing-common/AddonTestUtils.sys.mjs': typeof import('resource://testing-common/AddonTestUtils.sys.mjs');
|
||||
'resource://testing-common/AppInfo.sys.mjs': typeof import('resource://testing-common/AppInfo.sys.mjs');
|
||||
'resource://testing-common/AppUiTestDelegate.sys.mjs': typeof import('resource://testing-common/AppUiTestDelegate.sys.mjs');
|
||||
'resource://testing-common/Assert.sys.mjs': typeof import('resource://testing-common/Assert.sys.mjs');
|
||||
'resource://testing-common/BrowserTestUtils.sys.mjs': typeof import('resource://testing-common/BrowserTestUtils.sys.mjs');
|
||||
'resource://testing-common/ContentTask.sys.mjs': typeof import('resource://testing-common/ContentTask.sys.mjs');
|
||||
'resource://testing-common/ContentTaskUtils.sys.mjs': typeof import('resource://testing-common/ContentTaskUtils.sys.mjs');
|
||||
'resource://testing-common/CustomizableUITestUtils.sys.mjs': typeof import('resource://testing-common/CustomizableUITestUtils.sys.mjs');
|
||||
'resource://testing-common/DoHTestUtils.sys.mjs': typeof import('resource://testing-common/DoHTestUtils.sys.mjs');
|
||||
'resource://testing-common/EnterprisePolicyTesting.sys.mjs': typeof import('resource://testing-common/EnterprisePolicyTesting.sys.mjs');
|
||||
'resource://testing-common/ExtensionTestCommon.sys.mjs': typeof import('resource://testing-common/ExtensionTestCommon.sys.mjs');
|
||||
'resource://testing-common/ExtensionXPCShellUtils.sys.mjs': typeof import('resource://testing-common/ExtensionXPCShellUtils.sys.mjs');
|
||||
'resource://testing-common/FileTestUtils.sys.mjs': typeof import('resource://testing-common/FileTestUtils.sys.mjs');
|
||||
'resource://testing-common/FormHistoryTestUtils.sys.mjs': typeof import('resource://testing-common/FormHistoryTestUtils.sys.mjs');
|
||||
'resource://testing-common/MerinoTestUtils.sys.mjs': typeof import('resource://testing-common/MerinoTestUtils.sys.mjs');
|
||||
'resource://testing-common/MessageChannel.sys.mjs': typeof import('resource://testing-common/MessageChannel.sys.mjs');
|
||||
'resource://testing-common/MockColorPicker.sys.mjs': typeof import('resource://testing-common/MockColorPicker.sys.mjs');
|
||||
'resource://testing-common/MockFilePicker.sys.mjs': typeof import('resource://testing-common/MockFilePicker.sys.mjs');
|
||||
'resource://testing-common/MockPermissionPrompt.sys.mjs': typeof import('resource://testing-common/MockPermissionPrompt.sys.mjs');
|
||||
'resource://testing-common/MockPromptCollection.sys.mjs': typeof import('resource://testing-common/MockPromptCollection.sys.mjs');
|
||||
'resource://testing-common/MockRegistrar.sys.mjs': typeof import('resource://testing-common/MockRegistrar.sys.mjs');
|
||||
'resource://testing-common/MockRegistry.sys.mjs': typeof import('resource://testing-common/MockRegistry.sys.mjs');
|
||||
'resource://testing-common/MockSound.sys.mjs': typeof import('resource://testing-common/MockSound.sys.mjs');
|
||||
'resource://testing-common/NimbusTestUtils.sys.mjs': typeof import('resource://testing-common/NimbusTestUtils.sys.mjs');
|
||||
'resource://testing-common/NormandyTestUtils.sys.mjs': typeof import('resource://testing-common/NormandyTestUtils.sys.mjs');
|
||||
'resource://testing-common/PerTestCoverageUtils.sys.mjs': typeof import('resource://testing-common/PerTestCoverageUtils.sys.mjs');
|
||||
'resource://testing-common/PerfTestHelpers.sys.mjs': typeof import('resource://testing-common/PerfTestHelpers.sys.mjs');
|
||||
'resource://testing-common/PermissionTestUtils.sys.mjs': typeof import('resource://testing-common/PermissionTestUtils.sys.mjs');
|
||||
'resource://testing-common/PlacesTestUtils.sys.mjs': typeof import('resource://testing-common/PlacesTestUtils.sys.mjs');
|
||||
'resource://testing-common/PromiseTestUtils.sys.mjs': typeof import('resource://testing-common/PromiseTestUtils.sys.mjs');
|
||||
'resource://testing-common/PromptTestUtils.sys.mjs': typeof import('resource://testing-common/PromptTestUtils.sys.mjs');
|
||||
'resource://testing-common/RegionTestUtils.sys.mjs': typeof import('resource://testing-common/RegionTestUtils.sys.mjs');
|
||||
'resource://testing-common/RemoteSettingsServer.sys.mjs': typeof import('resource://testing-common/RemoteSettingsServer.sys.mjs');
|
||||
'resource://testing-common/SearchTestUtils.sys.mjs': typeof import('resource://testing-common/SearchTestUtils.sys.mjs');
|
||||
'resource://testing-common/Sinon.sys.mjs': typeof import('resource://testing-common/Sinon.sys.mjs');
|
||||
'resource://testing-common/SiteDataTestUtils.sys.mjs': typeof import('resource://testing-common/SiteDataTestUtils.sys.mjs');
|
||||
'resource://testing-common/SpecialPowersParent.sys.mjs': typeof import('resource://testing-common/SpecialPowersParent.sys.mjs');
|
||||
'resource://testing-common/SpecialPowersSandbox.sys.mjs': typeof import('resource://testing-common/SpecialPowersSandbox.sys.mjs');
|
||||
'resource://testing-common/TelemetryArchiveTesting.sys.mjs': typeof import('resource://testing-common/TelemetryArchiveTesting.sys.mjs');
|
||||
'resource://testing-common/TelemetryTestUtils.sys.mjs': typeof import('resource://testing-common/TelemetryTestUtils.sys.mjs');
|
||||
'resource://testing-common/TestUtils.sys.mjs': typeof import('resource://testing-common/TestUtils.sys.mjs');
|
||||
'resource://testing-common/UrlbarTestUtils.sys.mjs': typeof import('resource://testing-common/UrlbarTestUtils.sys.mjs');
|
||||
'resource://testing-common/WrapPrivileged.sys.mjs': typeof import('resource://testing-common/WrapPrivileged.sys.mjs');
|
||||
'resource://testing-common/XPCShellContentUtils.sys.mjs': typeof import('resource://testing-common/XPCShellContentUtils.sys.mjs');
|
||||
'resource://testing-common/httpd.sys.mjs': typeof import('resource://testing-common/httpd.sys.mjs');
|
||||
'resource://tps/auth/fxaccounts.sys.mjs': typeof import('resource://tps/auth/fxaccounts.sys.mjs');
|
||||
'resource://tps/logger.sys.mjs': typeof import('resource://tps/logger.sys.mjs');
|
||||
'resource://tps/modules/addons.sys.mjs': typeof import('resource://tps/modules/addons.sys.mjs');
|
||||
'resource://tps/modules/bookmarkValidator.sys.mjs': typeof import('resource://tps/modules/bookmarkValidator.sys.mjs');
|
||||
'resource://tps/modules/bookmarks.sys.mjs': typeof import('resource://tps/modules/bookmarks.sys.mjs');
|
||||
'resource://tps/modules/formautofill.sys.mjs': typeof import('resource://tps/modules/formautofill.sys.mjs');
|
||||
'resource://tps/modules/forms.sys.mjs': typeof import('resource://tps/modules/forms.sys.mjs');
|
||||
'resource://tps/modules/history.sys.mjs': typeof import('resource://tps/modules/history.sys.mjs');
|
||||
'resource://tps/modules/passwords.sys.mjs': typeof import('resource://tps/modules/passwords.sys.mjs');
|
||||
'resource://tps/modules/prefs.sys.mjs': typeof import('resource://tps/modules/prefs.sys.mjs');
|
||||
'resource://tps/modules/tabs.sys.mjs': typeof import('resource://tps/modules/tabs.sys.mjs');
|
||||
'resource://tps/modules/windows.sys.mjs': typeof import('resource://tps/modules/windows.sys.mjs');
|
||||
}
|
||||
677
src/zen/@types/lib.gecko.nsresult.d.ts
vendored
Normal file
677
src/zen/@types/lib.gecko.nsresult.d.ts
vendored
Normal file
@@ -0,0 +1,677 @@
|
||||
/**
|
||||
* NOTE: Do not modify this file by hand.
|
||||
* Content was generated from xpc.msg and error_list.json.
|
||||
* If you're updating some of the sources, see README for instructions.
|
||||
*/
|
||||
|
||||
interface nsIXPCComponents_Results {
|
||||
// Error Message definitions.
|
||||
|
||||
// xpconnect specific codes (from nsIXPConnect.h)
|
||||
|
||||
/** Not enough arguments */
|
||||
NS_ERROR_XPC_NOT_ENOUGH_ARGS: 0x80570001;
|
||||
|
||||
/** 'Out' argument must be an object */
|
||||
NS_ERROR_XPC_NEED_OUT_OBJECT: 0x80570002;
|
||||
|
||||
/** Cannot set 'value' property of 'out' argument */
|
||||
NS_ERROR_XPC_CANT_SET_OUT_VAL: 0x80570003;
|
||||
|
||||
/** Component returned failure code: */
|
||||
NS_ERROR_XPC_NATIVE_RETURNED_FAILURE: 0x80570004;
|
||||
|
||||
/** Cannot find interface information */
|
||||
NS_ERROR_XPC_CANT_GET_INTERFACE_INFO: 0x80570005;
|
||||
|
||||
/** Cannot find interface information for parameter */
|
||||
NS_ERROR_XPC_CANT_GET_PARAM_IFACE_INFO: 0x80570006;
|
||||
|
||||
/** Cannot find method information */
|
||||
NS_ERROR_XPC_CANT_GET_METHOD_INFO: 0x80570007;
|
||||
|
||||
/** Unexpected error in XPConnect */
|
||||
NS_ERROR_XPC_UNEXPECTED: 0x80570008;
|
||||
|
||||
/** Could not convert JavaScript argument */
|
||||
NS_ERROR_XPC_BAD_CONVERT_JS: 0x80570009;
|
||||
|
||||
/** Could not convert Native argument */
|
||||
NS_ERROR_XPC_BAD_CONVERT_NATIVE: 0x8057000a;
|
||||
|
||||
/** Could not convert JavaScript argument (NULL value cannot be used for a C++ reference type) */
|
||||
NS_ERROR_XPC_BAD_CONVERT_JS_NULL_REF: 0x8057000b;
|
||||
|
||||
/** Illegal operation on WrappedNative prototype object */
|
||||
NS_ERROR_XPC_BAD_OP_ON_WN_PROTO: 0x8057000c;
|
||||
|
||||
/** Cannot convert WrappedNative to function */
|
||||
NS_ERROR_XPC_CANT_CONVERT_WN_TO_FUN: 0x8057000d;
|
||||
|
||||
/** Cannot define new property in a WrappedNative */
|
||||
NS_ERROR_XPC_CANT_DEFINE_PROP_ON_WN: 0x8057000e;
|
||||
|
||||
/** Cannot place watchpoints on WrappedNative object static properties */
|
||||
NS_ERROR_XPC_CANT_WATCH_WN_STATIC: 0x8057000f;
|
||||
|
||||
/** Cannot export a WrappedNative object's static properties */
|
||||
NS_ERROR_XPC_CANT_EXPORT_WN_STATIC: 0x80570010;
|
||||
|
||||
/** nsIXPCScriptable::Call failed */
|
||||
NS_ERROR_XPC_SCRIPTABLE_CALL_FAILED: 0x80570011;
|
||||
|
||||
/** nsIXPCScriptable::Construct failed */
|
||||
NS_ERROR_XPC_SCRIPTABLE_CTOR_FAILED: 0x80570012;
|
||||
|
||||
/** Cannot use wrapper as function unless it implements nsIXPCScriptable */
|
||||
NS_ERROR_XPC_CANT_CALL_WO_SCRIPTABLE: 0x80570013;
|
||||
|
||||
/** Cannot use wrapper as constructor unless it implements nsIXPCScriptable */
|
||||
NS_ERROR_XPC_CANT_CTOR_WO_SCRIPTABLE: 0x80570014;
|
||||
|
||||
/** ComponentManager::CreateInstance returned failure code: */
|
||||
NS_ERROR_XPC_CI_RETURNED_FAILURE: 0x80570015;
|
||||
|
||||
/** ServiceManager::GetService returned failure code: */
|
||||
NS_ERROR_XPC_GS_RETURNED_FAILURE: 0x80570016;
|
||||
|
||||
/** Invalid ClassID or ContractID */
|
||||
NS_ERROR_XPC_BAD_CID: 0x80570017;
|
||||
|
||||
/** Invalid InterfaceID */
|
||||
NS_ERROR_XPC_BAD_IID: 0x80570018;
|
||||
|
||||
/** Cannot create wrapper around native interface */
|
||||
NS_ERROR_XPC_CANT_CREATE_WN: 0x80570019;
|
||||
|
||||
/** JavaScript component threw exception */
|
||||
NS_ERROR_XPC_JS_THREW_EXCEPTION: 0x8057001a;
|
||||
|
||||
/** JavaScript component threw a native object that is not an exception */
|
||||
NS_ERROR_XPC_JS_THREW_NATIVE_OBJECT: 0x8057001b;
|
||||
|
||||
/** JavaScript component threw a JavaScript object */
|
||||
NS_ERROR_XPC_JS_THREW_JS_OBJECT: 0x8057001c;
|
||||
|
||||
/** JavaScript component threw a null value as an exception */
|
||||
NS_ERROR_XPC_JS_THREW_NULL: 0x8057001d;
|
||||
|
||||
/** JavaScript component threw a string as an exception */
|
||||
NS_ERROR_XPC_JS_THREW_STRING: 0x8057001e;
|
||||
|
||||
/** JavaScript component threw a number as an exception */
|
||||
NS_ERROR_XPC_JS_THREW_NUMBER: 0x8057001f;
|
||||
|
||||
/** JavaScript component caused a JavaScript error */
|
||||
NS_ERROR_XPC_JAVASCRIPT_ERROR: 0x80570020;
|
||||
|
||||
/** JavaScript component caused a JavaScript error (detailed report attached) */
|
||||
NS_ERROR_XPC_JAVASCRIPT_ERROR_WITH_DETAILS: 0x80570021;
|
||||
|
||||
/** Cannot convert primitive JavaScript value into an array */
|
||||
NS_ERROR_XPC_CANT_CONVERT_PRIMITIVE_TO_ARRAY: 0x80570022;
|
||||
|
||||
/** Cannot convert JavaScript object into an array */
|
||||
NS_ERROR_XPC_CANT_CONVERT_OBJECT_TO_ARRAY: 0x80570023;
|
||||
|
||||
/** JavaScript Array does not have as many elements as indicated by size argument */
|
||||
NS_ERROR_XPC_NOT_ENOUGH_ELEMENTS_IN_ARRAY: 0x80570024;
|
||||
|
||||
/** Cannot find array information */
|
||||
NS_ERROR_XPC_CANT_GET_ARRAY_INFO: 0x80570025;
|
||||
|
||||
/** JavaScript String does not have as many characters as indicated by size argument */
|
||||
NS_ERROR_XPC_NOT_ENOUGH_CHARS_IN_STRING: 0x80570026;
|
||||
|
||||
/** Security Manager vetoed action */
|
||||
NS_ERROR_XPC_SECURITY_MANAGER_VETO: 0x80570027;
|
||||
|
||||
/** Failed to build a wrapper because the interface that was not declared [scriptable] */
|
||||
NS_ERROR_XPC_INTERFACE_NOT_SCRIPTABLE: 0x80570028;
|
||||
|
||||
/** Failed to build a wrapper because the interface does not inherit from nsISupports */
|
||||
NS_ERROR_XPC_INTERFACE_NOT_FROM_NSISUPPORTS: 0x80570029;
|
||||
|
||||
/** Property is a constant and cannot be changed */
|
||||
NS_ERROR_XPC_CANT_SET_READ_ONLY_CONSTANT: 0x8057002b;
|
||||
|
||||
/** Property is a read only attribute and cannot be changed */
|
||||
NS_ERROR_XPC_CANT_SET_READ_ONLY_ATTRIBUTE: 0x8057002c;
|
||||
|
||||
/** Property is an interface method and cannot be changed */
|
||||
NS_ERROR_XPC_CANT_SET_READ_ONLY_METHOD: 0x8057002d;
|
||||
|
||||
/** Cannot add property to WrappedNative object */
|
||||
NS_ERROR_XPC_CANT_ADD_PROP_TO_WRAPPED_NATIVE: 0x8057002e;
|
||||
|
||||
/** Call to nsIXPCScriptable interface for WrappedNative failed unexpecedly */
|
||||
NS_ERROR_XPC_CALL_TO_SCRIPTABLE_FAILED: 0x8057002f;
|
||||
|
||||
/** JavaScript component does not have a method named: */
|
||||
NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED: 0x80570030;
|
||||
|
||||
/** Bad ID string */
|
||||
NS_ERROR_XPC_BAD_ID_STRING: 0x80570031;
|
||||
|
||||
/** Bad initializer name in Constructor - Component has no method with that name */
|
||||
NS_ERROR_XPC_BAD_INITIALIZER_NAME: 0x80570032;
|
||||
|
||||
/** Operation failed because the XPConnect subsystem has been shutdown */
|
||||
NS_ERROR_XPC_HAS_BEEN_SHUTDOWN: 0x80570033;
|
||||
|
||||
/** Cannot modify properties of a WrappedNative */
|
||||
NS_ERROR_XPC_CANT_MODIFY_PROP_ON_WN: 0x80570034;
|
||||
|
||||
/** Could not convert JavaScript argument - 0 was passed, expected object. Did you mean null? */
|
||||
NS_ERROR_XPC_BAD_CONVERT_JS_ZERO_ISNOT_NULL: 0x80570035;
|
||||
|
||||
// common global codes (from nsError.h)
|
||||
|
||||
/** Success */
|
||||
NS_OK: 0x0;
|
||||
|
||||
/** Component not initialized */
|
||||
NS_ERROR_NOT_INITIALIZED: 0xc1f30001;
|
||||
|
||||
/** Component already initialized */
|
||||
NS_ERROR_ALREADY_INITIALIZED: 0xc1f30002;
|
||||
|
||||
/** Method not implemented */
|
||||
NS_ERROR_NOT_IMPLEMENTED: 0x80004001;
|
||||
|
||||
/** Component does not have requested interface */
|
||||
NS_NOINTERFACE: 0x80004002;
|
||||
|
||||
/** Component does not have requested interface */
|
||||
NS_ERROR_NO_INTERFACE: 0x80004002;
|
||||
|
||||
/** Illegal value */
|
||||
NS_ERROR_ILLEGAL_VALUE: 0x80070057;
|
||||
|
||||
/** Invalid pointer */
|
||||
NS_ERROR_INVALID_POINTER: 0x80070057;
|
||||
|
||||
/** Null pointer */
|
||||
NS_ERROR_NULL_POINTER: 0x80070057;
|
||||
|
||||
/** Abort */
|
||||
NS_ERROR_ABORT: 0x80004004;
|
||||
|
||||
/** Failure */
|
||||
NS_ERROR_FAILURE: 0x80004005;
|
||||
|
||||
/** Unexpected error */
|
||||
NS_ERROR_UNEXPECTED: 0x8000ffff;
|
||||
|
||||
/** Out of Memory */
|
||||
NS_ERROR_OUT_OF_MEMORY: 0x8007000e;
|
||||
|
||||
/** Invalid argument */
|
||||
NS_ERROR_INVALID_ARG: 0x80070057;
|
||||
|
||||
/** Component is not available */
|
||||
NS_ERROR_NOT_AVAILABLE: 0x80040111;
|
||||
|
||||
/** Factory not registered */
|
||||
NS_ERROR_FACTORY_NOT_REGISTERED: 0x80040154;
|
||||
|
||||
/** Factory not registered (may be tried again) */
|
||||
NS_ERROR_FACTORY_REGISTER_AGAIN: 0x80040155;
|
||||
|
||||
/** Factory not loaded */
|
||||
NS_ERROR_FACTORY_NOT_LOADED: 0x800401f8;
|
||||
|
||||
/** Factory does not support signatures */
|
||||
NS_ERROR_FACTORY_NO_SIGNATURE_SUPPORT: 0xc1f30101;
|
||||
|
||||
/** Factory already exists */
|
||||
NS_ERROR_FACTORY_EXISTS: 0xc1f30100;
|
||||
|
||||
// added from nsError.h on Feb 28 2001...
|
||||
|
||||
/** Stream closed */
|
||||
NS_BASE_STREAM_CLOSED: 0x80470002;
|
||||
|
||||
/** Error from the operating system */
|
||||
NS_BASE_STREAM_OSERROR: 0x80470003;
|
||||
|
||||
/** Illegal arguments */
|
||||
NS_BASE_STREAM_ILLEGAL_ARGS: 0x80470004;
|
||||
|
||||
/** No converter for unichar streams */
|
||||
NS_BASE_STREAM_NO_CONVERTER: 0x80470005;
|
||||
|
||||
/** Bad converter for unichar streams */
|
||||
NS_BASE_STREAM_BAD_CONVERSION: 0x80470006;
|
||||
|
||||
/** Stream would block */
|
||||
NS_BASE_STREAM_WOULD_BLOCK: 0x80470007;
|
||||
|
||||
/** File error: Unrecognized path */
|
||||
NS_ERROR_FILE_UNRECOGNIZED_PATH: 0x80520001;
|
||||
|
||||
/** File error: Unresolvable symlink */
|
||||
NS_ERROR_FILE_UNRESOLVABLE_SYMLINK: 0x80520002;
|
||||
|
||||
/** File error: Execution failed */
|
||||
NS_ERROR_FILE_EXECUTION_FAILED: 0x80520003;
|
||||
|
||||
/** File error: Unknown type */
|
||||
NS_ERROR_FILE_UNKNOWN_TYPE: 0x80520004;
|
||||
|
||||
/** File error: Destination not dir */
|
||||
NS_ERROR_FILE_DESTINATION_NOT_DIR: 0x80520005;
|
||||
|
||||
/** File error: Copy or move failed */
|
||||
NS_ERROR_FILE_COPY_OR_MOVE_FAILED: 0x80520007;
|
||||
|
||||
/** File error: Already exists */
|
||||
NS_ERROR_FILE_ALREADY_EXISTS: 0x80520008;
|
||||
|
||||
/** File error: Invalid path */
|
||||
NS_ERROR_FILE_INVALID_PATH: 0x80520009;
|
||||
|
||||
/** File error: Corrupted */
|
||||
NS_ERROR_FILE_CORRUPTED: 0x8052000b;
|
||||
|
||||
/** File error: Not directory */
|
||||
NS_ERROR_FILE_NOT_DIRECTORY: 0x8052000c;
|
||||
|
||||
/** File error: Is directory */
|
||||
NS_ERROR_FILE_IS_DIRECTORY: 0x8052000d;
|
||||
|
||||
/** File error: Is locked */
|
||||
NS_ERROR_FILE_IS_LOCKED: 0x8052000e;
|
||||
|
||||
/** File error: Too big */
|
||||
NS_ERROR_FILE_TOO_BIG: 0x8052000f;
|
||||
|
||||
/** File error: No device space */
|
||||
NS_ERROR_FILE_NO_DEVICE_SPACE: 0x80520010;
|
||||
|
||||
/** File error: Name too long */
|
||||
NS_ERROR_FILE_NAME_TOO_LONG: 0x80520011;
|
||||
|
||||
/** File error: Not found */
|
||||
NS_ERROR_FILE_NOT_FOUND: 0x80520012;
|
||||
|
||||
/** File error: Read only */
|
||||
NS_ERROR_FILE_READ_ONLY: 0x80520013;
|
||||
|
||||
/** File error: Dir not empty */
|
||||
NS_ERROR_FILE_DIR_NOT_EMPTY: 0x80520014;
|
||||
|
||||
/** File error: Access denied */
|
||||
NS_ERROR_FILE_ACCESS_DENIED: 0x80520015;
|
||||
|
||||
// added from nsError.h on Sept 6 2001...
|
||||
|
||||
/** Data conversion error */
|
||||
NS_ERROR_CANNOT_CONVERT_DATA: 0x80460001;
|
||||
|
||||
/** Can not modify immutable data container */
|
||||
NS_ERROR_OBJECT_IS_IMMUTABLE: 0x80460002;
|
||||
|
||||
/** Data conversion failed because significant data would be lost */
|
||||
NS_ERROR_LOSS_OF_SIGNIFICANT_DATA: 0x80460003;
|
||||
|
||||
/** Data conversion succeeded but data was rounded to fit */
|
||||
NS_SUCCESS_LOSS_OF_INSIGNIFICANT_DATA: 0x460001;
|
||||
|
||||
// network related codes (from nsNetError.h)
|
||||
|
||||
/** The async request failed for some unknown reason */
|
||||
NS_BINDING_FAILED: 0x804b0001;
|
||||
|
||||
/** The async request failed because it was aborted by some user action */
|
||||
NS_BINDING_ABORTED: 0x804b0002;
|
||||
|
||||
/** The async request has been redirected to a different async request */
|
||||
NS_BINDING_REDIRECTED: 0x804b0003;
|
||||
|
||||
/** The async request has been retargeted to a different handler */
|
||||
NS_BINDING_RETARGETED: 0x804b0004;
|
||||
|
||||
/** The URI is malformed */
|
||||
NS_ERROR_MALFORMED_URI: 0x804b000a;
|
||||
|
||||
/** The URI scheme corresponds to an unknown protocol handler */
|
||||
NS_ERROR_UNKNOWN_PROTOCOL: 0x804b0012;
|
||||
|
||||
/** Channel opened successfully but no data will be returned */
|
||||
NS_ERROR_NO_CONTENT: 0x804b0011;
|
||||
|
||||
/** The requested action could not be completed while the object is busy */
|
||||
NS_ERROR_IN_PROGRESS: 0x804b000f;
|
||||
|
||||
/** Channel is already open */
|
||||
NS_ERROR_ALREADY_OPENED: 0x804b0049;
|
||||
|
||||
/** The content encoding of the source document is incorrect */
|
||||
NS_ERROR_INVALID_CONTENT_ENCODING: 0x804b001b;
|
||||
|
||||
/** Corrupted content received from server (potentially MIME type mismatch because of 'X-Content-Type-Options: nosniff') */
|
||||
NS_ERROR_CORRUPTED_CONTENT: 0x804b001d;
|
||||
|
||||
/** Couldn't extract first component from potentially corrupted header field */
|
||||
NS_ERROR_FIRST_HEADER_FIELD_COMPONENT_EMPTY: 0x804b0022;
|
||||
|
||||
/** The connection is already established */
|
||||
NS_ERROR_ALREADY_CONNECTED: 0x804b000b;
|
||||
|
||||
/** The connection does not exist */
|
||||
NS_ERROR_NOT_CONNECTED: 0x804b000c;
|
||||
|
||||
/** The connection was refused */
|
||||
NS_ERROR_CONNECTION_REFUSED: 0x804b000d;
|
||||
|
||||
/** User refused navigation to potentially unsafe URL with embedded credentials/superfluos authentication */
|
||||
NS_ERROR_SUPERFLUOS_AUTH: 0x804b005b;
|
||||
|
||||
/** User attempted basic HTTP authentication when it is disabled */
|
||||
NS_ERROR_BASIC_HTTP_AUTH_DISABLED: 0x804b005c;
|
||||
|
||||
// Error codes return from the proxy
|
||||
|
||||
/** The connection to the proxy server was refused */
|
||||
NS_ERROR_PROXY_CONNECTION_REFUSED: 0x804b0048;
|
||||
|
||||
/** The proxy requires authentication */
|
||||
NS_ERROR_PROXY_AUTHENTICATION_FAILED: 0x804b057f;
|
||||
|
||||
/** The request failed on the proxy */
|
||||
NS_ERROR_PROXY_BAD_GATEWAY: 0x804b05de;
|
||||
|
||||
/** The request timed out on the proxy */
|
||||
NS_ERROR_PROXY_GATEWAY_TIMEOUT: 0x804b05e0;
|
||||
|
||||
/** Sending too many requests to a proxy */
|
||||
NS_ERROR_PROXY_TOO_MANY_REQUESTS: 0x804b0595;
|
||||
|
||||
/** The proxy does not support the version of the HTTP request */
|
||||
NS_ERROR_PROXY_VERSION_NOT_SUPPORTED: 0x804b05e1;
|
||||
|
||||
/** The user is banned from the proxy */
|
||||
NS_ERROR_PROXY_FORBIDDEN: 0x804b057b;
|
||||
|
||||
/** The proxy is not available */
|
||||
NS_ERROR_PROXY_SERVICE_UNAVAILABLE: 0x804b05df;
|
||||
|
||||
/** The desired destination is unavailable for legal reasons */
|
||||
NS_ERROR_PROXY_UNAVAILABLE_FOR_LEGAL_REASONS: 0x804b05ab;
|
||||
|
||||
/** The connection has timed out */
|
||||
NS_ERROR_NET_TIMEOUT: 0x804b000e;
|
||||
|
||||
/** The request has been cancelled because of a timeout */
|
||||
NS_ERROR_NET_TIMEOUT_EXTERNAL: 0x804b0055;
|
||||
|
||||
/** The requested action could not be completed in the offline state */
|
||||
NS_ERROR_OFFLINE: 0x804b0010;
|
||||
|
||||
/** Establishing a connection to an unsafe or otherwise banned port was prohibited */
|
||||
NS_ERROR_PORT_ACCESS_NOT_ALLOWED: 0x804b0013;
|
||||
|
||||
/** The connection was established, but no data was ever received */
|
||||
NS_ERROR_NET_RESET: 0x804b0014;
|
||||
|
||||
/** The connection was established, but the browser received an empty page with an error response */
|
||||
NS_ERROR_NET_EMPTY_RESPONSE: 0x804b0024;
|
||||
|
||||
/** The connection was established, but the browser received an error response from the server */
|
||||
NS_ERROR_NET_ERROR_RESPONSE: 0x804b0023;
|
||||
|
||||
/** The connection was established, but the data transfer was interrupted */
|
||||
NS_ERROR_NET_INTERRUPT: 0x804b0047;
|
||||
|
||||
/** A transfer was only partially done when it completed */
|
||||
NS_ERROR_NET_PARTIAL_TRANSFER: 0x804b004c;
|
||||
|
||||
/** There has been a http3 protocol error */
|
||||
NS_ERROR_NET_HTTP3_PROTOCOL_ERROR: 0x804b0054;
|
||||
|
||||
/** This request is not resumable, but it was tried to resume it, or to request resume-specific data */
|
||||
NS_ERROR_NOT_RESUMABLE: 0x804b0019;
|
||||
|
||||
/** It was attempted to resume the request, but the entity has changed in the meantime */
|
||||
NS_ERROR_ENTITY_CHANGED: 0x804b0020;
|
||||
|
||||
/** The request failed as a result of a detected redirection loop */
|
||||
NS_ERROR_REDIRECT_LOOP: 0x804b001f;
|
||||
|
||||
/** The request failed because the content type returned by the server was not a type expected by the channel */
|
||||
NS_ERROR_UNSAFE_CONTENT_TYPE: 0x804b004a;
|
||||
|
||||
/** The load caused an error page to be displayed. */
|
||||
NS_ERROR_LOAD_SHOWED_ERRORPAGE: 0x804b004d;
|
||||
|
||||
/** The request was blocked by a policy set by the system administrator. */
|
||||
NS_ERROR_BLOCKED_BY_POLICY: 0x80780003;
|
||||
|
||||
/** The lookup of the hostname failed */
|
||||
NS_ERROR_UNKNOWN_HOST: 0x804b001e;
|
||||
|
||||
/** The DNS lookup queue is full */
|
||||
NS_ERROR_DNS_LOOKUP_QUEUE_FULL: 0x804b0021;
|
||||
|
||||
/** The lookup of the proxy hostname failed */
|
||||
NS_ERROR_UNKNOWN_PROXY_HOST: 0x804b002a;
|
||||
|
||||
/** The specified socket type does not exist */
|
||||
NS_ERROR_UNKNOWN_SOCKET_TYPE: 0x804b0033;
|
||||
|
||||
/** The specified socket type could not be created */
|
||||
NS_ERROR_SOCKET_CREATE_FAILED: 0x804b0034;
|
||||
|
||||
/** The specified socket address type is not supported */
|
||||
NS_ERROR_SOCKET_ADDRESS_NOT_SUPPORTED: 0x804b0035;
|
||||
|
||||
/** Some other socket is already using the specified address. */
|
||||
NS_ERROR_SOCKET_ADDRESS_IN_USE: 0x804b0036;
|
||||
|
||||
/** Cache key could not be found */
|
||||
NS_ERROR_CACHE_KEY_NOT_FOUND: 0x804b003d;
|
||||
|
||||
/** Cache data is a stream */
|
||||
NS_ERROR_CACHE_DATA_IS_STREAM: 0x804b003e;
|
||||
|
||||
/** Cache data is not a stream */
|
||||
NS_ERROR_CACHE_DATA_IS_NOT_STREAM: 0x804b003f;
|
||||
|
||||
/** Cache entry exists but needs to be validated first */
|
||||
NS_ERROR_CACHE_WAIT_FOR_VALIDATION: 0x804b0040;
|
||||
|
||||
/** Cache entry has been doomed */
|
||||
NS_ERROR_CACHE_ENTRY_DOOMED: 0x804b0041;
|
||||
|
||||
/** Read access to cache denied */
|
||||
NS_ERROR_CACHE_READ_ACCESS_DENIED: 0x804b0042;
|
||||
|
||||
/** Write access to cache denied */
|
||||
NS_ERROR_CACHE_WRITE_ACCESS_DENIED: 0x804b0043;
|
||||
|
||||
/** Cache is currently in use */
|
||||
NS_ERROR_CACHE_IN_USE: 0x804b0044;
|
||||
|
||||
/** Document does not exist in cache */
|
||||
NS_ERROR_DOCUMENT_NOT_CACHED: 0x804b0046;
|
||||
|
||||
/** The requested number of domain levels exceeds those present in the host string */
|
||||
NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS: 0x804b0050;
|
||||
|
||||
/** The host string is an IP address */
|
||||
NS_ERROR_HOST_IS_IP_ADDRESS: 0x804b0051;
|
||||
|
||||
/** Can't access a wrapped JS object from a different thread */
|
||||
NS_ERROR_NOT_SAME_THREAD: 0x80460004;
|
||||
|
||||
// storage related codes (from mozStorage.h)
|
||||
|
||||
/** SQLite database connection is busy */
|
||||
NS_ERROR_STORAGE_BUSY: 0x80630001;
|
||||
|
||||
/** SQLite encountered an IO error */
|
||||
NS_ERROR_STORAGE_IOERR: 0x80630002;
|
||||
|
||||
/** SQLite database operation failed because a constraint was violated */
|
||||
NS_ERROR_STORAGE_CONSTRAINT: 0x80630003;
|
||||
|
||||
// plugin related codes (from nsPluginError.h)
|
||||
|
||||
/** Clearing site data by time range not supported by plugin */
|
||||
NS_ERROR_PLUGIN_TIME_RANGE_NOT_SUPPORTED: 0x804c03eb;
|
||||
|
||||
// character converter related codes
|
||||
|
||||
/** The input characters have illegal sequences */
|
||||
NS_ERROR_ILLEGAL_INPUT: 0x8050000e;
|
||||
|
||||
// Codes related to signd jars
|
||||
|
||||
/** The JAR is not signed. */
|
||||
NS_ERROR_SIGNED_JAR_NOT_SIGNED: 0x80680001;
|
||||
|
||||
/** An entry in the JAR has been modified after the JAR was signed. */
|
||||
NS_ERROR_SIGNED_JAR_MODIFIED_ENTRY: 0x80680002;
|
||||
|
||||
/** An entry in the JAR has not been signed. */
|
||||
NS_ERROR_SIGNED_JAR_UNSIGNED_ENTRY: 0x80680003;
|
||||
|
||||
/** An entry is missing from the JAR file. */
|
||||
NS_ERROR_SIGNED_JAR_ENTRY_MISSING: 0x80680004;
|
||||
|
||||
/** The JAR's signature is wrong. */
|
||||
NS_ERROR_SIGNED_JAR_WRONG_SIGNATURE: 0x80680005;
|
||||
|
||||
/** An entry in the JAR is too large. */
|
||||
NS_ERROR_SIGNED_JAR_ENTRY_TOO_LARGE: 0x80680006;
|
||||
|
||||
/** An entry in the JAR is invalid. */
|
||||
NS_ERROR_SIGNED_JAR_ENTRY_INVALID: 0x80680007;
|
||||
|
||||
/** The JAR's manifest or signature file is invalid. */
|
||||
NS_ERROR_SIGNED_JAR_MANIFEST_INVALID: 0x80680008;
|
||||
|
||||
/** The PKCS#7 signature is malformed or invalid. */
|
||||
NS_ERROR_CMS_VERIFY_NO_CONTENT_INFO: 0x805a0401;
|
||||
|
||||
/** The PKCS#7 information is not signed. */
|
||||
NS_ERROR_CMS_VERIFY_NOT_SIGNED: 0x805a0400;
|
||||
|
||||
// Codes related to signed manifests
|
||||
|
||||
/** The signed app manifest or signature file is invalid. */
|
||||
NS_ERROR_SIGNED_APP_MANIFEST_INVALID: 0x806b0001;
|
||||
|
||||
// Codes for printing-related errors.
|
||||
|
||||
/** No printers available. */
|
||||
NS_ERROR_GFX_PRINTER_NO_PRINTER_AVAILABLE: 0x80480001;
|
||||
|
||||
/** The selected printer could not be found. */
|
||||
NS_ERROR_GFX_PRINTER_NAME_NOT_FOUND: 0x80480002;
|
||||
|
||||
/** Failed to open output file for print to file. */
|
||||
NS_ERROR_GFX_PRINTER_COULD_NOT_OPEN_FILE: 0x80480003;
|
||||
|
||||
/** Printing failed while starting the print job. */
|
||||
NS_ERROR_GFX_PRINTER_STARTDOC: 0x80480004;
|
||||
|
||||
/** Printing failed while completing the print job. */
|
||||
NS_ERROR_GFX_PRINTER_ENDDOC: 0x80480005;
|
||||
|
||||
/** Printing failed while starting a new page. */
|
||||
NS_ERROR_GFX_PRINTER_STARTPAGE: 0x80480006;
|
||||
|
||||
/** Cannot print this document yet, it is still being loaded. */
|
||||
NS_ERROR_GFX_PRINTER_DOC_IS_BUSY: 0x80480007;
|
||||
|
||||
// Codes related to content
|
||||
|
||||
/** The process that hosted this content has crashed. */
|
||||
NS_ERROR_CONTENT_CRASHED: 0x805e0010;
|
||||
|
||||
/** The process that hosted this frame has crashed. */
|
||||
NS_ERROR_FRAME_CRASHED: 0x805e000e;
|
||||
|
||||
/** The process that hosted this content did not have the same buildID as the parent. */
|
||||
NS_ERROR_BUILDID_MISMATCH: 0x805e0011;
|
||||
|
||||
/** The load for this content was blocked. */
|
||||
NS_ERROR_CONTENT_BLOCKED: 0x805e0006;
|
||||
|
||||
// Codes for the JS-implemented Push DOM API. These can be removed as part of bug 1252660.
|
||||
|
||||
/** Invalid raw ECDSA P-256 public key. */
|
||||
NS_ERROR_DOM_PUSH_INVALID_KEY_ERR: 0x806d0005;
|
||||
|
||||
/** A subscription with a different application server key already exists. */
|
||||
NS_ERROR_DOM_PUSH_MISMATCHED_KEY_ERR: 0x806d0006;
|
||||
|
||||
// Codes defined in WebIDL https://heycam.github.io/webidl/#idl-DOMException-error-names
|
||||
|
||||
/** The object can not be found here. */
|
||||
NS_ERROR_DOM_NOT_FOUND_ERR: 0x80530008;
|
||||
|
||||
/** The request is not allowed. */
|
||||
NS_ERROR_DOM_NOT_ALLOWED_ERR: 0x80530021;
|
||||
|
||||
// Codes related to the URIClassifier service
|
||||
|
||||
/** The URI is malware */
|
||||
NS_ERROR_MALWARE_URI: 0x805d001e;
|
||||
|
||||
/** The URI is phishing */
|
||||
NS_ERROR_PHISHING_URI: 0x805d001f;
|
||||
|
||||
/** The URI is tracking */
|
||||
NS_ERROR_TRACKING_URI: 0x805d0022;
|
||||
|
||||
/** The URI is unwanted */
|
||||
NS_ERROR_UNWANTED_URI: 0x805d0023;
|
||||
|
||||
/** The URI is blocked */
|
||||
NS_ERROR_BLOCKED_URI: 0x805d0025;
|
||||
|
||||
/** The URI is harmful */
|
||||
NS_ERROR_HARMFUL_URI: 0x805d0026;
|
||||
|
||||
/** The URI is fingerprinting */
|
||||
NS_ERROR_FINGERPRINTING_URI: 0x805d0029;
|
||||
|
||||
/** The URI is cryptomining */
|
||||
NS_ERROR_CRYPTOMINING_URI: 0x805d002a;
|
||||
|
||||
/** The URI is social tracking */
|
||||
NS_ERROR_SOCIALTRACKING_URI: 0x805d002b;
|
||||
|
||||
/** The URI is email tracking */
|
||||
NS_ERROR_EMAILTRACKING_URI: 0x805d002c;
|
||||
|
||||
// Profile manager error codes
|
||||
|
||||
/** Flushing the profiles to disk would have overwritten changes made elsewhere. */
|
||||
NS_ERROR_DATABASE_CHANGED: 0x805800ca;
|
||||
|
||||
// Codes related to URILoader
|
||||
|
||||
/** The data from a channel has already been parsed and cached so it doesn't need to be reparsed from the original source. */
|
||||
NS_ERROR_PARSED_DATA_CACHED: 0x805d0021;
|
||||
|
||||
/** The async request has been cancelled by another async request */
|
||||
NS_BINDING_CANCELLED_OLD_LOAD: 0x805d0027;
|
||||
|
||||
/** The ProgID classes had not been registered. */
|
||||
NS_ERROR_WDBA_NO_PROGID: 0x80720001;
|
||||
|
||||
/** The existing UserChoice Hash could not be verified. */
|
||||
NS_ERROR_WDBA_HASH_CHECK: 0x80720002;
|
||||
|
||||
/** UserChoice was set, but checking the default did not return our ProgID. */
|
||||
NS_ERROR_WDBA_REJECTED: 0x80720003;
|
||||
|
||||
/** The existing UserChoice Hash was verified, but we're on an older, unsupported Windows build, so do not attempt to update the UserChoice hash. */
|
||||
NS_ERROR_WDBA_BUILD: 0x80720004;
|
||||
}
|
||||
|
||||
type nsIXPCComponents_Values = nsIXPCComponents_Results[keyof nsIXPCComponents_Results];
|
||||
62
src/zen/@types/lib.gecko.services.d.ts
vendored
Normal file
62
src/zen/@types/lib.gecko.services.d.ts
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
/**
|
||||
* NOTE: Do not modify this file by hand.
|
||||
* Content was generated from services.json.
|
||||
* If you're updating some of the sources, see README for instructions.
|
||||
*/
|
||||
|
||||
interface JSServices {
|
||||
DAPTelemetry: nsIDAPTelemetry;
|
||||
appShell: nsIAppShellService;
|
||||
appinfo: nsICrashReporter & nsIXULAppInfo & nsIXULRuntime;
|
||||
blocklist: nsIBlocklistService;
|
||||
cache2: nsICacheStorageService;
|
||||
catMan: nsICategoryManager;
|
||||
clearData: nsIClearDataService;
|
||||
clipboard: nsIClipboard;
|
||||
console: nsIConsoleService;
|
||||
cookieBanners: nsICookieBannerService;
|
||||
cookies: nsICookieManager & nsICookieService;
|
||||
cpmm: ContentProcessMessageManager;
|
||||
dirsvc: nsIDirectoryService & nsIProperties;
|
||||
dns: nsIDNSService;
|
||||
domStorageManager: nsIDOMStorageManager & nsILocalStorageManager;
|
||||
droppedLinkHandler: nsIDroppedLinkHandler;
|
||||
eTLD: nsIEffectiveTLDService;
|
||||
els: nsIEventListenerService;
|
||||
env: nsIEnvironment;
|
||||
focus: nsIFocusManager;
|
||||
fog: nsIFOG;
|
||||
intl: mozIMozIntl;
|
||||
io: nsIIOService & nsINetUtil & nsISpeculativeConnect;
|
||||
loadContextInfo: nsILoadContextInfoFactory;
|
||||
locale: mozILocaleService;
|
||||
logins: nsILoginManager;
|
||||
mm: ChromeMessageBroadcaster;
|
||||
obs: nsIObserverService;
|
||||
perms: nsIPermissionManager;
|
||||
policies: nsIEnterprisePolicies;
|
||||
ppmm: ParentProcessMessageManager;
|
||||
prefs: nsIPrefBranch & nsIPrefService;
|
||||
profiler: nsIProfiler;
|
||||
prompt: nsIPromptService;
|
||||
qms: nsIQuotaManagerService;
|
||||
rfp: nsIRFPService;
|
||||
scriptSecurityManager: nsIScriptSecurityManager;
|
||||
scriptloader: mozIJSSubScriptLoader;
|
||||
search: nsISearchService;
|
||||
sessionStorage: nsISessionStorageService;
|
||||
startup: nsIAppStartup;
|
||||
storage: mozIStorageService;
|
||||
strings: nsIStringBundleService;
|
||||
sysinfo: nsIPropertyBag2 & nsISystemInfo;
|
||||
telemetry: nsITelemetry;
|
||||
textToSubURI: nsITextToSubURI;
|
||||
tm: nsIThreadManager;
|
||||
uriFixup: nsIURIFixup;
|
||||
urlFormatter: nsIURLFormatter;
|
||||
uuid: nsIUUIDGenerator;
|
||||
vc: nsIVersionComparator;
|
||||
wm: nsIWindowMediator;
|
||||
ww: nsIWindowWatcher;
|
||||
xulStore: nsIXULStore;
|
||||
}
|
||||
114
src/zen/@types/lib.gecko.tweaks.d.ts
vendored
Normal file
114
src/zen/@types/lib.gecko.tweaks.d.ts
vendored
Normal file
@@ -0,0 +1,114 @@
|
||||
/**
|
||||
* Gecko generic/specialized adjustments for xpcom and webidl types.
|
||||
*/
|
||||
|
||||
// More specific types for parent process browsing contexts.
|
||||
interface CanonicalBrowsingContext extends LoadContextMixin {
|
||||
embedderElement: XULBrowserElement;
|
||||
currentWindowContext: WindowGlobalParent;
|
||||
parent: CanonicalBrowsingContext;
|
||||
parentWindowContext: WindowGlobalParent;
|
||||
top: CanonicalBrowsingContext;
|
||||
topWindowContext: WindowGlobalParent;
|
||||
}
|
||||
|
||||
interface ChromeWindow extends Window {
|
||||
isChromeWindow: true;
|
||||
}
|
||||
|
||||
interface Document {
|
||||
createXULElement(name: 'browser'): XULBrowserElement;
|
||||
}
|
||||
|
||||
type nsIGleanPingNoReason = {
|
||||
[K in keyof nsIGleanPing]: K extends 'submit' ? (_?: never) => void : nsIGleanPing[K];
|
||||
};
|
||||
|
||||
type nsIGleanPingWithReason<T> = {
|
||||
[K in keyof nsIGleanPing]: K extends 'submit' ? (reason: T) => void : nsIGleanPing[K];
|
||||
};
|
||||
|
||||
interface MessageListenerManagerMixin {
|
||||
// Overloads that define `data` arg as required, since it's ~always expected.
|
||||
addMessageListener(msg: string, listener: { receiveMessage(_: ReceiveMessageArgument & { data }) });
|
||||
removeMessageListener(msg: string, listener: { receiveMessage(_: ReceiveMessageArgument & { data }) });
|
||||
}
|
||||
|
||||
interface MozQueryInterface {
|
||||
<T>(iid: T): nsQIResult<T>;
|
||||
}
|
||||
|
||||
interface nsICryptoHash extends nsISupports {
|
||||
// Accepts a TypedArray.
|
||||
update(aData: ArrayLike<number>, aLen: number): void;
|
||||
}
|
||||
|
||||
interface nsIDOMWindow extends Window {}
|
||||
|
||||
interface nsISimpleEnumerator extends Iterable<any> {}
|
||||
|
||||
interface nsISupports {
|
||||
wrappedJSObject?: object;
|
||||
}
|
||||
|
||||
interface nsIXPCComponents_Constructor {
|
||||
<const T, IIDs = nsIXPCComponents_Interfaces>(
|
||||
cid,
|
||||
id: T,
|
||||
init?
|
||||
): {
|
||||
new (...any): nsQIResult<T extends keyof IIDs ? IIDs[T] : T>;
|
||||
(...any): nsQIResult<T extends keyof IIDs ? IIDs[T] : T>;
|
||||
};
|
||||
}
|
||||
|
||||
interface ComponentsExceptionOptions {
|
||||
result?: number;
|
||||
stack?: nsIStackFrame;
|
||||
data?: object;
|
||||
}
|
||||
|
||||
interface nsIException extends Exception {}
|
||||
|
||||
interface nsIXPCComponents_Exception {
|
||||
(message?: string, resultOrOptions?: number | ComponentsExceptionOptions, stack?: nsIStackFrame, data?: object): nsIException;
|
||||
}
|
||||
|
||||
interface nsIXPCComponents_ID {
|
||||
(uuid: string): nsID;
|
||||
}
|
||||
|
||||
interface nsIXPCComponents_utils_Sandbox {
|
||||
(principal: nsIPrincipal | nsIPrincipal[], options: object): Sandbox;
|
||||
}
|
||||
|
||||
interface nsXPCComponents_Classes {
|
||||
[cid: string]: {
|
||||
createInstance<T>(aID: T): nsQIResult<T>;
|
||||
getService<T>(aID?: T): unknown extends T ? nsISupports : nsQIResult<T>;
|
||||
};
|
||||
}
|
||||
|
||||
// Generic overloads.
|
||||
interface nsXPCComponents_Utils {
|
||||
cloneInto<T>(value: T, ...any): T;
|
||||
createObjectIn<T = object>(_, object?: T): T;
|
||||
exportFunction<T>(func: T, ...any): T;
|
||||
getWeakReference<T>(value: T): { get(): T };
|
||||
waiveXrays<T>(object: T): T;
|
||||
}
|
||||
|
||||
type Sandbox = typeof globalThis & nsISupports;
|
||||
|
||||
// Hand-crafted artisanal types.
|
||||
interface XULBrowserElement extends XULFrameElement, FrameLoader {
|
||||
currentURI: nsIURI;
|
||||
docShellIsActive: boolean;
|
||||
isRemoteBrowser: boolean;
|
||||
remoteType: string;
|
||||
}
|
||||
|
||||
// https://github.com/microsoft/TypeScript-DOM-lib-generator/issues/1736
|
||||
interface Localization {
|
||||
formatValuesSync(aKeys: L10nKey[]): (string | null)[];
|
||||
}
|
||||
392
src/zen/@types/lib.gecko.win32.d.ts
vendored
Normal file
392
src/zen/@types/lib.gecko.win32.d.ts
vendored
Normal file
@@ -0,0 +1,392 @@
|
||||
/**
|
||||
* NOTE: Do not modify this file by hand.
|
||||
* Content was generated from source XPCOM .idl files.
|
||||
* If you're updating some of the sources, see README for instructions.
|
||||
*/
|
||||
|
||||
declare global {
|
||||
// https://searchfox.org/mozilla-central/source/toolkit/components/aboutthirdparty/nsIAboutThirdParty.idl
|
||||
|
||||
interface nsIInstalledApplication extends nsISupports {
|
||||
readonly name: string;
|
||||
readonly publisher: string;
|
||||
}
|
||||
|
||||
interface nsIAboutThirdParty extends nsISupports {
|
||||
readonly ModuleType_Unknown?: 1;
|
||||
readonly ModuleType_IME?: 2;
|
||||
readonly ModuleType_ShellExtension?: 4;
|
||||
readonly ModuleType_BlockedByUser?: 8;
|
||||
readonly ModuleType_BlockedByUserAtLaunch?: 16;
|
||||
|
||||
lookupModuleType(aLeafName: string): u32;
|
||||
lookupApplication(aModulePath: string): nsIInstalledApplication;
|
||||
readonly isDynamicBlocklistAvailable: boolean;
|
||||
readonly isDynamicBlocklistDisabled: boolean;
|
||||
updateBlocklist(aLeafName: string, aNewBlockStatus: boolean): Promise<any>;
|
||||
collectSystemInfo(): Promise<any>;
|
||||
loadModuleForTesting(aModulePath: string): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/toolkit/components/aboutwindowsmessages/nsIAboutWindowsMessages.idl
|
||||
|
||||
interface nsIAboutWindowsMessages extends nsISupports {
|
||||
getMessages(currentWindow: mozIDOMWindowProxy, messages: OutParam<string[][]>, windowTitles: OutParam<string[]>): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/toolkit/components/alerts/nsIWindowsAlertsService.idl
|
||||
} // global
|
||||
|
||||
declare enum nsIWindowsAlertNotification_ImagePlacement {
|
||||
eInline = 0,
|
||||
eHero = 1,
|
||||
eIcon = 2,
|
||||
}
|
||||
|
||||
declare global {
|
||||
namespace nsIWindowsAlertNotification {
|
||||
type ImagePlacement = nsIWindowsAlertNotification_ImagePlacement;
|
||||
}
|
||||
|
||||
interface nsIWindowsAlertNotification extends nsIAlertNotification, Enums<typeof nsIWindowsAlertNotification_ImagePlacement> {
|
||||
imagePlacement: nsIWindowsAlertNotification.ImagePlacement;
|
||||
}
|
||||
|
||||
interface nsIWindowsAlertsService extends nsIAlertsService {
|
||||
handleWindowsTag(aWindowsTag: string): Promise<any>;
|
||||
getXmlStringForWindowsAlert(aAlert: nsIAlertNotification, aWindowsTag?: string): string;
|
||||
removeAllNotificationsForInstall(): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/toolkit/mozapps/defaultagent/nsIDefaultAgent.idl
|
||||
|
||||
interface nsIDefaultAgent extends nsISupports {
|
||||
registerTask(aUniqueToken: string): void;
|
||||
updateTask(aUniqueToken: string): void;
|
||||
unregisterTask(aUniqueToken: string): void;
|
||||
uninstall(aUniqueToken: string): void;
|
||||
secondsSinceLastAppRun(): i64;
|
||||
getDefaultBrowser(): string;
|
||||
getReplacePreviousDefaultBrowser(aCurrentBrowser: string): string;
|
||||
getDefaultPdfHandler(): string;
|
||||
sendPing(
|
||||
aCurrentBrowser: string,
|
||||
aPreviousBrowser: string,
|
||||
aPdfHandler: string,
|
||||
aNotificationShown: string,
|
||||
aNotificationAction: string,
|
||||
daysSinceLastAppLaunch: u32
|
||||
): void;
|
||||
setDefaultBrowserUserChoice(aAumid: string, aExtraFileExtensions: string[]): void;
|
||||
setDefaultBrowserUserChoiceAsync(aAumid: string, aExtraFileExtensions: string[]): Promise<any>;
|
||||
setDefaultExtensionHandlersUserChoice(aAumid: string, aFileExtensions: string[]): void;
|
||||
agentDisabled(): boolean;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/toolkit/mozapps/defaultagent/nsIWindowsMutex.idl
|
||||
|
||||
interface nsIWindowsMutex extends nsISupports {
|
||||
tryLock(): void;
|
||||
isLocked(): boolean;
|
||||
unlock(): void;
|
||||
}
|
||||
|
||||
interface nsIWindowsMutexFactory extends nsISupports {
|
||||
createMutex(aName: string): nsIWindowsMutex;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/dom/geolocation/nsIGeolocationUIUtilsWin.idl
|
||||
|
||||
interface nsIGeolocationUIUtilsWin extends nsISupports {
|
||||
dismissPrompts(aBC: BrowsingContext): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/netwerk/socket/nsINamedPipeService.idl
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/browser/components/shell/nsIWindowsShellService.idl
|
||||
} // global
|
||||
|
||||
declare enum nsIWindowsShellService_LaunchOnLoginEnabledEnumerator {
|
||||
LAUNCH_ON_LOGIN_DISABLED_BY_SETTINGS = 0,
|
||||
LAUNCH_ON_LOGIN_DISABLED = 1,
|
||||
LAUNCH_ON_LOGIN_ENABLED = 2,
|
||||
LAUNCH_ON_LOGIN_ENABLED_BY_POLICY = 3,
|
||||
}
|
||||
|
||||
declare global {
|
||||
namespace nsIWindowsShellService {
|
||||
type LaunchOnLoginEnabledEnumerator = nsIWindowsShellService_LaunchOnLoginEnabledEnumerator;
|
||||
}
|
||||
|
||||
interface nsIWindowsShellService
|
||||
extends nsIShellService,
|
||||
Enums<typeof nsIWindowsShellService_LaunchOnLoginEnabledEnumerator> {
|
||||
createShortcut(
|
||||
aBinary: nsIFile,
|
||||
aArguments: string[],
|
||||
aDescription: string,
|
||||
aIconFile: nsIFile,
|
||||
aIconIndex: u16,
|
||||
aAppUserModelId: string,
|
||||
aShortcutFolder: string,
|
||||
aShortcutName: string
|
||||
): Promise<any>;
|
||||
getLaunchOnLoginShortcuts(): string[];
|
||||
pinCurrentAppToStartMenuAsync(aCheckOnly: boolean): Promise<any>;
|
||||
isCurrentAppPinnedToStartMenuAsync(): Promise<any>;
|
||||
enableLaunchOnLoginMSIXAsync(aTaskId: string): Promise<any>;
|
||||
disableLaunchOnLoginMSIXAsync(aTaskId: string): Promise<any>;
|
||||
getLaunchOnLoginEnabledMSIXAsync(aTaskId: string): Promise<any>;
|
||||
pinCurrentAppToTaskbarAsync(aPrivateBrowsing: boolean): Promise<any>;
|
||||
checkPinCurrentAppToTaskbarAsync(aPrivateBrowsing: boolean): Promise<any>;
|
||||
isCurrentAppPinnedToTaskbarAsync(aumid: string): Promise<any>;
|
||||
pinShortcutToTaskbar(aAppUserModelId: string, aShortcutPath: string): Promise<any>;
|
||||
createWindowsIcon(aFile: nsIFile, aContainer: imgIContainer): Promise<any>;
|
||||
unpinShortcutFromTaskbar(aShortcutPath: string): void;
|
||||
getTaskbarTabShortcutPath(aShortcutName: string): string;
|
||||
getTaskbarTabPins(): string[];
|
||||
classifyShortcut(aPath: string): string;
|
||||
hasPinnableShortcut(aAUMID: string, aPrivateBrowsing: boolean): Promise<any>;
|
||||
canSetDefaultBrowserUserChoice(): boolean;
|
||||
checkAllProgIDsExist(): boolean;
|
||||
checkBrowserUserChoiceHashes(): boolean;
|
||||
isDefaultHandlerFor(aFileExtensionOrProtocol: string): boolean;
|
||||
queryCurrentDefaultHandlerFor(aFileExtensionOrProtocol: string): string;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/toolkit/components/taskscheduler/nsIWinTaskSchedulerService.idl
|
||||
|
||||
interface nsIWinTaskSchedulerService extends nsISupports {
|
||||
registerTask(aFolderName: string, aTaskName: string, aDefinitionXML: string, aUpdateExisting?: boolean): void;
|
||||
validateTaskDefinition(aDefinitionXML: string): i32;
|
||||
getTaskXML(aFolderName: string, aTaskName: string): string;
|
||||
getCurrentUserSid(): string;
|
||||
deleteTask(aFolderName: string, aTaskName: string): void;
|
||||
getFolderTasks(aFolderName: string): string[];
|
||||
createFolder(aParentFolderName: string, aSubFolderName: string): void;
|
||||
deleteFolder(aParentFolderName: string, aSubFolderName: string): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsIJumpListBuilder.idl
|
||||
|
||||
interface nsIJumpListBuilder extends nsISupports {
|
||||
obtainAndCacheFavicon(faviconURL: nsIURI): string;
|
||||
obtainAndCacheFaviconAsync(faviconURL: nsIURI): Promise<any>;
|
||||
isAvailable(): Promise<any>;
|
||||
checkForRemovals(): Promise<any>;
|
||||
populateJumpList(aTaskDescriptions: any, aCustomTitle: string, aCustomDescriptions: any): Promise<any>;
|
||||
clearJumpList(): Promise<any>;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsIPrintSettingsWin.idl
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarOverlayIconController.idl
|
||||
|
||||
interface nsITaskbarOverlayIconController extends nsISupports {
|
||||
setOverlayIcon(statusIcon: imgIContainer, statusDescription: string, paintContext?: nsISVGPaintContext): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarPreview.idl
|
||||
|
||||
interface nsITaskbarPreview extends nsISupports {
|
||||
controller: nsITaskbarPreviewController;
|
||||
tooltip: string;
|
||||
visible: boolean;
|
||||
active: boolean;
|
||||
invalidate(): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarPreviewButton.idl
|
||||
|
||||
interface nsITaskbarPreviewButton extends nsISupports {
|
||||
tooltip: string;
|
||||
dismissOnClick: boolean;
|
||||
hasBorder: boolean;
|
||||
disabled: boolean;
|
||||
image: imgIContainer;
|
||||
visible: boolean;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarPreviewController.idl
|
||||
|
||||
type nsITaskbarPreviewCallback = Callable<{
|
||||
done(aCanvas: nsISupports, aDrawBorder: boolean): void;
|
||||
}>;
|
||||
|
||||
interface nsITaskbarPreviewController extends nsISupports {
|
||||
readonly width: u32;
|
||||
readonly height: u32;
|
||||
readonly thumbnailAspectRatio: float;
|
||||
requestPreview(aCallback: nsITaskbarPreviewCallback): void;
|
||||
requestThumbnail(aCallback: nsITaskbarPreviewCallback, width: u32, height: u32): void;
|
||||
onClose(): void;
|
||||
onActivate(): boolean;
|
||||
onClick(button: nsITaskbarPreviewButton): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarProgress.idl
|
||||
|
||||
interface nsITaskbarProgress extends nsISupports {
|
||||
readonly STATE_NO_PROGRESS?: 0;
|
||||
readonly STATE_INDETERMINATE?: 1;
|
||||
readonly STATE_NORMAL?: 2;
|
||||
readonly STATE_ERROR?: 3;
|
||||
readonly STATE_PAUSED?: 4;
|
||||
|
||||
setProgressState(state: nsTaskbarProgressState, currentValue?: u64, maxValue?: u64): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarTabPreview.idl
|
||||
|
||||
interface nsITaskbarTabPreview extends nsITaskbarPreview {
|
||||
title: string;
|
||||
icon: imgIContainer;
|
||||
move(aNext: nsITaskbarTabPreview): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsITaskbarWindowPreview.idl
|
||||
|
||||
interface nsITaskbarWindowPreview extends nsITaskbarPreview {
|
||||
readonly NUM_TOOLBAR_BUTTONS?: 7;
|
||||
|
||||
getButton(index: u32): nsITaskbarPreviewButton;
|
||||
enableCustomDrawing: boolean;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsIWinTaskbar.idl
|
||||
|
||||
interface nsIWinTaskbar extends nsISupports {
|
||||
readonly available: boolean;
|
||||
readonly defaultGroupId: string;
|
||||
readonly defaultPrivateGroupId: string;
|
||||
createTaskbarTabPreview(shell: nsIDocShell, controller: nsITaskbarPreviewController): nsITaskbarTabPreview;
|
||||
getTaskbarWindowPreview(shell: nsIDocShell): nsITaskbarWindowPreview;
|
||||
getTaskbarProgress(shell: nsIDocShell): nsITaskbarProgress;
|
||||
getOverlayIconController(shell: nsIDocShell): nsITaskbarOverlayIconController;
|
||||
createJumpListBuilder(aPrivateBrowsing: boolean): nsIJumpListBuilder;
|
||||
getGroupIdForWindow(aParent: mozIDOMWindow): string;
|
||||
setGroupIdForWindow(aParent: mozIDOMWindow, aIdentifier: string): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/widget/nsIWindowsUIUtils.idl
|
||||
|
||||
interface nsIWindowsUIUtils extends nsISupports {
|
||||
readonly systemSmallIconSize: i32;
|
||||
readonly systemLargeIconSize: i32;
|
||||
setWindowIcon(aWindow: mozIDOMWindowProxy, aSmallIcon: imgIContainer, aLargeIcon: imgIContainer): void;
|
||||
setWindowIconFromExe(aWindow: mozIDOMWindowProxy, aExe: string, aIndex: u16): void;
|
||||
setWindowIconNoData(aWindow: mozIDOMWindowProxy): void;
|
||||
readonly inWin10TabletMode: boolean;
|
||||
readonly inWin11TabletMode: boolean;
|
||||
shareUrl(shareTitle: string, urlToShare: string): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/toolkit/system/windowsPackageManager/nsIWindowsPackageManager.idl
|
||||
|
||||
interface nsIWindowsPackageManager extends nsISupports {
|
||||
findUserInstalledPackages(prefix: string[]): string[];
|
||||
getInstalledDate(): u64;
|
||||
campaignId(): Promise<any>;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/xpcom/ds/nsIWindowsRegKey.idl
|
||||
|
||||
interface nsIWindowsRegKey extends nsISupports {
|
||||
readonly ROOT_KEY_CLASSES_ROOT?: 2147483648;
|
||||
readonly ROOT_KEY_CURRENT_USER?: 2147483649;
|
||||
readonly ROOT_KEY_LOCAL_MACHINE?: 2147483650;
|
||||
readonly ACCESS_BASIC?: 131072;
|
||||
readonly ACCESS_QUERY_VALUE?: 1;
|
||||
readonly ACCESS_SET_VALUE?: 2;
|
||||
readonly ACCESS_CREATE_SUB_KEY?: 4;
|
||||
readonly ACCESS_ENUMERATE_SUB_KEYS?: 8;
|
||||
readonly ACCESS_NOTIFY?: 16;
|
||||
readonly ACCESS_READ?: 131097;
|
||||
readonly ACCESS_WRITE?: 131078;
|
||||
readonly ACCESS_ALL?: 131103;
|
||||
readonly WOW64_32?: 512;
|
||||
readonly WOW64_64?: 256;
|
||||
readonly TYPE_NONE?: 0;
|
||||
readonly TYPE_STRING?: 1;
|
||||
readonly TYPE_BINARY?: 3;
|
||||
readonly TYPE_INT?: 4;
|
||||
readonly TYPE_INT64?: 11;
|
||||
|
||||
close(): void;
|
||||
open(rootKey: u32, relPath: string, mode: u32): void;
|
||||
create(rootKey: u32, relPath: string, mode: u32): void;
|
||||
openChild(relPath: string, mode: u32): nsIWindowsRegKey;
|
||||
createChild(relPath: string, mode: u32): nsIWindowsRegKey;
|
||||
readonly childCount: u32;
|
||||
getChildName(index: u32): string;
|
||||
hasChild(name: string): boolean;
|
||||
readonly valueCount: u32;
|
||||
getValueName(index: u32): string;
|
||||
hasValue(name: string): boolean;
|
||||
removeChild(relPath: string): void;
|
||||
removeValue(name: string): void;
|
||||
getValueType(name: string): u32;
|
||||
readStringValue(name: string): string;
|
||||
readIntValue(name: string): u32;
|
||||
readInt64Value(name: string): u64;
|
||||
readBinaryValue(name: string): string;
|
||||
writeStringValue(name: string, data: string): void;
|
||||
writeIntValue(name: string, data: u32): void;
|
||||
writeInt64Value(name: string, data: u64): void;
|
||||
writeBinaryValue(name: string, data: string): void;
|
||||
}
|
||||
|
||||
// https://searchfox.org/mozilla-central/source/toolkit/xre/nsIWinAppHelper.idl
|
||||
|
||||
interface nsIWinAppHelper extends nsISupports {
|
||||
readonly userCanElevate: boolean;
|
||||
}
|
||||
|
||||
interface nsIXPCComponents_Interfaces {
|
||||
nsIInstalledApplication: nsJSIID<nsIInstalledApplication>;
|
||||
nsIAboutThirdParty: nsJSIID<nsIAboutThirdParty>;
|
||||
nsIAboutWindowsMessages: nsJSIID<nsIAboutWindowsMessages>;
|
||||
nsIWindowsAlertNotification: nsJSIID<nsIWindowsAlertNotification, typeof nsIWindowsAlertNotification_ImagePlacement>;
|
||||
nsIWindowsAlertsService: nsJSIID<nsIWindowsAlertsService>;
|
||||
nsIDefaultAgent: nsJSIID<nsIDefaultAgent>;
|
||||
nsIWindowsMutex: nsJSIID<nsIWindowsMutex>;
|
||||
nsIWindowsMutexFactory: nsJSIID<nsIWindowsMutexFactory>;
|
||||
nsIGeolocationUIUtilsWin: nsJSIID<nsIGeolocationUIUtilsWin>;
|
||||
nsIWindowsShellService: nsJSIID<nsIWindowsShellService, typeof nsIWindowsShellService_LaunchOnLoginEnabledEnumerator>;
|
||||
nsIWinTaskSchedulerService: nsJSIID<nsIWinTaskSchedulerService>;
|
||||
nsIJumpListBuilder: nsJSIID<nsIJumpListBuilder>;
|
||||
nsITaskbarOverlayIconController: nsJSIID<nsITaskbarOverlayIconController>;
|
||||
nsITaskbarPreview: nsJSIID<nsITaskbarPreview>;
|
||||
nsITaskbarPreviewButton: nsJSIID<nsITaskbarPreviewButton>;
|
||||
nsITaskbarPreviewCallback: nsJSIID<nsITaskbarPreviewCallback>;
|
||||
nsITaskbarPreviewController: nsJSIID<nsITaskbarPreviewController>;
|
||||
nsITaskbarProgress: nsJSIID<nsITaskbarProgress>;
|
||||
nsITaskbarTabPreview: nsJSIID<nsITaskbarTabPreview>;
|
||||
nsITaskbarWindowPreview: nsJSIID<nsITaskbarWindowPreview>;
|
||||
nsIWinTaskbar: nsJSIID<nsIWinTaskbar>;
|
||||
nsIWindowsUIUtils: nsJSIID<nsIWindowsUIUtils>;
|
||||
nsIWindowsPackageManager: nsJSIID<nsIWindowsPackageManager>;
|
||||
nsIWindowsRegKey: nsJSIID<nsIWindowsRegKey>;
|
||||
nsIWinAppHelper: nsJSIID<nsIWinAppHelper>;
|
||||
}
|
||||
} // global
|
||||
|
||||
// Typedefs from xpidl.
|
||||
type PRTime = i64;
|
||||
type nsTaskbarProgressState = i32;
|
||||
|
||||
// XPCOM internal utility types.
|
||||
|
||||
/** XPCOM inout param is passed in as a js object with a value property. */
|
||||
type InOutParam<T> = { value: T };
|
||||
|
||||
/** XPCOM out param is written to the passed in object's value property. */
|
||||
type OutParam<T> = { value?: T };
|
||||
|
||||
/** Enable interfaces to inherit from enums: pick variants as optional. */
|
||||
type Enums<enums> = Partial<Pick<enums, keyof enums>>;
|
||||
|
||||
/** Callable accepts either form of a [function] interface. */
|
||||
type Callable<iface> = iface | Extract<iface[keyof iface], Function>;
|
||||
|
||||
export {};
|
||||
18143
src/zen/@types/lib.gecko.xpcom.d.ts
vendored
Normal file
18143
src/zen/@types/lib.gecko.xpcom.d.ts
vendored
Normal file
File diff suppressed because it is too large
Load Diff
49
src/zen/@types/lib.gecko.xpidl.d.ts
vendored
Normal file
49
src/zen/@types/lib.gecko.xpidl.d.ts
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* Gecko XPIDL base types.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Generic IDs are created by most code which passes a nsID to js.
|
||||
* https://searchfox.org/mozilla-central/source/js/xpconnect/src/XPCJSID.cpp#24
|
||||
*/
|
||||
interface nsID<uuid = string> {
|
||||
readonly number: uuid;
|
||||
}
|
||||
|
||||
/**
|
||||
* In addition to nsID, interface IIDs support instanceof type guards,
|
||||
* and expose constants defined on the class, including variants from enums.
|
||||
* https://searchfox.org/mozilla-central/source/js/xpconnect/src/XPCJSID.cpp#45
|
||||
*/
|
||||
type nsJSIID<iface, enums = {}> = nsID &
|
||||
Constants<iface> &
|
||||
enums & {
|
||||
new (_: never): void;
|
||||
prototype: iface;
|
||||
};
|
||||
|
||||
/** A union type of all known interface IIDs. */
|
||||
type nsIID = nsIXPCComponents_Interfaces[keyof nsIXPCComponents_Interfaces];
|
||||
|
||||
/** A generic to resolve QueryInterface return type from a nsIID. */
|
||||
type nsQIResult<iid> = iid extends { prototype: infer U } ? U : never;
|
||||
|
||||
/** Picks only const number properties from T. */
|
||||
type Constants<T> = { [K in keyof T as IfConst<K, T[K]>]: T[K] };
|
||||
|
||||
/** Resolves only for keys K whose corresponding type T is a narrow number. */
|
||||
type IfConst<K, T> = T extends number ? (number extends T ? never : K) : never;
|
||||
|
||||
/** u32 */
|
||||
type nsresult = u32;
|
||||
|
||||
// Numeric typedefs, useful as a quick reference in method signatures.
|
||||
type double = number;
|
||||
type float = number;
|
||||
type i16 = number;
|
||||
type i32 = number;
|
||||
type i64 = number;
|
||||
type u16 = number;
|
||||
type u32 = number;
|
||||
type u64 = number;
|
||||
type u8 = number;
|
||||
441
src/zen/@types/zen.d.ts
vendored
Normal file
441
src/zen/@types/zen.d.ts
vendored
Normal file
@@ -0,0 +1,441 @@
|
||||
/**
|
||||
* NOTE: Do not modify this file by hand.
|
||||
* Content was generated from source .webidl files.
|
||||
*/
|
||||
/**
|
||||
* This file from https://phabricator.services.mozilla.com/D209620,
|
||||
* the source of https://bugzilla.mozilla.org/show_bug.cgi?id=1895418
|
||||
* Currently https://searchfox.org/mozilla-central/source/tools/%40types
|
||||
* in 2024-12-28 21:05 KST
|
||||
*/
|
||||
|
||||
/// <reference types="../lib.gecko.xpcom.d.ts" />
|
||||
/// <reference types="../lib.gecko.services.d.ts" />
|
||||
/// <reference types="../lib.gecko.dom.d.ts" />
|
||||
/// <reference types="../lib.gecko.tweaks.d.ts" />
|
||||
/// <reference types="../lib.gecko.nsresult.d.ts" />
|
||||
|
||||
declare var window: Window;
|
||||
declare var Components: nsIXPCComponents;
|
||||
declare var Cu: nsIXPCComponents_Utils;
|
||||
declare var Ci: nsIXPCComponents_Interfaces;
|
||||
declare var Services: JSServices;
|
||||
declare var Cc: nsIXPCComponents_Classes & {
|
||||
[key: string]: {
|
||||
getService: (t: (typeof Ci)[keyof typeof Ci]) => any;
|
||||
createInstance: (aClass: (typeof Ci)[keyof typeof Ci]) => any;
|
||||
};
|
||||
};
|
||||
interface CSSStyleDeclaration {
|
||||
display: string;
|
||||
flex: string;
|
||||
order: string;
|
||||
flexDirection: string;
|
||||
flexTemplateAreas: string;
|
||||
height: string;
|
||||
animation: string;
|
||||
}
|
||||
|
||||
interface nsIXPCComponents extends nsISupports {
|
||||
readonly interfaces: nsIXPCComponents_Interfaces;
|
||||
readonly results: nsIXPCComponents_Results;
|
||||
isSuccessCode(result: any): boolean;
|
||||
readonly classes: nsIXPCComponents_Classes;
|
||||
readonly stack: nsIStackFrame;
|
||||
readonly manager: nsIComponentManager;
|
||||
readonly utils: nsIXPCComponents_Utils;
|
||||
readonly ID: nsIXPCComponents_ID;
|
||||
readonly Exception: any;
|
||||
readonly Constructor: (aClass: any, aIID: any, aFlags: any) => any;
|
||||
returnCode: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* TS-TODO - Needs typing.
|
||||
*
|
||||
* This file contains type stubs for loading things from Gecko. All of these
|
||||
* types should be used in the correct places eventually.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Namespace anything that has its types mocked out here. These definitions are
|
||||
* only "good enough" to get the type checking to pass in this directory.
|
||||
* Eventually some more structured solution should be found. This namespace is
|
||||
* global and makes sure that all the definitions inside do not clash with
|
||||
* naming.
|
||||
*/
|
||||
declare namespace MockedExports {
|
||||
/**
|
||||
* This interface teaches ChromeUtils.importESModule how to find modules.
|
||||
*/
|
||||
interface KnownModules {
|
||||
Services: typeof import('Services');
|
||||
'resource://gre/modules/AppConstants.sys.mjs': typeof import('resource://gre/modules/AppConstants.sys.mjs');
|
||||
'resource:///modules/CustomizableUI.sys.mjs': typeof import('resource:///modules/CustomizableUI.sys.mjs');
|
||||
'resource:///modules/CustomizableWidgets.sys.mjs': typeof import('resource:///modules/CustomizableWidgets.sys.mjs');
|
||||
}
|
||||
|
||||
interface ChromeUtils {
|
||||
/**
|
||||
* This function reads the KnownModules and resolves which import to use.
|
||||
* If you are getting the TS2345 error:
|
||||
*
|
||||
* Argument of type '"resource:///.../file.sys.mjs"' is not assignable to
|
||||
* parameter of type
|
||||
*
|
||||
* Then add the file path to the KnownModules above.
|
||||
*/
|
||||
importESModule: <S extends keyof KnownModules>(module: S) => KnownModules[S];
|
||||
defineESModuleGetters: (target: any, mappings: any) => void;
|
||||
}
|
||||
|
||||
interface MessageManager {
|
||||
loadFrameScript(url: string, flag: boolean): void;
|
||||
sendAsyncMessage: (event: string, data: any) => void;
|
||||
addMessageListener: (event: string, listener: (event: any) => void) => void;
|
||||
}
|
||||
|
||||
// This is the thing in window.gBrowser, defined in
|
||||
// https://searchfox.org/mozilla-central/source/browser/base/content/tabbrowser.js
|
||||
interface Browser {
|
||||
addWebTab: (url: string, options: any) => BrowserTab;
|
||||
contentPrincipal: any;
|
||||
selectedTab: BrowserTab;
|
||||
selectedBrowser?: ChromeBrowser;
|
||||
messageManager: MessageManager;
|
||||
ownerDocument?: ChromeDocument;
|
||||
tabs: BrowserTab[];
|
||||
}
|
||||
|
||||
interface BrowserGroup {
|
||||
readonly tabs: BrowserTab[];
|
||||
readonly group?: BrowserGroup;
|
||||
}
|
||||
|
||||
// This is a tab in a browser, defined in
|
||||
// https://searchfox.org/mozilla-central/rev/6b8a3f804789fb865f42af54e9d2fef9dd3ec74d/browser/base/content/tabbrowser.js#2580
|
||||
interface BrowserTab extends XULElement {
|
||||
linkedBrowser: ChromeBrowser;
|
||||
readonly group?: BrowserGroup;
|
||||
}
|
||||
|
||||
interface BrowserWindow extends Window {
|
||||
gBrowser: Browser;
|
||||
focus(): void;
|
||||
}
|
||||
|
||||
// The thing created in https://searchfox.org/mozilla-central/rev/6b8a3f804789fb865f42af54e9d2fef9dd3ec74d/browser/base/content/tabbrowser.js#2088
|
||||
// This is linked to BrowserTab.
|
||||
interface ChromeBrowser {
|
||||
browsingContext?: BrowsingContext;
|
||||
browserId: number;
|
||||
}
|
||||
|
||||
interface BrowsingContext {
|
||||
/**
|
||||
* A unique identifier for the browser element that is hosting this
|
||||
* BrowsingContext tree. Every BrowsingContext in the element's tree will
|
||||
* return the same ID in all processes and it will remain stable regardless of
|
||||
* process changes. When a browser element's frameloader is switched to
|
||||
* another browser element this ID will remain the same but hosted under the
|
||||
* under the new browser element.
|
||||
* We are using this identifier for getting the active tab ID and passing to
|
||||
* the profiler back-end. See `getActiveBrowserID` for the usage.
|
||||
*/
|
||||
browserId: number;
|
||||
}
|
||||
|
||||
type GetPref<T> = (prefName: string, defaultValue?: T) => T;
|
||||
type SetPref<T> = (prefName: string, value?: T) => T;
|
||||
type nsIPrefBranch = {
|
||||
clearUserPref: (prefName: string) => void;
|
||||
getStringPref: GetPref<string>;
|
||||
setStringPref: SetPref<string>;
|
||||
getCharPref: GetPref<string>;
|
||||
setCharPref: SetPref<string>;
|
||||
getIntPref: GetPref<number>;
|
||||
setIntPref: SetPref<number>;
|
||||
getBoolPref: GetPref<boolean>;
|
||||
setBoolPref: SetPref<boolean>;
|
||||
addObserver: (aDomain: string, aObserver: PrefObserver, aHoldWeak?: boolean) => void;
|
||||
removeObserver: (aDomain: string, aObserver: PrefObserver) => void;
|
||||
};
|
||||
|
||||
type PrefObserverFunction = (aSubject: nsIPrefBranch, aTopic: 'nsPref:changed', aData: string) => unknown;
|
||||
type PrefObserver = PrefObserverFunction | { observe: PrefObserverFunction };
|
||||
|
||||
interface nsIURI {}
|
||||
|
||||
interface SharedLibrary {
|
||||
start: number;
|
||||
end: number;
|
||||
offset: number;
|
||||
name: string;
|
||||
path: string;
|
||||
debugName: string;
|
||||
debugPath: string;
|
||||
breakpadId: string;
|
||||
arch: string;
|
||||
}
|
||||
|
||||
interface ProfileGenerationAdditionalInformation {
|
||||
sharedLibraries: SharedLibrary[];
|
||||
}
|
||||
|
||||
interface ProfileAndAdditionalInformation {
|
||||
profile: ArrayBuffer;
|
||||
additionalInformation?: ProfileGenerationAdditionalInformation;
|
||||
}
|
||||
|
||||
type Services = {
|
||||
env: {
|
||||
set: (name: string, value: string) => void;
|
||||
get: (name: string) => string;
|
||||
exists: (name: string) => boolean;
|
||||
};
|
||||
prefs: nsIPrefBranch;
|
||||
profiler: {
|
||||
StartProfiler: (
|
||||
entryCount: number,
|
||||
interval: number,
|
||||
features: string[],
|
||||
filters?: string[],
|
||||
activeTabId?: number,
|
||||
duration?: number
|
||||
) => void;
|
||||
StopProfiler: () => void;
|
||||
IsPaused: () => boolean;
|
||||
Pause: () => void;
|
||||
Resume: () => void;
|
||||
IsSamplingPaused: () => boolean;
|
||||
PauseSampling: () => void;
|
||||
ResumeSampling: () => void;
|
||||
GetFeatures: () => string[];
|
||||
getProfileDataAsync: (sinceTime?: number) => Promise<object>;
|
||||
getProfileDataAsArrayBuffer: (sinceTime?: number) => Promise<ArrayBuffer>;
|
||||
getProfileDataAsGzippedArrayBuffer: (sinceTime?: number) => Promise<ProfileAndAdditionalInformation>;
|
||||
IsActive: () => boolean;
|
||||
sharedLibraries: SharedLibrary[];
|
||||
};
|
||||
platform: string;
|
||||
obs: {
|
||||
addObserver: (observer: object, type: string) => void;
|
||||
removeObserver: (observer: object, type: string) => void;
|
||||
};
|
||||
wm: {
|
||||
getMostRecentWindow: (name: string) => BrowserWindow;
|
||||
getMostRecentNonPBWindow: (name: string) => BrowserWindow;
|
||||
};
|
||||
focus: {
|
||||
activeWindow: BrowserWindow;
|
||||
};
|
||||
io: {
|
||||
newURI(url: string): nsIURI;
|
||||
};
|
||||
scriptSecurityManager: any;
|
||||
startup: {
|
||||
quit: (optionsBitmask: number) => void;
|
||||
eForceQuit: number;
|
||||
eRestart: number;
|
||||
};
|
||||
};
|
||||
|
||||
const EventEmitter: {
|
||||
decorate: (target: object) => void;
|
||||
};
|
||||
|
||||
const AppConstantsSYSMJS: {
|
||||
AppConstants: {
|
||||
platform: string;
|
||||
};
|
||||
};
|
||||
|
||||
interface BrowsingContextStub {}
|
||||
interface PrincipalStub {}
|
||||
|
||||
interface WebChannelTarget {
|
||||
browsingContext: BrowsingContextStub;
|
||||
browser: Browser;
|
||||
eventTarget: null;
|
||||
principal: PrincipalStub;
|
||||
}
|
||||
|
||||
interface FaviconData {
|
||||
uri: nsIURI;
|
||||
dataLen: number;
|
||||
data: number[];
|
||||
mimeType: string;
|
||||
size: number;
|
||||
}
|
||||
|
||||
const PlaceUtilsSYSMJS: {
|
||||
PlacesUtils: {
|
||||
promiseFaviconData: (pageUrl: string | URL | nsIURI, preferredWidth?: number) => Promise<FaviconData>;
|
||||
// TS-TODO: Add the rest.
|
||||
};
|
||||
};
|
||||
|
||||
// TS-TODO
|
||||
const CustomizableUISYSMJS: any;
|
||||
const CustomizableWidgetsSYSMJS: any;
|
||||
const PanelMultiViewSYSMJS: any;
|
||||
|
||||
const LoaderESM: {
|
||||
require: (path: string) => any;
|
||||
};
|
||||
|
||||
const Services: Services;
|
||||
|
||||
// This class is needed by the Cc importing mechanism. e.g.
|
||||
// Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
|
||||
class nsIFilePicker {}
|
||||
|
||||
interface FilePicker {
|
||||
init: (browsingContext: BrowsingContext, title: string, mode: number) => void;
|
||||
open: (callback: (rv: number) => unknown) => void;
|
||||
// The following are enum values.
|
||||
modeGetFolder: number;
|
||||
returnOK: number;
|
||||
file: {
|
||||
path: string;
|
||||
};
|
||||
}
|
||||
|
||||
interface Cc {
|
||||
'@mozilla.org/filepicker;1': {
|
||||
createInstance(instance: nsIFilePicker): FilePicker;
|
||||
};
|
||||
}
|
||||
|
||||
interface Ci {
|
||||
nsIFilePicker: nsIFilePicker;
|
||||
}
|
||||
|
||||
interface Cu {
|
||||
exportFunction: (fn: Function, scope: object, options?: object) => void;
|
||||
cloneInto: (value: any, scope: object, options?: object) => void;
|
||||
isInAutomation: boolean;
|
||||
}
|
||||
|
||||
interface FluentLocalization {
|
||||
/**
|
||||
* This function sets the attributes data-l10n-id and possibly data-l10n-args
|
||||
* on the element.
|
||||
*/
|
||||
setAttributes(target: Element, id?: string, args?: Record<string, string>): void;
|
||||
}
|
||||
}
|
||||
|
||||
interface PathUtilsInterface {
|
||||
split: (path: string) => string[];
|
||||
isAbsolute: (path: string) => boolean;
|
||||
}
|
||||
|
||||
declare module 'Services' {
|
||||
export = MockedExports.Services;
|
||||
}
|
||||
|
||||
declare module 'ChromeUtils' {
|
||||
export = ChromeUtils;
|
||||
}
|
||||
|
||||
declare var ChromeUtils: MockedExports.ChromeUtils;
|
||||
|
||||
declare var PathUtils: PathUtilsInterface;
|
||||
|
||||
// These global objects can be used directly in JSM files only.
|
||||
declare var Cu: MockedExports.Cu;
|
||||
declare var Cc: MockedExports.Cc;
|
||||
declare var Ci: MockedExports.Ci;
|
||||
declare var Services: MockedExports.Services;
|
||||
|
||||
/**
|
||||
* This is a variant on the normal Document, as it contains chrome-specific properties.
|
||||
*/
|
||||
declare interface ChromeDocument extends Document {
|
||||
/**
|
||||
* Create a XUL element of a specific type. Right now this function
|
||||
* only refines iframes, but more tags could be added.
|
||||
*/
|
||||
createXULElement: ((type: 'iframe') => XULIframeElement) & ((type: string) => XULElement);
|
||||
|
||||
/**
|
||||
* This is a fluent instance connected to this document.
|
||||
*/
|
||||
l10n: MockedExports.FluentLocalization;
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a variant on the HTMLElement, as it contains chrome-specific properties.
|
||||
*/
|
||||
declare interface ChromeHTMLElement extends HTMLElement {
|
||||
ownerDocument: ChromeDocument;
|
||||
}
|
||||
|
||||
declare interface XULIframeElement extends XULElement {
|
||||
contentWindow: Window;
|
||||
src: string;
|
||||
}
|
||||
|
||||
// `declare interface Window` is TypeScript way to let us implicitely extend and
|
||||
// augment the already existing Window interface defined in the TypeScript library.
|
||||
// This makes it possible to define properties that exist in the window object
|
||||
// while in a privileged context. We assume that all of the environments we run
|
||||
// in this project will be pribileged, that's why we take this shortcut of
|
||||
// globally extending the Window type.
|
||||
// See the ChromeOnly attributes in https://searchfox.org/mozilla-central/rev/896042a1a71066254ceb5291f016ca3dbca21cb7/dom/webidl/Window.webidl#391
|
||||
//
|
||||
// openWebLinkIn and openTrustedLinkIn aren't in all privileged windows, but
|
||||
// they're also defined in the privileged environments we're dealing with in
|
||||
// this project, so they're defined here for convenience.
|
||||
declare interface Window {
|
||||
browsingContext: MockedExports.BrowsingContext;
|
||||
openWebLinkIn: (
|
||||
url: string,
|
||||
where: 'current' | 'tab' | 'tabshifted' | 'window' | 'save',
|
||||
options?: Partial<{
|
||||
// Not all possible options are present, please add more if/when needed.
|
||||
userContextId: number;
|
||||
forceNonPrivate: boolean;
|
||||
relatedToCurrent: boolean;
|
||||
resolveOnContentBrowserCreated: (contentBrowser: MockedExports.ChromeBrowser) => unknown;
|
||||
}>
|
||||
) => void;
|
||||
openTrustedLinkIn: (
|
||||
url: string,
|
||||
where: 'current' | 'tab' | 'tabshifted' | 'window' | 'save',
|
||||
options?: Partial<{
|
||||
// Not all possible options are present, please add more if/when needed.
|
||||
userContextId: number;
|
||||
forceNonPrivate: boolean;
|
||||
relatedToCurrent: boolean;
|
||||
resolveOnContentBrowserCreated: (contentBrowser: MockedExports.ChromeBrowser) => unknown;
|
||||
}>
|
||||
) => void;
|
||||
}
|
||||
|
||||
declare class ChromeWorker extends Worker {}
|
||||
|
||||
declare interface MenuListElement extends XULElement {
|
||||
value: string;
|
||||
disabled: boolean;
|
||||
}
|
||||
|
||||
declare interface XULCommandEvent extends Event {
|
||||
target: XULElement;
|
||||
}
|
||||
|
||||
declare interface XULElementWithCommandHandler {
|
||||
addEventListener: (type: 'command', handler: (event: XULCommandEvent) => void, isCapture?: boolean) => void;
|
||||
removeEventListener: (type: 'command', handler: (event: XULCommandEvent) => void, isCapture?: boolean) => void;
|
||||
}
|
||||
|
||||
declare type nsIPrefBranch = MockedExports.nsIPrefBranch;
|
||||
|
||||
// chrome context-only DOM isInstance method
|
||||
// XXX: This hackishly extends Function because there is no way to extend DOM constructors.
|
||||
// Callers should manually narrow the type when needed.
|
||||
// See also https://github.com/microsoft/TypeScript-DOM-lib-generator/issues/222
|
||||
interface Function {
|
||||
isInstance(obj: any): boolean;
|
||||
}
|
||||
@@ -35,7 +35,7 @@ export var ZenCustomizableUI = new (class {
|
||||
}
|
||||
|
||||
_addSidebarButtons(window) {
|
||||
const toolbox = window.document.getElementById('navigator-toolbox');
|
||||
const toolbox = window.gNavToolbox;
|
||||
|
||||
// Set a splitter to navigator-toolbox
|
||||
const splitter = window.document.createXULElement('splitter');
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
}
|
||||
|
||||
this._initSidebarScrolling();
|
||||
this._hideUnusedElements();
|
||||
|
||||
ZenWorkspaces.init();
|
||||
gZenVerticalTabsManager.init();
|
||||
@@ -116,8 +117,7 @@
|
||||
const kElementsToAppend = ['sidebar-splitter', 'sidebar-box'];
|
||||
|
||||
const browser = document.getElementById('browser');
|
||||
const toolbox = document.getElementById('navigator-toolbox');
|
||||
browser.prepend(toolbox);
|
||||
browser.prepend(gNavToolbox);
|
||||
|
||||
const sidebarPanelWrapper = document.getElementById('tabbrowser-tabbox');
|
||||
for (let id of kElementsToAppend) {
|
||||
@@ -128,6 +128,16 @@
|
||||
}
|
||||
},
|
||||
|
||||
_hideUnusedElements() {
|
||||
const kElements = ['firefox-view-button'];
|
||||
for (let id of kElements) {
|
||||
const elem = document.getElementById(id);
|
||||
if (elem) {
|
||||
elem.setAttribute('hidden', 'true');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_initSidebarScrolling() {
|
||||
// Disable smooth scroll
|
||||
const canSmoothScroll = Services.prefs.getBoolPref('zen.startup.smooth-scroll-in-tabs', false);
|
||||
|
||||
@@ -28,7 +28,7 @@ var gZenUIManager = {
|
||||
gZenCompactModeManager.getAndApplySidebarWidth.bind(gZenCompactModeManager),
|
||||
this.sidebarHeightThrottle
|
||||
)
|
||||
).observe(document.getElementById('navigator-toolbox'));
|
||||
).observe(gNavToolbox);
|
||||
|
||||
SessionStore.promiseAllWindowsRestored.then(() => {
|
||||
this._hasLoadedDOM = true;
|
||||
@@ -322,11 +322,7 @@ var gZenVerticalTabsManager = {
|
||||
},
|
||||
|
||||
get navigatorToolbox() {
|
||||
if (this._navigatorToolbox) {
|
||||
return this._navigatorToolbox;
|
||||
}
|
||||
this._navigatorToolbox = document.getElementById('navigator-toolbox');
|
||||
return this._navigatorToolbox;
|
||||
return gNavToolbox;
|
||||
},
|
||||
|
||||
initRightSideOrderContextMenu() {
|
||||
@@ -678,7 +674,7 @@ var gZenVerticalTabsManager = {
|
||||
|
||||
_updateMaxWidth() {
|
||||
const maxWidth = Services.prefs.getIntPref('zen.view.sidebar-expanded.max-width');
|
||||
const toolbox = document.getElementById('navigator-toolbox');
|
||||
const toolbox = gNavToolbox;
|
||||
if (!this._prefsCompactMode) {
|
||||
toolbox.style.maxWidth = `${maxWidth}px`;
|
||||
} else {
|
||||
|
||||
@@ -6,7 +6,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||
|
||||
class ZenUIMigration {
|
||||
PREF_NAME = 'zen.migration.version';
|
||||
MIGRATION_VERSION = 1;
|
||||
MIGRATION_VERSION = 2;
|
||||
|
||||
init(isNewProfile, win) {
|
||||
if (!isNewProfile) {
|
||||
@@ -27,13 +27,16 @@ class ZenUIMigration {
|
||||
if (this._migrationVersion < 1) {
|
||||
this._migrateV1(win);
|
||||
}
|
||||
if (this._migrationVersion < 2) {
|
||||
this._migrateV2(win);
|
||||
}
|
||||
}
|
||||
|
||||
clearVariables() {
|
||||
this._migrationVersion = this.MIGRATION_VERSION;
|
||||
}
|
||||
|
||||
async _migrateV1(win) {
|
||||
_migrateV1(win) {
|
||||
// Introduction of the new URL bar, show a message to the user
|
||||
const notification = win.gNotificationBox.appendNotification(
|
||||
'zen-new-urlbar-notification',
|
||||
@@ -57,6 +60,13 @@ class ZenUIMigration {
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
_migrateV2(win) {
|
||||
if (Services.prefs.getBoolPref('zen.widget.windows.acrylic', false)) {
|
||||
Services.prefs.setIntPref('widget.windows.mica.toplevel-backdrop', 2);
|
||||
Services.prefs.clearUserPref('zen.widget.windows.acrylic');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export var gZenUIMigration = new ZenUIMigration();
|
||||
|
||||
@@ -163,7 +163,7 @@
|
||||
@media (-moz-windows-mica) or (-moz-platform: macos) {
|
||||
background: transparent;
|
||||
--zen-themed-toolbar-bg-transparent: transparent;
|
||||
@media -moz-pref('zen.widget.windows.acrylic') {
|
||||
@media -moz-pref('widget.windows.mica.toplevel-backdrop', 2) {
|
||||
--zen-themed-toolbar-bg-transparent: color-mix(in srgb, var(--zen-themed-toolbar-bg) 35%, transparent 65%);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,10 +88,7 @@ var gZenCompactModeManager = {
|
||||
},
|
||||
|
||||
get sidebar() {
|
||||
if (!this._sidebar) {
|
||||
this._sidebar = document.getElementById('navigator-toolbox');
|
||||
}
|
||||
return this._sidebar;
|
||||
return gNavToolbox;
|
||||
},
|
||||
|
||||
flashSidebarIfNecessary(aInstant = false) {
|
||||
|
||||
@@ -4,6 +4,12 @@
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
tab-group {
|
||||
& .tabbrowser-tab {
|
||||
margin-inline-start: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
tab-group[split-view-group] {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
|
||||
@@ -271,7 +271,7 @@
|
||||
this.closingGlance = true;
|
||||
this._animating = true;
|
||||
|
||||
gBrowser._insertTabAtIndex(this.#currentTab, {
|
||||
gBrowser.zenInsertTabAtIndex(this.#currentTab, {
|
||||
index: this.getTabPosition(this.#currentParentTab),
|
||||
});
|
||||
|
||||
@@ -564,7 +564,7 @@
|
||||
this.animatingFullOpen = true;
|
||||
this.#currentTab.setAttribute('zen-dont-split-glance', true);
|
||||
|
||||
gBrowser._insertTabAtIndex(this.#currentTab, {
|
||||
gBrowser.zenInsertTabAtIndex(this.#currentTab, {
|
||||
index: this.getTabPosition(this.#currentTab),
|
||||
});
|
||||
|
||||
|
||||
@@ -187,7 +187,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
if (!draggedTab || gBrowser.selectedTab.hasAttribute('zen-empty-tab')) {
|
||||
return;
|
||||
}
|
||||
draggedTab.container._finishMoveTogetherSelectedTabs(draggedTab);
|
||||
draggedTab.container.finishMoveTogetherSelectedTabs(draggedTab);
|
||||
}
|
||||
if (
|
||||
!draggedTab ||
|
||||
|
||||
@@ -294,9 +294,6 @@
|
||||
}
|
||||
gBrowser.tabContainer._invalidateCachedTabs();
|
||||
newTab.initialize();
|
||||
if (!ZenWorkspaces.essentialShouldShowTab(newTab)) {
|
||||
gBrowser.hideTab(newTab, undefined, true);
|
||||
}
|
||||
} catch (ex) {
|
||||
console.error('Failed to initialize pinned tabs:', ex);
|
||||
}
|
||||
@@ -332,7 +329,7 @@
|
||||
}
|
||||
|
||||
async _onTabMove(tab) {
|
||||
if (!tab.pinned) {
|
||||
if (!tab.pinned || !this._pinsCache) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -650,6 +647,11 @@
|
||||
this.onTabIconChanged(tab);
|
||||
}
|
||||
gZenUIManager.updateTabsToolbar();
|
||||
// Dispatch the event to update the UI
|
||||
const event = new CustomEvent('TabAddedToEssentials', {
|
||||
detail: { tab },
|
||||
});
|
||||
tab.dispatchEvent(event);
|
||||
}
|
||||
|
||||
removeEssentials(tab, unpin = true) {
|
||||
@@ -670,6 +672,11 @@
|
||||
}
|
||||
}
|
||||
gZenUIManager.updateTabsToolbar();
|
||||
// Dispatch the event to update the UI
|
||||
const event = new CustomEvent('TabRemovedFromEssentials', {
|
||||
detail: { tab },
|
||||
});
|
||||
tab.dispatchEvent(event);
|
||||
}
|
||||
|
||||
_insertItemsIntoTabContextMenu() {
|
||||
@@ -729,8 +736,20 @@
|
||||
try {
|
||||
const pinnedTabsTarget =
|
||||
event.target.closest('#vertical-pinned-tabs-container') || event.target.closest('.zen-current-workspace-indicator');
|
||||
const essentialTabsTarget = event.target.closest('#zen-essentials-container');
|
||||
const essentialTabsTarget = event.target.closest('.zen-essentials-container');
|
||||
const tabsTarget = event.target.closest('#tabbrowser-arrowscrollbox');
|
||||
// Remove group labels from the moving tabs and replace it
|
||||
// with the sub tabs
|
||||
for (let i = 0; i < movingTabs.length; i++) {
|
||||
const draggedTab = movingTabs[i];
|
||||
if (draggedTab.classList.contains('tab-group-label')) {
|
||||
const group = draggedTab.group;
|
||||
// remove label and add sub tabs to moving tabs
|
||||
if (group) {
|
||||
movingTabs.splice(i, 1, ...group.tabs);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let isVertical = this.expandedSidebarMode;
|
||||
let moved = false;
|
||||
@@ -791,7 +810,7 @@
|
||||
if (tabsTarget === gBrowser.tabs.at(-1)) {
|
||||
newIndex++;
|
||||
}
|
||||
gBrowser.moveTabTo(draggedTab, newIndex, { forceStandaloneTab: true });
|
||||
gBrowser.moveTabTo(draggedTab, { tabIndex: newIndex, forceUngrouped: true });
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -901,10 +920,11 @@
|
||||
|
||||
applyDragoverClass(event, draggedTab) {
|
||||
const pinnedTabsTarget = event.target.closest('#vertical-pinned-tabs-container');
|
||||
const essentialTabsTarget = event.target.closest('#zen-essentials-container');
|
||||
const essentialTabsTarget = event.target.closest('.zen-essentials-container');
|
||||
const tabsTarget = event.target.closest('#tabbrowser-arrowscrollbox');
|
||||
let targetTab = event.target.closest('.tabbrowser-tab');
|
||||
targetTab = targetTab?.group || targetTab;
|
||||
draggedTab = draggedTab?.group?.hasAttribute('split-view-group') ? draggedTab.group : draggedTab;
|
||||
if (event.target.closest('.zen-current-workspace-indicator')) {
|
||||
this.removeTabContainersDragoverClass();
|
||||
ZenWorkspaces.activeWorkspaceIndicator?.setAttribute('open', true);
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
*/
|
||||
/* Styles for both vertical and horizontal tabs */
|
||||
@import url('chrome://browser/content/zen-styles/zen-tabs/vertical-tabs.css');
|
||||
@import url('chrome://browser/content/zen-styles/zen-tabs/horizontal-tabs.css');
|
||||
|
||||
#zen-tabbox-wrapper {
|
||||
position: relative;
|
||||
|
||||
@@ -1,335 +0,0 @@
|
||||
/*
|
||||
* 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/.
|
||||
*/
|
||||
@media not -moz-pref('zen.tabs.vertical') {
|
||||
:root #browser {
|
||||
display: flex !important;
|
||||
flex-direction: column !important;
|
||||
}
|
||||
|
||||
& #navigator-toolbox {
|
||||
display: flex !important;
|
||||
flex-direction: row !important;
|
||||
max-width: unset !important;
|
||||
min-width: unset !important;
|
||||
width: 100% !important;
|
||||
padding: var(--zen-toolbox-padding) !important;
|
||||
}
|
||||
|
||||
#tabbrowser-tabs {
|
||||
display: -webkit-box !important;
|
||||
-webkit-box-orient: horizontal;
|
||||
-webkit-box-pack: start;
|
||||
max-width: 10000px !important;
|
||||
|
||||
--tabstrip-min-height: calc(var(--tab-min-height) - 4 * var(--tab-block-margin));
|
||||
--tab-min-height: 10px !important;
|
||||
}
|
||||
|
||||
.vertical-pinned-tabs-container-separator {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#zen-essentials-container,
|
||||
#vertical-pinned-tabs-container,
|
||||
#tabbrowser-arrowscrollbox {
|
||||
-webkit-box-flex: 1;
|
||||
}
|
||||
|
||||
#vertical-pinned-tabs-container:empty {
|
||||
-webkit-box-flex: 0 !important;
|
||||
width: 0 !important;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
border: none !important;
|
||||
visibility: collapse !important;
|
||||
}
|
||||
#navigator-toolbox {
|
||||
flex-direction: row !important;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#titlebar {
|
||||
flex-direction: row !important;
|
||||
width: 100%;
|
||||
height: 36px !important;
|
||||
}
|
||||
|
||||
#zen-essentials-container {
|
||||
--tab-min-height: 36px !important;
|
||||
display: flex !important;
|
||||
flex-direction: row !important;
|
||||
padding-inline-end: 0 !important;
|
||||
}
|
||||
|
||||
#vertical-pinned-tabs-container {
|
||||
display: flex !important;
|
||||
flex-direction: row !important;
|
||||
padding-inline-end: 0 !important;
|
||||
}
|
||||
|
||||
#zen-essentials-container .tabbrowser-tab {
|
||||
width: 0% !important;
|
||||
}
|
||||
|
||||
#vertical-pinned-tabs-container .tabbrowser-tab {
|
||||
width: 0% !important;
|
||||
}
|
||||
|
||||
.tabbrowser-tab[zen-glance-tab='true'] {
|
||||
.tab-label-container {
|
||||
display: none !important;
|
||||
width: 0px !important;
|
||||
max-width: 0px !important;
|
||||
}
|
||||
}
|
||||
|
||||
#tabbrowser-arrowscrollbox {
|
||||
display: flex !important;
|
||||
max-width: -moz-available;
|
||||
overflow: hidden !important;
|
||||
}
|
||||
|
||||
#TabsToolbar {
|
||||
flex-direction: row !important;
|
||||
gap: 8px;
|
||||
overflow: hidden !important;
|
||||
display: flex !important;
|
||||
}
|
||||
|
||||
#TabsToolbar-customization-target {
|
||||
flex-direction: row !important;
|
||||
}
|
||||
|
||||
#tabbrowser-tabs[orient='vertical'] {
|
||||
flex-direction: row !important;
|
||||
}
|
||||
|
||||
tabs {
|
||||
flex-direction: row !important;
|
||||
}
|
||||
|
||||
#zen-essentials-container {
|
||||
container-name: tab-container;
|
||||
container-type: normal;
|
||||
max-width: 36px !important;
|
||||
flex: 1 1 36px !important;
|
||||
}
|
||||
#vertical-pinned-tabs-container {
|
||||
container-name: tab-container;
|
||||
container-type: normal;
|
||||
max-width: 36px !important;
|
||||
min-width: 36px !important;
|
||||
flex: 1 1 36px !important;
|
||||
}
|
||||
|
||||
#vertical-pinned-tabs-container .tab-close-button {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#vertical-pinned-tabs-container .tab-reset-button {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#vertical-pinned-tabs-container .tab-label-container {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#vertical-pinned-tabs-container .tab-icon-image {
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
.tabbrowser-tab {
|
||||
container-name: tab-container;
|
||||
container-type: normal;
|
||||
min-width: 40px !important;
|
||||
flex: 1 1 150px !important;
|
||||
width: -moz-available;
|
||||
|
||||
&:is(:hover, [visuallyselected]) .tab-close-button {
|
||||
display: block;
|
||||
--tab-inline-padding: 0; /* Avoid weird padding */
|
||||
margin-inline-end: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.tabbrowser-tab[selected] {
|
||||
flex: 2 0 150px !important;
|
||||
}
|
||||
|
||||
@container tab-container (max-width: 80px) {
|
||||
.tab-close-button {
|
||||
margin-right: 0px !important;
|
||||
}
|
||||
.tab-icon-image {
|
||||
padding: 0 !important;
|
||||
margin-left: min(2.5px, 5%) !important;
|
||||
margin-right: min(10px, 5%) !important;
|
||||
}
|
||||
.tab-label-container,
|
||||
.tab-content {
|
||||
margin: 0 !important;
|
||||
padding-left: min(8px, 5%) !important;
|
||||
padding-right: min(8px, 5%) !important;
|
||||
}
|
||||
}
|
||||
|
||||
@container tab-container (max-width: 44px) {
|
||||
.tab-label-container {
|
||||
display: none !important;
|
||||
}
|
||||
.tab-content {
|
||||
justify-content: space-around !important;
|
||||
}
|
||||
.tab-close-button {
|
||||
display: none !important;
|
||||
}
|
||||
.tabbrowser-tab[selected] {
|
||||
& .tab-icon-image,
|
||||
.tab-icon-stack {
|
||||
display: none !important;
|
||||
}
|
||||
& .tab-content {
|
||||
justify-content: space-around !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
.tab-close-button {
|
||||
display: block !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#vertical-pinned-tabs-container::after {
|
||||
z-index: -1;
|
||||
content: '';
|
||||
position: absolute;
|
||||
right: 0;
|
||||
width: 1px;
|
||||
height: 45%;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
background: hsl(255, 10%, 100%);
|
||||
}
|
||||
|
||||
/* Other UI Elements */
|
||||
.zen-current-workspace-indicator {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#zen-sidebar-splitter {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#tabbrowser-tabpanels {
|
||||
padding-left: var(--zen-element-separation) !important;
|
||||
}
|
||||
|
||||
#appcontent * {
|
||||
overflow: visible !important;
|
||||
}
|
||||
|
||||
#TabsToolbar-customization-target::after {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#zen-sidebar-bottom-buttons {
|
||||
width: auto !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
/* Height Adjustments */
|
||||
#vertical-pinned-tabs-container,
|
||||
#zen-essentials-container,
|
||||
#tabbrowser-arrowscrollbox {
|
||||
max-height: none !important;
|
||||
}
|
||||
|
||||
#PanelUI-zen-gradient-generator {
|
||||
min-width: 390px !important;
|
||||
}
|
||||
|
||||
#zen-essentials-container:not(:empty),
|
||||
#vertical-pinned-tabs-container:not(:empty),
|
||||
#tabbrowser-arrowscrollbox {
|
||||
-webkit-box-flex: 1;
|
||||
min-width: min-content;
|
||||
width: auto !important;
|
||||
}
|
||||
|
||||
#vertical-pinned-tabs-container:not(:empty) {
|
||||
display: -webkit-box !important;
|
||||
-webkit-box-orient: horizontal;
|
||||
min-width: fit-content !important;
|
||||
width: fit-content !important;
|
||||
position: relative;
|
||||
margin-right: -1px !important;
|
||||
}
|
||||
|
||||
#vertical-pinned-tabs-container:not(:empty) .tabbrowser-tab {
|
||||
position: relative;
|
||||
display: -webkit-box !important;
|
||||
}
|
||||
|
||||
#tabbrowser-arrowscrollbox {
|
||||
margin-left: 0 !important;
|
||||
}
|
||||
|
||||
#vertical-pinned-tabs-container:empty,
|
||||
#zen-essentials-container:empty {
|
||||
-webkit-box-flex: 0 !important;
|
||||
width: 0 !important;
|
||||
min-width: 0 !important;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
border: none !important;
|
||||
visibility: collapse !important;
|
||||
}
|
||||
|
||||
#nav-bar {
|
||||
width: unset !important;
|
||||
min-width: 500px !important;
|
||||
}
|
||||
|
||||
#tabbrowser-arrowscrollbox-periphery {
|
||||
margin: 0 !important;
|
||||
}
|
||||
|
||||
hbox#nav-bar-customization-target toolbarbutton.chromeclass-toolbar-additional:nth-of-type(1) {
|
||||
padding-inline-start: var(--toolbar-start-end-padding) !important;
|
||||
}
|
||||
|
||||
toolbar#PersonalToolbar {
|
||||
padding-left: 6px !important;
|
||||
}
|
||||
|
||||
.tab-context-line {
|
||||
width: 100% !important;
|
||||
height: 3px !important;
|
||||
}
|
||||
|
||||
.tabbrowser-tab[zen-glance-tab='true'] {
|
||||
flex-basis: fit-content !important;
|
||||
max-width: 36px !important;
|
||||
}
|
||||
|
||||
#zen-essentials-container .tabbrowser-tab[zen-glance-tab='true'] {
|
||||
left: 2px;
|
||||
}
|
||||
|
||||
#vertical-pinned-tabs-container .tabbrowser-tab[zen-glance-tab='true'] {
|
||||
position: absolute !important;
|
||||
}
|
||||
|
||||
#TabsToolbar-customization-target toolbarbutton,
|
||||
#TabsToolbar-customization-target toolbarpaletteitem {
|
||||
-webkit-box-flex: 0 !important;
|
||||
min-width: min-content;
|
||||
width: auto !important;
|
||||
|
||||
.toolbarbutton-text {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -497,7 +497,7 @@
|
||||
position: relative;
|
||||
}
|
||||
|
||||
& #zen-essentials-container {
|
||||
& #zen-essentials-wrapper {
|
||||
--tab-min-height: 44px;
|
||||
}
|
||||
|
||||
@@ -650,7 +650,7 @@
|
||||
opacity: .4;
|
||||
align-items: center;
|
||||
}
|
||||
& #zen-essentials-container {
|
||||
& .zen-essentials-container {
|
||||
justify-content: center;
|
||||
}
|
||||
& #vertical-tabs-newtab-button {
|
||||
@@ -1045,24 +1045,31 @@
|
||||
|
||||
|
||||
/* Mark: Essentials Toolbar */
|
||||
#zen-essentials-container {
|
||||
#zen-essentials-wrapper {
|
||||
margin-left: calc(-1 * var(--zen-toolbox-padding));
|
||||
min-width: calc(100% + var(--zen-toolbox-padding) * 2);
|
||||
}
|
||||
|
||||
.zen-essentials-container {
|
||||
padding-bottom: var(--zen-toolbox-padding);
|
||||
overflow: hidden;
|
||||
gap: calc(var(--zen-toolbox-padding) - 2px);
|
||||
}
|
||||
|
||||
#zen-essentials-container {
|
||||
overflow: hidden;
|
||||
transition: max-height 0.3s ease-out;
|
||||
opacity: 1;
|
||||
grid-template-columns: repeat(auto-fit, minmax(49px, auto));
|
||||
overflow: hidden;
|
||||
scrollbar-width: thin;
|
||||
min-width: calc(100% + var(--zen-toolbox-padding) * 2);
|
||||
padding: 0 var(--zen-toolbox-padding);
|
||||
|
||||
display: grid;
|
||||
padding: 0;
|
||||
&[hidden='true'] {
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
|
||||
#zen-essentials-container > .tabbrowser-tab,
|
||||
.zen-essentials-container > .tabbrowser-tab,
|
||||
#zen-welcome-initial-essentials-browser-sidebar-essentials .tabbrowser-tab {
|
||||
--toolbarbutton-inner-padding: 0;
|
||||
max-width: unset;
|
||||
@@ -1240,15 +1247,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
/* Horizontal tabs reordering indicators */
|
||||
#zen-essentials-container .tabbrowser-tab.drag-over-before {
|
||||
box-shadow: 3px 0 6px -2px var(--toolbarbutton-active-background, rgba(0, 255, 0, 0.2));
|
||||
}
|
||||
|
||||
#zen-essentials-container .tabbrowser-tab.drag-over-after {
|
||||
box-shadow: -3px 0 6px -2px var(--toolbarbutton-active-background, rgba(0, 255, 0, 0.2));
|
||||
}
|
||||
|
||||
/* Renaming tabs */
|
||||
.tab-label-container-editing {
|
||||
display: none !important;
|
||||
@@ -1267,9 +1265,12 @@
|
||||
.zen-workspace-tabs-section {
|
||||
position: absolute;
|
||||
transform: translateX(-100%);
|
||||
min-width: calc(100% - var(--zen-toolbox-padding) * 2);
|
||||
|
||||
&:not(.zen-current-workspace-indicator) {
|
||||
&:not(.zen-essentials-container) {
|
||||
min-width: calc(100% - var(--zen-toolbox-padding) * 2);
|
||||
}
|
||||
|
||||
&:not(.zen-current-workspace-indicator):not(.zen-essentials-container) {
|
||||
margin: 0 var(--zen-toolbox-padding);
|
||||
}
|
||||
}
|
||||
|
||||
7
src/zen/vendor/motion.min.mjs
vendored
7
src/zen/vendor/motion.min.mjs
vendored
File diff suppressed because one or more lines are too long
@@ -73,9 +73,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
'zen.workspaces.open-new-tab-if-last-unpinned-tab-is-closed',
|
||||
false
|
||||
);
|
||||
XPCOMUtils.defineLazyPreferenceGetter(
|
||||
this,
|
||||
'containerSpecificEssentials',
|
||||
this.containerSpecificEssentials = Services.prefs.getBoolPref(
|
||||
'zen.workspaces.container-specific-essentials-enabled',
|
||||
false
|
||||
);
|
||||
@@ -172,6 +170,12 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
}
|
||||
this._pinnedTabsResizeObserver.observe(element);
|
||||
}
|
||||
for (let element of document.getElementById('zen-essentials-wrapper').children) {
|
||||
if (element.classList.contains('tabbrowser-tab')) {
|
||||
continue;
|
||||
}
|
||||
this._pinnedTabsResizeObserver.observe(element);
|
||||
}
|
||||
}
|
||||
|
||||
get activeWorkspaceStrip() {
|
||||
@@ -218,7 +222,6 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
const defaultSelectedContainer = document.querySelector(
|
||||
`#tabbrowser-arrowscrollbox .zen-workspace-tabs-section[zen-workspace-id="${this.activeWorkspace}"]`
|
||||
);
|
||||
const essentialsContaienr = document.getElementById('zen-essentials-container');
|
||||
// New profile with no workspaces does not have a default selected container
|
||||
if (defaultSelectedContainer) {
|
||||
const pinnedContainer = document.querySelector(
|
||||
@@ -226,7 +229,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
);
|
||||
for (const tab of tabs) {
|
||||
if (tab.hasAttribute('zen-essential')) {
|
||||
essentialsContaienr.appendChild(tab);
|
||||
this.getEssentialsSection(tab).appendChild(tab);
|
||||
continue;
|
||||
} else if (tab.pinned) {
|
||||
pinnedContainer.insertBefore(tab, pinnedContainer.lastChild);
|
||||
@@ -244,7 +247,31 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
this._fixIndicatorsNames(workspaces);
|
||||
}
|
||||
|
||||
_createWorkspaceSection(workspace) {
|
||||
getEssentialsSection(container = 0) {
|
||||
if (typeof container !== 'number') {
|
||||
container = container?.getAttribute('usercontextid');
|
||||
}
|
||||
container ??= 0;
|
||||
if (!this.containerSpecificEssentials) {
|
||||
container = 0;
|
||||
}
|
||||
let essentialsContainer = document.querySelector(`.zen-essentials-container[container="${container}"]:not([clone])`);
|
||||
if (!essentialsContainer) {
|
||||
essentialsContainer = document.createXULElement('vbox');
|
||||
essentialsContainer.className = 'zen-essentials-container zen-workspace-tabs-section';
|
||||
essentialsContainer.setAttribute('flex', '1');
|
||||
essentialsContainer.setAttribute('container', container);
|
||||
document.getElementById('zen-essentials-wrapper').appendChild(essentialsContainer);
|
||||
}
|
||||
return essentialsContainer;
|
||||
}
|
||||
|
||||
getCurrentEssentialsContainer() {
|
||||
const currentWorkspace = this.activeWorkspace;
|
||||
return this.getEssentialsSection(currentWorkspace?.containerTabId);
|
||||
}
|
||||
|
||||
#createWorkspaceSection(workspace) {
|
||||
const section = document.createXULElement('vbox');
|
||||
section.className = 'zen-workspace-tabs-section';
|
||||
section.setAttribute('flex', '1');
|
||||
@@ -254,11 +281,11 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
|
||||
async _createWorkspaceTabsSection(workspace, tabs, perifery) {
|
||||
const container = gBrowser.tabContainer.arrowScrollbox;
|
||||
const section = this._createWorkspaceSection(workspace);
|
||||
const section = this.#createWorkspaceSection(workspace);
|
||||
container.appendChild(section);
|
||||
|
||||
const pinnedContainer = document.getElementById('vertical-pinned-tabs-container');
|
||||
const pinnedSection = this._createWorkspaceSection(workspace);
|
||||
const pinnedSection = this.#createWorkspaceSection(workspace);
|
||||
this._organizeTabsToWorkspaceSections(workspace, section, pinnedSection, tabs);
|
||||
section.appendChild(perifery.cloneNode(true));
|
||||
pinnedSection.appendChild(
|
||||
@@ -268,7 +295,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
);
|
||||
pinnedContainer.appendChild(pinnedSection);
|
||||
|
||||
const workspaceIndicator = this._createWorkspaceSection(workspace);
|
||||
const workspaceIndicator = this.#createWorkspaceSection(workspace);
|
||||
workspaceIndicator.classList.add('zen-current-workspace-indicator');
|
||||
workspaceIndicator.appendChild(window.MozXULElement.parseXULToFragment(this.workspaceIndicatorXUL));
|
||||
document.getElementById('zen-current-workspace-indicator-container').appendChild(workspaceIndicator);
|
||||
@@ -319,11 +346,12 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
}
|
||||
|
||||
get _hoveringSidebar() {
|
||||
return document.getElementById('navigator-toolbox').hasAttribute('zen-has-hover');
|
||||
return gNavToolbox.hasAttribute('zen-has-hover');
|
||||
}
|
||||
|
||||
_handleAppCommand(event) {
|
||||
if (!this.workspaceEnabled || !this._hoveringSidebar) {
|
||||
// note: Dont use this._hoveringSidebar as it's not as reliable as checking for :hover
|
||||
if (!this.workspaceEnabled || !gNavToolbox.matches(':hover')) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -344,7 +372,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
}
|
||||
|
||||
_setupSidebarHandlers() {
|
||||
const toolbox = document.getElementById('navigator-toolbox');
|
||||
const toolbox = gNavToolbox;
|
||||
|
||||
const scrollCooldown = 200; // Milliseconds to wait before allowing another scroll
|
||||
const scrollThreshold = 2; // Minimum scroll delta to trigger workspace change
|
||||
@@ -395,7 +423,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
|
||||
initializeGestureHandlers() {
|
||||
const elements = [
|
||||
document.getElementById('navigator-toolbox'),
|
||||
gNavToolbox,
|
||||
// event handlers do not work on elements inside shadow DOM so we need to attach them directly
|
||||
document.getElementById('tabbrowser-arrowscrollbox').shadowRoot.querySelector('scrollbox'),
|
||||
];
|
||||
@@ -601,8 +629,11 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
this._initializeWorkspaceTabContextMenus();
|
||||
await this.workspaceBookmarks();
|
||||
window.addEventListener('TabBrowserInserted', this.onTabBrowserInserted.bind(this));
|
||||
window.addEventListener('TabOpen', this.updateTabsContainers.bind(this));
|
||||
window.addEventListener('TabClose', this.updateTabsContainers.bind(this));
|
||||
const tabUpdateListener = this.updateTabsContainers.bind(this);
|
||||
window.addEventListener('TabOpen', tabUpdateListener);
|
||||
window.addEventListener('TabClose', tabUpdateListener);
|
||||
window.addEventListener('TabAddedToEssentials', tabUpdateListener);
|
||||
window.addEventListener('TabRemovedFromEssentials', tabUpdateListener);
|
||||
let activeWorkspace = await this.getActiveWorkspace();
|
||||
this.activeWorkspace = activeWorkspace?.uuid;
|
||||
try {
|
||||
@@ -629,7 +660,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
if (this._initialTab) {
|
||||
this.moveTabToWorkspace(this._initialTab, this.activeWorkspace);
|
||||
gBrowser.selectedTab = this._initialTab;
|
||||
gBrowser.moveTabTo(this._initialTab, 0, { forceStandaloneTab: true });
|
||||
gBrowser.moveTabTo(this._initialTab, { forceUngrouped: true, tabIndex: 0 });
|
||||
this._initialTab._possiblyEmpty = false;
|
||||
this._initialTab = null;
|
||||
}
|
||||
@@ -1591,22 +1622,13 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
await this._organizeWorkspaceStripLocations(previousWorkspace);
|
||||
}
|
||||
|
||||
// First pass: Handle tab visibility and workspace ID assignment
|
||||
const prevTabUsed = this._processTabVisibility(window.uuid, containerId, workspaces, onInit);
|
||||
|
||||
// Second pass: Handle tab selection
|
||||
this.tabContainer._invalidateCachedTabs();
|
||||
const tabToSelect = await this._handleTabSelection(
|
||||
window,
|
||||
onInit,
|
||||
containerId,
|
||||
workspaces,
|
||||
previousWorkspace.uuid,
|
||||
prevTabUsed
|
||||
);
|
||||
const tabToSelect = await this._handleTabSelection(window, onInit, previousWorkspace.uuid);
|
||||
|
||||
// Update UI and state
|
||||
await this._updateWorkspaceState(window, onInit, tabToSelect);
|
||||
const previousWorkspaceIndex = workspaces.workspaces.findIndex((w) => w.uuid === previousWorkspace.uuid);
|
||||
await this._updateWorkspaceState(window, onInit, tabToSelect, { previousWorkspaceIndex, previousWorkspace });
|
||||
}
|
||||
|
||||
_moveEmptyTabToWorkspace(workspaceUuid) {
|
||||
@@ -1632,9 +1654,28 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
}
|
||||
}
|
||||
|
||||
_updateMarginTopPinnedTabs(arrowscrollbox, pinnedContainer) {
|
||||
if (arrowscrollbox) {
|
||||
arrowscrollbox.style.marginTop = pinnedContainer.getBoundingClientRect().height + 'px';
|
||||
_updateMarginTopPinnedTabs(arrowscrollbox, pinnedContainer, essentialContainer, workspaceIndicator) {
|
||||
if (arrowscrollbox && !pinnedContainer.hasAttribute('hidden')) {
|
||||
const essentialsHeight = essentialContainer.getBoundingClientRect().height;
|
||||
pinnedContainer.style.marginTop = essentialsHeight + 'px';
|
||||
workspaceIndicator.style.marginTop = essentialsHeight + 'px';
|
||||
const arrowMarginTop = pinnedContainer.getBoundingClientRect().height + essentialsHeight + 'px';
|
||||
if (!true) {
|
||||
// TODO:
|
||||
gZenUIManager.motion.animate(
|
||||
arrowscrollbox,
|
||||
{
|
||||
marginTop: [arrowscrollbox.style.marginTop, arrowMarginTop],
|
||||
},
|
||||
{
|
||||
type: 'spring',
|
||||
bounce: 0,
|
||||
duration: 0.2,
|
||||
}
|
||||
);
|
||||
} else {
|
||||
arrowscrollbox.style.marginTop = arrowMarginTop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1656,6 +1697,15 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
}
|
||||
}
|
||||
}
|
||||
// Hide other essentials with different containerTabId
|
||||
const otherContainersEssentials = document.querySelectorAll(`#zen-essentials-wrapper .zen-workspace-tabs-section`);
|
||||
for (const container of otherContainersEssentials) {
|
||||
if (container.getAttribute('container') != workspace.containerTabId && this.containerSpecificEssentials) {
|
||||
container.setAttribute('hidden', 'true');
|
||||
} else {
|
||||
container.removeAttribute('hidden');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
updateWorkspaceIndicator(currentWorkspace, workspaceIndicator) {
|
||||
@@ -1683,12 +1733,45 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
}
|
||||
}
|
||||
|
||||
async _animateTabs(newWorkspace, shouldAnimate, tabToSelect = null) {
|
||||
async _animateTabs(
|
||||
newWorkspace,
|
||||
shouldAnimate,
|
||||
tabToSelect = null,
|
||||
{ previousWorkspaceIndex = null, previousWorkspace = null } = {}
|
||||
) {
|
||||
const kGlobalAnimationDuration = 0.3;
|
||||
this._animatingChange = true;
|
||||
const animations = [];
|
||||
const workspaces = await this._workspaces();
|
||||
const newWorkspaceIndex = workspaces.workspaces.findIndex((w) => w.uuid === newWorkspace.uuid);
|
||||
const isGoingLeft = newWorkspaceIndex <= previousWorkspaceIndex;
|
||||
const clonedEssentials = [];
|
||||
if (shouldAnimate && this.containerSpecificEssentials) {
|
||||
for (const workspace of workspaces.workspaces) {
|
||||
const essentialsContainer = this.getEssentialsSection(workspace.containerTabId);
|
||||
if (clonedEssentials[clonedEssentials.length - 1]?.contextId == workspace.containerTabId) {
|
||||
clonedEssentials[clonedEssentials.length - 1].repeat++;
|
||||
clonedEssentials[clonedEssentials.length - 1].workspaces.push(workspace);
|
||||
continue;
|
||||
}
|
||||
essentialsContainer.setAttribute('hidden', 'true');
|
||||
const essentialsClone = essentialsContainer.cloneNode(true);
|
||||
essentialsClone.removeAttribute('hidden');
|
||||
essentialsClone.setAttribute('cloned', 'true');
|
||||
clonedEssentials.push({
|
||||
container: essentialsClone,
|
||||
workspaces: [workspace],
|
||||
contextId: workspace.containerTabId,
|
||||
originalContainer: essentialsContainer,
|
||||
repeat: 0,
|
||||
});
|
||||
essentialsContainer.parentNode.appendChild(essentialsClone);
|
||||
}
|
||||
}
|
||||
for (const element of document.querySelectorAll('.zen-workspace-tabs-section')) {
|
||||
if (element.classList.contains('zen-essentials-container')) {
|
||||
continue;
|
||||
}
|
||||
const existingTransform = element.style.transform;
|
||||
const elementWorkspaceId = element.getAttribute('zen-workspace-id');
|
||||
const elementWorkspaceIndex = workspaces.workspaces.findIndex((w) => w.uuid === elementWorkspaceId);
|
||||
@@ -1705,7 +1788,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
{
|
||||
type: 'spring',
|
||||
bounce: 0,
|
||||
duration: 0.3,
|
||||
duration: kGlobalAnimationDuration,
|
||||
}
|
||||
)
|
||||
);
|
||||
@@ -1719,101 +1802,127 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
element.removeAttribute('active');
|
||||
}
|
||||
}
|
||||
await Promise.all(animations);
|
||||
this._animatingChange = false;
|
||||
}
|
||||
if (this.containerSpecificEssentials) {
|
||||
// Animate essentials
|
||||
const newWorkspaceEssentialsContainer = clonedEssentials.find((cloned) =>
|
||||
cloned.workspaces.some((w) => w.uuid === newWorkspace.uuid)
|
||||
);
|
||||
for (const cloned of clonedEssentials) {
|
||||
const container = cloned.container;
|
||||
const essentialsWorkspacess = cloned.workspaces;
|
||||
const repeats = cloned.repeat;
|
||||
// Animate like the workspaces above expect essentials are a bit more
|
||||
// complicated because they are not based on workspaces but on containers
|
||||
// So, if we have the following arangement:
|
||||
// | [workspace1] [workspace2] [workspace3] [workspace4]
|
||||
// | [container1] [container1] [container2] [container1]
|
||||
// And if we are changing from workspace 1 to workspace 4,
|
||||
// we should be doing the following:
|
||||
// First container (repeat 2 times) will stay in place until
|
||||
// we reach container 3, then animate to the left and container 2
|
||||
// also move to the left after that while container 1 in workspace 4
|
||||
// will slide in from the right
|
||||
|
||||
_processTabVisibility(workspaceUuid, containerId, workspaces, onInit) {
|
||||
const hiddenTabs = [];
|
||||
const visibleTabs = gBrowser.tabContainer.visibleTabs;
|
||||
for (const tab of gBrowser.tabs) {
|
||||
if (!this._shouldShowTab(tab, workspaceUuid, containerId, workspaces)) {
|
||||
hiddenTabs.push(tab);
|
||||
} else if (tab.hasAttribute('zen-essential')) {
|
||||
gBrowser.showTab(tab, undefined, true);
|
||||
}
|
||||
}
|
||||
// If there's no more visible tabs, make a new tab visible
|
||||
// or if ALL the visible tabs are essentials or we have our selected
|
||||
// tab hidden, select a new tab
|
||||
let prevTabUsed = null;
|
||||
if (
|
||||
(hiddenTabs.length === visibleTabs.length ||
|
||||
visibleTabs.every((tab) => tab.getAttribute('zen-essential') === 'true') ||
|
||||
hiddenTabs.includes(gBrowser.selectedTab)) &&
|
||||
gZenVerticalTabsManager._canReplaceNewTab &&
|
||||
!onInit
|
||||
) {
|
||||
prevTabUsed = gBrowser.selectedTab;
|
||||
this.selectEmptyTab(null, false);
|
||||
}
|
||||
for (const tab of hiddenTabs) {
|
||||
gBrowser.hideTab(tab, undefined, true);
|
||||
}
|
||||
return prevTabUsed;
|
||||
}
|
||||
|
||||
// Only use it in gZenPinnedTabsManager, when initializing essential tabs
|
||||
essentialShouldShowTab(tab) {
|
||||
if (tab.getAttribute('zen-essential') !== 'true') {
|
||||
return true;
|
||||
}
|
||||
const workspaces = this._workspaceCache;
|
||||
if (!workspaces) {
|
||||
return true;
|
||||
}
|
||||
const containerId = (
|
||||
workspaces.workspaces.find((workspace) => workspace.uuid === this.activeWorkspace) || {}
|
||||
)?.containerTabId?.toString();
|
||||
return this._shouldShowTab(tab, this.activeWorkspace, containerId, workspaces);
|
||||
}
|
||||
|
||||
_shouldShowTab(tab, workspaceUuid, containerId, workspaces) {
|
||||
const isEssential = tab.getAttribute('zen-essential') === 'true';
|
||||
const tabWorkspaceId = tab.getAttribute('zen-workspace-id');
|
||||
const tabContextId = tab.getAttribute('usercontextid');
|
||||
|
||||
if (tab.hasAttribute('zen-glance-tab')) {
|
||||
return true; // Always show glance tabs
|
||||
}
|
||||
|
||||
// Handle essential tabs
|
||||
if (isEssential) {
|
||||
if (!this.containerSpecificEssentials) {
|
||||
return true; // Show all essential tabs when containerSpecificEssentials is false
|
||||
}
|
||||
|
||||
if (containerId) {
|
||||
// In workspaces with default container: Show essentials that match the container
|
||||
return tabContextId === containerId;
|
||||
} else {
|
||||
// In workspaces without a default container: Show essentials that aren't in container-specific workspaces
|
||||
// or have usercontextid="0" or no usercontextid
|
||||
return (
|
||||
!tabContextId ||
|
||||
tabContextId === '0' ||
|
||||
!workspaces.workspaces.some((workspace) => workspace.containerTabId === parseInt(tabContextId, 10))
|
||||
// Get the index from first and last workspace
|
||||
const firstWorkspaceIndex = workspaces.workspaces.findIndex((w) => w.uuid === essentialsWorkspacess[0].uuid);
|
||||
const lastWorkspaceIndex = workspaces.workspaces.findIndex(
|
||||
(w) => w.uuid === essentialsWorkspacess[essentialsWorkspacess.length - 1].uuid
|
||||
);
|
||||
let stepsInBetween = Math.abs(newWorkspaceIndex - (isGoingLeft ? firstWorkspaceIndex : lastWorkspaceIndex)) + 1;
|
||||
const usingSameContainer =
|
||||
newWorkspaceEssentialsContainer.workspaces.some((w) => w.uuid === newWorkspace.uuid) &&
|
||||
newWorkspaceEssentialsContainer.workspaces.some((w) => w.uuid === previousWorkspace.uuid);
|
||||
let newOffset =
|
||||
-(
|
||||
newWorkspaceIndex -
|
||||
(isGoingLeft ? firstWorkspaceIndex : lastWorkspaceIndex) +
|
||||
(!isGoingLeft ? repeats - 1 : -repeats + 1)
|
||||
) * 100;
|
||||
|
||||
let existingOffset =
|
||||
-(
|
||||
newWorkspaceIndex -
|
||||
(isGoingLeft ? lastWorkspaceIndex : firstWorkspaceIndex) +
|
||||
(isGoingLeft ? repeats - 1 : -repeats + 1)
|
||||
) * 100;
|
||||
|
||||
const needsOffsetAdjustment = stepsInBetween > essentialsWorkspacess.length || usingSameContainer;
|
||||
|
||||
if (repeats > 0 && needsOffsetAdjustment) {
|
||||
if (!isGoingLeft) {
|
||||
if (existingOffset !== 0) existingOffset += 100;
|
||||
if (newOffset !== 0) newOffset += 100;
|
||||
} else {
|
||||
if (existingOffset !== 0) existingOffset -= 100;
|
||||
if (newOffset !== 0) newOffset -= 100;
|
||||
}
|
||||
}
|
||||
|
||||
// Special case: going forward from single reused container to a new one
|
||||
if (!usingSameContainer && !isGoingLeft && lastWorkspaceIndex === newWorkspaceIndex - 1) {
|
||||
existingOffset = 0;
|
||||
newOffset = -100;
|
||||
stepsInBetween = 1;
|
||||
}
|
||||
if (!usingSameContainer && isGoingLeft && firstWorkspaceIndex === newWorkspaceIndex + 1) {
|
||||
existingOffset = 0;
|
||||
newOffset = 100;
|
||||
stepsInBetween = 1;
|
||||
}
|
||||
if (
|
||||
!usingSameContainer &&
|
||||
isGoingLeft &&
|
||||
(firstWorkspaceIndex === newWorkspaceIndex - 1 || firstWorkspaceIndex === newWorkspaceIndex)
|
||||
) {
|
||||
existingOffset = -100;
|
||||
newOffset = 0;
|
||||
stepsInBetween = 1;
|
||||
}
|
||||
if (!usingSameContainer && !isGoingLeft && firstWorkspaceIndex === newWorkspaceIndex) {
|
||||
existingOffset = 100;
|
||||
newOffset = 0;
|
||||
stepsInBetween = 1;
|
||||
}
|
||||
|
||||
const newTransform = `translateX(${newOffset}%)`;
|
||||
const existingTransform = `translateX(${existingOffset}%)`;
|
||||
if (shouldAnimate) {
|
||||
container.style.transform = newTransform;
|
||||
animations.push(
|
||||
gZenUIManager.motion.animate(
|
||||
container,
|
||||
{
|
||||
transform: [existingTransform, new Array(stepsInBetween).fill(newTransform).join(',')],
|
||||
},
|
||||
{
|
||||
type: 'spring',
|
||||
bounce: 0,
|
||||
duration: kGlobalAnimationDuration,
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// For non-essential tabs (both normal and pinned)
|
||||
if (!tabWorkspaceId) {
|
||||
// Assign workspace ID to tabs without one
|
||||
this.moveTabToWorkspace(tab, workspaceUuid);
|
||||
return true;
|
||||
await Promise.all(animations);
|
||||
if (shouldAnimate) {
|
||||
for (const cloned of clonedEssentials) {
|
||||
cloned.container.remove();
|
||||
}
|
||||
}
|
||||
|
||||
// Show if tab belongs to current workspace
|
||||
return tabWorkspaceId === workspaceUuid;
|
||||
const essentialsContainer = this.getEssentialsSection(newWorkspace.containerTabId);
|
||||
essentialsContainer.removeAttribute('hidden');
|
||||
essentialsContainer.style.transform = 'none';
|
||||
gBrowser.tabContainer._invalidateCachedTabs();
|
||||
this._animatingChange = false;
|
||||
}
|
||||
|
||||
_shouldChangeToTab(aTab) {
|
||||
return !(aTab?.hasAttribute('zen-essential') || (aTab?.pinned && aTab?.hasAttribute('pending')));
|
||||
}
|
||||
|
||||
async _handleTabSelection(window, onInit, containerId, workspaces, previousWorkspaceId, prevTabUsed) {
|
||||
const currentSelectedTab = prevTabUsed || gBrowser.selectedTab;
|
||||
async _handleTabSelection(window, onInit, previousWorkspaceId) {
|
||||
const currentSelectedTab = gBrowser.selectedTab;
|
||||
const oldWorkspaceId = previousWorkspaceId;
|
||||
const lastSelectedTab = this._lastSelectedWorkspaceTabs[window.uuid];
|
||||
|
||||
@@ -1824,7 +1933,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
|
||||
let tabToSelect = null;
|
||||
// Try last selected tab if it is visible
|
||||
if (lastSelectedTab && this._shouldShowTab(lastSelectedTab, window.uuid, containerId, workspaces)) {
|
||||
if (lastSelectedTab) {
|
||||
tabToSelect = lastSelectedTab;
|
||||
}
|
||||
// Find first suitable tab
|
||||
@@ -1852,17 +1961,11 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
// Always make sure we always unselect the tab from the old workspace
|
||||
if (currentSelectedTab && currentSelectedTab !== tabToSelect) {
|
||||
currentSelectedTab._selected = false;
|
||||
if (
|
||||
!this._shouldShowTab(currentSelectedTab, window.uuid, containerId, workspaces) &&
|
||||
currentSelectedTab.hasAttribute('zen-essential')
|
||||
) {
|
||||
gBrowser.hideTab(currentSelectedTab, undefined, true);
|
||||
}
|
||||
}
|
||||
return tabToSelect;
|
||||
}
|
||||
|
||||
async _updateWorkspaceState(workspace, onInit, tabToSelect) {
|
||||
async _updateWorkspaceState(workspace, onInit, tabToSelect, { previousWorkspaceIndex, previousWorkspace } = {}) {
|
||||
// Update document state
|
||||
document.documentElement.setAttribute('zen-workspace-id', workspace.uuid);
|
||||
|
||||
@@ -1871,13 +1974,16 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
|
||||
// Update workspace UI
|
||||
await this._updateWorkspacesChangeContextMenu();
|
||||
gZenUIManager.updateTabsToolbar();
|
||||
// gZenUIManager.updateTabsToolbar();
|
||||
await this._propagateWorkspaceData({ clearCache: false });
|
||||
|
||||
gZenThemePicker.onWorkspaceChange(workspace);
|
||||
|
||||
document.getElementById('zen-tabs-wrapper').style.scrollbarWidth = 'none';
|
||||
await this._animateTabs(workspace, !onInit && !this._animatingChange, tabToSelect);
|
||||
await this._animateTabs(workspace, !onInit && !this._animatingChange, tabToSelect, {
|
||||
previousWorkspaceIndex,
|
||||
previousWorkspace,
|
||||
});
|
||||
await this._organizeWorkspaceStripLocations(workspace, true);
|
||||
document.getElementById('zen-tabs-wrapper').style.scrollbarWidth = '';
|
||||
|
||||
@@ -2007,17 +2113,39 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
}
|
||||
}
|
||||
|
||||
onPinnedTabsResize(entries) {
|
||||
async onPinnedTabsResize(entries) {
|
||||
if (!this._hasInitializedTabsStrip) {
|
||||
return;
|
||||
}
|
||||
for (const entry of entries) {
|
||||
const workspaceId = entry.target.getAttribute('zen-workspace-id');
|
||||
const arrowScrollbox = document.querySelector(
|
||||
`#tabbrowser-arrowscrollbox .zen-workspace-tabs-section[zen-workspace-id="${workspaceId}"]`
|
||||
);
|
||||
this._updateMarginTopPinnedTabs(arrowScrollbox, entry.target);
|
||||
this.updateShouldHideSeparator(arrowScrollbox, entry.target);
|
||||
const originalWorkspaceId = entry.target.getAttribute('zen-workspace-id');
|
||||
const workspacesIds = [];
|
||||
if (entry.target.closest('#zen-essentials-wrapper')) {
|
||||
// Get all workspaces that have the same userContextId
|
||||
const activeWorkspace = await this.getActiveWorkspace();
|
||||
const userContextId = activeWorkspace.containerTabId;
|
||||
const workspaces = this._workspaceCache.workspaces.filter(
|
||||
(w) => w.containerTabId === userContextId && w.uuid !== originalWorkspaceId
|
||||
);
|
||||
workspacesIds.push(...workspaces.map((w) => w.uuid));
|
||||
} else {
|
||||
workspacesIds.push(originalWorkspaceId);
|
||||
}
|
||||
for (const workspaceId of workspacesIds) {
|
||||
const arrowScrollbox = document.querySelector(
|
||||
`#tabbrowser-arrowscrollbox .zen-workspace-tabs-section[zen-workspace-id="${workspaceId}"]`
|
||||
);
|
||||
const pinnedContainer = document.querySelector(
|
||||
`#vertical-pinned-tabs-container .zen-workspace-tabs-section[zen-workspace-id="${workspaceId}"]`
|
||||
);
|
||||
const workspaceIndicator = document.querySelector(
|
||||
`#zen-current-workspace-indicator-container .zen-workspace-tabs-section[zen-workspace-id="${workspaceId}"]`
|
||||
);
|
||||
const workspaceObject = this._workspaceCache.workspaces.find((w) => w.uuid === workspaceId);
|
||||
const essentialContainer = this.getEssentialsSection(workspaceObject.containerTabId);
|
||||
this._updateMarginTopPinnedTabs(arrowScrollbox, pinnedContainer, essentialContainer, workspaceIndicator);
|
||||
this.updateShouldHideSeparator(arrowScrollbox, pinnedContainer);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2096,7 +2224,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
continue;
|
||||
}
|
||||
if (tab.getAttribute('zen-essential') === 'true') {
|
||||
const container = document.getElementById('zen-essentials-container');
|
||||
const container = this.getCurrentEssentialsContainer();
|
||||
container.appendChild(tab);
|
||||
changed = true;
|
||||
continue;
|
||||
@@ -2353,15 +2481,18 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
|
||||
const tabs = [];
|
||||
// we need to go through each tab in each container
|
||||
const essentialsContainer = document.getElementById('zen-essentials-container');
|
||||
const essentialsContainer = document.querySelectorAll('#zen-essentials-wrapper .zen-workspace-tabs-section');
|
||||
let pinnedContainers = document.querySelectorAll('#vertical-pinned-tabs-container .zen-workspace-tabs-section');
|
||||
let normalContainers = document.querySelectorAll('#tabbrowser-arrowscrollbox .zen-workspace-tabs-section');
|
||||
if (!this._hasInitializedTabsStrip) {
|
||||
pinnedContainers = [document.getElementById('vertical-pinned-tabs-container')];
|
||||
normalContainers = [this.activeWorkspaceStrip];
|
||||
}
|
||||
const containers = [essentialsContainer, ...pinnedContainers, ...normalContainers];
|
||||
const containers = [...essentialsContainer, ...pinnedContainers, ...normalContainers];
|
||||
for (const container of containers) {
|
||||
if (container.hasAttribute('cloned')) {
|
||||
continue;
|
||||
}
|
||||
for (const tab of container.children) {
|
||||
if (tab.tagName === 'tab') {
|
||||
tabs.push(tab);
|
||||
|
||||
@@ -195,7 +195,7 @@ var ZenWorkspacesStorage = {
|
||||
name: row.getResultByName('name'),
|
||||
icon: row.getResultByName('icon'),
|
||||
default: !!row.getResultByName('is_default'),
|
||||
containerTabId: row.getResultByName('container_id'),
|
||||
containerTabId: row.getResultByName('container_id') ?? 0,
|
||||
position: row.getResultByName('position'),
|
||||
theme: row.getResultByName('theme_type')
|
||||
? {
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
"appId": "zen",
|
||||
"binaryName": "zen",
|
||||
"version": {
|
||||
"product": "firefox",
|
||||
"product": "firefox-beta",
|
||||
"version": "137.0.2",
|
||||
"candidate": "137.0.2"
|
||||
"candidate": "138.0"
|
||||
},
|
||||
"buildOptions": {
|
||||
"generateBranding": true
|
||||
@@ -53,4 +53,4 @@
|
||||
"licenseType": "MPL-2.0"
|
||||
},
|
||||
"updateHostname": "updates.zen-browser.app"
|
||||
}
|
||||
}
|
||||
113
tsconfig.json
Normal file
113
tsconfig.json
Normal file
@@ -0,0 +1,113 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
/* Visit https://aka.ms/tsconfig to read more about this file */
|
||||
|
||||
/* Projects */
|
||||
// "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
|
||||
// "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
|
||||
// "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
|
||||
// "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
|
||||
// "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
|
||||
// "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
|
||||
|
||||
/* Language and Environment */
|
||||
"target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
|
||||
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
|
||||
// "jsx": "preserve", /* Specify what JSX code is generated. */
|
||||
// "libReplacement": true, /* Enable lib replacement. */
|
||||
// "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
|
||||
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
|
||||
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
|
||||
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
|
||||
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
|
||||
// "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
|
||||
// "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
|
||||
// "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
|
||||
// "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
|
||||
|
||||
/* Modules */
|
||||
"module": "commonjs" /* Specify what module code is generated. */,
|
||||
// "rootDir": "./", /* Specify the root folder within your source files. */
|
||||
// "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
|
||||
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
|
||||
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
|
||||
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
|
||||
// "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
|
||||
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
|
||||
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
|
||||
// "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
|
||||
// "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */
|
||||
// "rewriteRelativeImportExtensions": true, /* Rewrite '.ts', '.tsx', '.mts', and '.cts' file extensions in relative import paths to their JavaScript equivalent in output files. */
|
||||
// "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */
|
||||
// "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */
|
||||
// "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
|
||||
// "noUncheckedSideEffectImports": true, /* Check side effect imports. */
|
||||
// "resolveJsonModule": true, /* Enable importing .json files. */
|
||||
// "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
|
||||
// "noResolve": true, /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */
|
||||
|
||||
/* JavaScript Support */
|
||||
// "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
|
||||
// "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
|
||||
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
|
||||
|
||||
/* Emit */
|
||||
// "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
|
||||
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
|
||||
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
|
||||
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
|
||||
// "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
|
||||
// "noEmit": true, /* Disable emitting files from a compilation. */
|
||||
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
|
||||
// "outDir": "./", /* Specify an output folder for all emitted files. */
|
||||
// "removeComments": true, /* Disable emitting comments. */
|
||||
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
|
||||
// "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
|
||||
// "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
|
||||
// "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
|
||||
// "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
|
||||
// "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
|
||||
// "newLine": "crlf", /* Set the newline character for emitting files. */
|
||||
// "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
|
||||
// "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
|
||||
// "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
|
||||
// "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
|
||||
// "declarationDir": "./", /* Specify the output directory for generated declaration files. */
|
||||
|
||||
/* Interop Constraints */
|
||||
// "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
|
||||
// "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */
|
||||
// "isolatedDeclarations": true, /* Require sufficient annotation on exports so other tools can trivially generate declaration files. */
|
||||
// "erasableSyntaxOnly": true, /* Do not allow runtime constructs that are not part of ECMAScript. */
|
||||
// "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
|
||||
"esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */,
|
||||
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
|
||||
"forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */,
|
||||
|
||||
/* Type Checking */
|
||||
"strict": true /* Enable all strict type-checking options. */,
|
||||
// "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
|
||||
// "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
|
||||
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
|
||||
// "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
|
||||
// "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
|
||||
// "strictBuiltinIteratorReturn": true, /* Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'. */
|
||||
// "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
|
||||
// "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
|
||||
// "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
|
||||
// "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
|
||||
// "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
|
||||
// "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
|
||||
// "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
|
||||
// "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
|
||||
// "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
|
||||
// "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
|
||||
// "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
|
||||
// "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
|
||||
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
|
||||
|
||||
/* Completeness */
|
||||
// "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
|
||||
"skipLibCheck": true /* Skip type checking all .d.ts files. */
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user