diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5f97c3312..97aff4027 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -31,7 +31,7 @@ variables: LINT_LOG: "eslint-report.xml" LINT_MR_LOG: "eslint-mr-report.xml" -image: registry.gitlab.gnome.org/gnome/mutter/fedora/34:x86_64-2021-08-01.0 +image: registry.gitlab.gnome.org/gnome/mutter/fedora/34:x86_64-2021-08-25.0 workflow: rules: diff --git a/js/misc/fileUtils.js b/js/misc/fileUtils.js index 2f1798b84..88f043a79 100644 --- a/js/misc/fileUtils.js +++ b/js/misc/fileUtils.js @@ -86,7 +86,7 @@ function loadInterfaceXML(iface) { try { let [ok_, bytes] = f.load_contents(null); - return imports.byteArray.toString(bytes); + return new TextDecoder().decode(bytes); } catch (e) { log(`Failed to load D-Bus interface ${iface}`); } diff --git a/js/ui/components/networkAgent.js b/js/ui/components/networkAgent.js index 9a1885a03..92e499302 100644 --- a/js/ui/components/networkAgent.js +++ b/js/ui/components/networkAgent.js @@ -2,7 +2,6 @@ /* exported Component */ const { Clutter, Gio, GLib, GObject, NM, Pango, Shell, St } = imports.gi; -const ByteArray = imports.byteArray; const Signals = imports.signals; const Dialog = imports.ui.dialog; @@ -498,7 +497,8 @@ var VPNRequestHandler = class { return; } - this._vpnChildProcessLineOldStyle(ByteArray.toString(line)); + const decoder = new TextDecoder(); + this._vpnChildProcessLineOldStyle(decoder.decode(line)); // try to read more! this._readStdoutOldStyle(); @@ -527,7 +527,7 @@ var VPNRequestHandler = class { let contentOverride; try { - data = ByteArray.toGBytes(this._dataStdout.peek_buffer()); + data = new GLib.Bytes(this._dataStdout.peek_buffer()); keyfile.load_from_bytes(data, GLib.KeyFileFlags.NONE); if (keyfile.get_integer(VPN_UI_GROUP, 'Version') != 2) diff --git a/js/ui/environment.js b/js/ui/environment.js index 89ff701c7..ccd7dcdaa 100644 --- a/js/ui/environment.js +++ b/js/ui/environment.js @@ -86,8 +86,6 @@ function _patchLayoutClass(layoutClass, styleProps) { * @returns {void} */ function _injectSoup3Compat(Soup) { - const ByteArray = imports.byteArray; - Soup.StatusCode = Soup.KnownStatusCode; Soup.Message.new_from_encoded_form = @@ -101,7 +99,7 @@ function _injectSoup3Compat(Soup) { this.set_request( contentType, Soup.MemoryUse.COPY, - ByteArray.toString(bytes.get_data())); + new TextDecoder().decode(bytes.get_data())); }; Soup.Session.prototype.send_and_read_async = diff --git a/js/ui/extensionDownloader.js b/js/ui/extensionDownloader.js index d1c899fa0..8bf4646a6 100644 --- a/js/ui/extensionDownloader.js +++ b/js/ui/extensionDownloader.js @@ -3,8 +3,6 @@ const { Clutter, Gio, GLib, GObject, Soup } = imports.gi; -const ByteArray = imports.byteArray; - const Config = imports.misc.config; const Dialog = imports.ui.dialog; const ExtensionUtils = imports.misc.extensionUtils; @@ -49,7 +47,8 @@ async function installExtension(uuid, invocation) { GLib.PRIORITY_DEFAULT, null); checkResponse(message); - info = JSON.parse(ByteArray.toString(bytes.get_data())); + const decoder = new TextDecoder(); + info = JSON.parse(decoder.decode(bytes.get_data())); } catch (e) { Main.extensionManager.logExtensionError(uuid, e); invocation.return_dbus_error( @@ -181,8 +180,7 @@ async function checkForUpdates() { shell_version: Config.PACKAGE_VERSION, disable_version_validation: versionCheck.toString(), }; - const requestBody = new GLib.Bytes( - ByteArray.fromString(JSON.stringify(metadatas))); + const requestBody = new GLib.Bytes(JSON.stringify(metadatas)); const message = Soup.Message.new('POST', '%s?%s'.format(REPOSITORY_URL_UPDATE, Soup.form_encode_hash(params))); @@ -195,7 +193,7 @@ async function checkForUpdates() { GLib.PRIORITY_DEFAULT, null); checkResponse(message); - json = ByteArray.toString(bytes.get_data()); + json = new TextDecoder().decode(bytes.get_data()); } catch (e) { log('Update check failed: %s'.format(e.message)); return; diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js index 6b624fca0..cc61cab40 100644 --- a/js/ui/extensionSystem.js +++ b/js/ui/extensionSystem.js @@ -2,7 +2,6 @@ /* exported init connect disconnect */ const { GLib, Gio, GObject, Shell, St } = imports.gi; -const ByteArray = imports.byteArray; const Signals = imports.signals; const ExtensionDownloader = imports.ui.extensionDownloader; @@ -285,7 +284,7 @@ var ExtensionManager = class { let metadataContents, success_; try { [success_, metadataContents] = metadataFile.load_contents(null); - metadataContents = ByteArray.toString(metadataContents); + metadataContents = new TextDecoder().decode(metadataContents); } catch (e) { throw new Error('Failed to load metadata.json: %s'.format(e.toString())); } diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js index d0dde5b23..0597e82e4 100644 --- a/js/ui/keyboard.js +++ b/js/ui/keyboard.js @@ -2,7 +2,6 @@ /* exported KeyboardManager */ const { Clutter, Gio, GLib, GObject, Graphene, Meta, Shell, St } = imports.gi; -const ByteArray = imports.byteArray; const Signals = imports.signals; const EdgeDragAction = imports.ui.edgeDragAction; @@ -536,9 +535,9 @@ var KeyboardModel = class { _loadModel(groupName) { let file = Gio.File.new_for_uri('resource:///org/gnome/shell/osk-layouts/%s.json'.format(groupName)); let [success_, contents] = file.load_contents(null); - contents = ByteArray.toString(contents); - return JSON.parse(contents); + const decoder = new TextDecoder(); + return JSON.parse(decoder.decode(contents)); } getLevels() { @@ -1039,9 +1038,7 @@ var EmojiSelection = GObject.registerClass({ let file = Gio.File.new_for_uri('resource:///org/gnome/shell/osk-layouts/emoji.json'); let [success_, contents] = file.load_contents(null); - if (contents instanceof Uint8Array) - contents = imports.byteArray.toString(contents); - let emoji = JSON.parse(contents); + let emoji = JSON.parse(new TextDecoder().decode(contents)); let variants = []; let currentKey = 0; diff --git a/js/ui/padOsd.js b/js/ui/padOsd.js index ed207415a..9804f9e30 100644 --- a/js/ui/padOsd.js +++ b/js/ui/padOsd.js @@ -3,7 +3,6 @@ const { Atk, Clutter, GDesktopEnums, Gio, GLib, GObject, Gtk, Meta, Pango, Rsvg, St } = imports.gi; -const ByteArray = imports.byteArray; const Signals = imports.signals; const Main = imports.ui.main; @@ -298,10 +297,9 @@ var PadDiagram = GObject.registerClass({ _init(params) { let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/pad-osd.css'); let [success_, css] = file.load_contents(null); - css = ByteArray.toString(css); this._curEdited = null; this._prevEdited = null; - this._css = css; + this._css = new TextDecoder().decode(css); this._labels = []; this._activeButtons = []; super._init(params); diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js index 4d4fb2444..afcd67cfd 100644 --- a/js/ui/sessionMode.js +++ b/js/ui/sessionMode.js @@ -1,7 +1,6 @@ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- /* exported SessionMode, listModes */ -const ByteArray = imports.byteArray; const GLib = imports.gi.GLib; const Signals = imports.signals; @@ -110,8 +109,8 @@ function _loadMode(file, info) { let fileContent, success_, newMode; try { [success_, fileContent] = file.load_contents(null); - fileContent = ByteArray.toString(fileContent); - newMode = JSON.parse(fileContent); + const decoder = new TextDecoder(); + newMode = JSON.parse(decoder.decode(fileContent)); } catch (e) { return; } diff --git a/meson.build b/meson.build index 584750051..41f5b02a3 100644 --- a/meson.build +++ b/meson.build @@ -24,7 +24,7 @@ eds_req = '>= 3.33.1' gcr_req = '>= 3.7.5' gio_req = '>= 2.56.0' gi_req = '>= 1.49.1' -gjs_req = '>= 1.68.1' +gjs_req = '>= 1.69.2' gtk_req = '>= 3.15.0' mutter_req = '>= 41.beta' polkit_req = '>= 0.100' diff --git a/subprojects/extensions-app/js/main.js b/subprojects/extensions-app/js/main.js index d4b6ec79f..48d382f3f 100644 --- a/subprojects/extensions-app/js/main.js +++ b/subprojects/extensions-app/js/main.js @@ -24,7 +24,7 @@ function loadInterfaceXML(iface) { try { let [ok_, bytes] = f.load_contents(null); - return imports.byteArray.toString(bytes); + return new TextDecoder().decode(bytes); } catch (e) { log('Failed to load D-Bus interface %s'.format(iface)); }