[gnome-shell] JS: migrate from the global `window` to `globalThis`
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] JS: migrate from the global `window` to `globalThis`
- Date: Mon, 27 Apr 2020 13:11:49 +0000 (UTC)
commit 3dc4f01113707f5f1443f62195da8426ce300bd0
Author: Andy Holmes <andrew g r holmes gmail com>
Date: Thu Apr 23 16:06:36 2020 -0700
JS: migrate from the global `window` to `globalThis`
As of mozjs68 (gjs-1.64) `globalThis` is recommended over `window` and
it makes more sense in this context anyways. Migrate the few instances
of `window` we use and adjust the eslint configuration.
`window` will continue to resolve to `globalThis`, so this won't affect
extensions or other downstream users.
https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2322
closes #2322
js/ui/environment.js | 15 +++++++--------
js/ui/lookingGlass.js | 4 ++--
js/ui/main.js | 4 ++--
lint/eslintrc-gjs.yml | 2 +-
subprojects/extensions-app/js/main.js | 2 +-
5 files changed, 13 insertions(+), 14 deletions(-)
---
diff --git a/js/ui/environment.js b/js/ui/environment.js
index 7a96d94800..4a12314024 100644
--- a/js/ui/environment.js
+++ b/js/ui/environment.js
@@ -245,16 +245,15 @@ function _loggingFunc(...args) {
}
function init() {
- // Add some bindings to the global JS namespace; (gjs keeps the web
- // browser convention of having that namespace be called 'window'.)
- window.global = Shell.Global.get();
+ // Add some bindings to the global JS namespace
+ globalThis.global = Shell.Global.get();
- window.log = _loggingFunc;
+ globalThis.log = _loggingFunc;
- window._ = Gettext.gettext;
- window.C_ = Gettext.pgettext;
- window.ngettext = Gettext.ngettext;
- window.N_ = s => s;
+ globalThis._ = Gettext.gettext;
+ globalThis.C_ = Gettext.pgettext;
+ globalThis.ngettext = Gettext.ngettext;
+ globalThis.N_ = s => s;
GObject.gtypeNameBasedOnJSPath = true;
diff --git a/js/ui/lookingGlass.js b/js/ui/lookingGlass.js
index 838a0c833a..6ef8ddae38 100644
--- a/js/ui/lookingGlass.js
+++ b/js/ui/lookingGlass.js
@@ -37,8 +37,8 @@ const LG_ANIMATION_TIME = 500;
function _getAutoCompleteGlobalKeywords() {
const keywords = ['true', 'false', 'null', 'new'];
- // Don't add the private properties of window (i.e., ones starting with '_')
- const windowProperties = Object.getOwnPropertyNames(window).filter(
+ // Don't add the private properties of globalThis (i.e., ones starting with '_')
+ const windowProperties = Object.getOwnPropertyNames(globalThis).filter(
a => a.charAt(0) != '_'
);
const headerProperties = JsParse.getDeclaredConstants(commandHeader);
diff --git a/js/ui/main.js b/js/ui/main.js
index 3fcc8b2852..f1f069af42 100644
--- a/js/ui/main.js
+++ b/js/ui/main.js
@@ -125,8 +125,8 @@ function _sessionUpdated() {
function start() {
// These are here so we don't break compatibility.
- global.logError = window.log;
- global.log = window.log;
+ global.logError = globalThis.log;
+ global.log = globalThis.log;
// Chain up async errors reported from C
global.connect('notify-error', (global, msg, detail) => {
diff --git a/lint/eslintrc-gjs.yml b/lint/eslintrc-gjs.yml
index fec07a4095..3fa6b86b58 100644
--- a/lint/eslintrc-gjs.yml
+++ b/lint/eslintrc-gjs.yml
@@ -218,12 +218,12 @@ globals:
ARGV: readonly
Debugger: readonly
GIRepositoryGType: readonly
+ globalThis: readonly
imports: readonly
Intl: readonly
log: readonly
logError: readonly
print: readonly
printerr: readonly
- window: readonly
parserOptions:
ecmaVersion: 2019
diff --git a/subprojects/extensions-app/js/main.js b/subprojects/extensions-app/js/main.js
index 00b6c047db..25804e5ba0 100644
--- a/subprojects/extensions-app/js/main.js
+++ b/subprojects/extensions-app/js/main.js
@@ -476,7 +476,7 @@ var ExtensionRow = GObject.registerClass({
function initEnvironment() {
// Monkey-patch in a "global" object that fakes some Shell utilities
// that ExtensionUtils depends on.
- window.global = {
+ globalThis.global = {
log(...args) {
print(args.join(', '));
},
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]