diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:47:29 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 01:47:29 +0000 |
commit | 0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d (patch) | |
tree | a31f07c9bcca9d56ce61e9a1ffd30ef350d513aa /devtools/client/fronts/string.js | |
parent | Initial commit. (diff) | |
download | firefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.tar.xz firefox-esr-0ebf5bdf043a27fd3dfb7f92e0cb63d88954c44d.zip |
Adding upstream version 115.8.0esr.upstream/115.8.0esr
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'devtools/client/fronts/string.js')
-rw-r--r-- | devtools/client/fronts/string.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/devtools/client/fronts/string.js b/devtools/client/fronts/string.js new file mode 100644 index 0000000000..0a05d20c3e --- /dev/null +++ b/devtools/client/fronts/string.js @@ -0,0 +1,62 @@ +/* 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/. */ +"use strict"; + +const { + DevToolsServer, +} = require("resource://devtools/server/devtools-server.js"); +const { + longStringSpec, + SimpleStringFront, +} = require("resource://devtools/shared/specs/string.js"); +const { + FrontClassWithSpec, + registerFront, +} = require("resource://devtools/shared/protocol.js"); + +class LongStringFront extends FrontClassWithSpec(longStringSpec) { + destroy() { + this.initial = null; + this.length = null; + this.strPromise = null; + super.destroy(); + } + + form(data) { + this.actorID = data.actor; + this.initial = data.initial; + this.length = data.length; + + this._grip = data; + } + + // We expose the grip so consumers (e.g. ObjectInspector) that handle webconsole + // evaluations (which can return primitive, object fronts or longString front), + // can directly call this without further check. + getGrip() { + return this._grip; + } + + string() { + if (!this.strPromise) { + const promiseRest = thusFar => { + if (thusFar.length === this.length) { + return Promise.resolve(thusFar); + } + return this.substring( + thusFar.length, + thusFar.length + DevToolsServer.LONG_STRING_READ_LENGTH + ).then(next => promiseRest(thusFar + next)); + }; + + this.strPromise = promiseRest(this.initial); + } + return this.strPromise; + } +} + +exports.LongStringFront = LongStringFront; +registerFront(LongStringFront); +exports.SimpleStringFront = SimpleStringFront; +registerFront(SimpleStringFront); |