mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-04 18:29:29 +02:00
In JsonML, "object" tag can be used to be replaced by an actual object, that
may or may not be formatted.
e.g. `["object", { object: 42 }]`, should be replaced with `42` in the returned
JsonMl array.
In order to do that, we need to parse the result of `header` and `body` recursively
to produce the final JsonMl that will be consumed by the client.
On the client, this means that we need to create object fronts for any object
actor that might have been created, so we can use them later (e.g. when the user
expand them, call the `customFormatterBody` method.
We also need to handle plain object grips (i.e. not formatted), and display them
using our regular `ObjectInspector`.
Some tests are added to ensure this works as expected.
Differential Revision: https://phabricator.services.mozilla.com/D164220
46 lines
1.7 KiB
JavaScript
46 lines
1.7 KiB
JavaScript
/* 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/. */
|
|
/* global requirejs */
|
|
|
|
"use strict";
|
|
|
|
// Send readyState change notification event to the window. It's useful for tests.
|
|
JSONView.readyState = "loading";
|
|
window.dispatchEvent(new CustomEvent("AppReadyStateChange"));
|
|
|
|
// Services is required in the Reps bundle but can't be loaded in the json-viewer.
|
|
// Since it's only used for the ObjectInspector, that the json-viewer does not use, we
|
|
// can mock it. The mock should be removed when we un-bundle reps, (i.e. land individual
|
|
// files instead of a big bundle).
|
|
define("ServicesMock", () => ({ appinfo: {} }));
|
|
// custom-formatter is required in the Reps bundle but 1. we don't need in the JSON Viewer,
|
|
// and 2. it causes issues as this requires the ObjectInspector, which can't be loaded
|
|
// via requirejs.
|
|
define("CustomFormatterMock", () => ({}));
|
|
|
|
/**
|
|
* RequireJS configuration for JSON Viewer.
|
|
*
|
|
* React module ID is using exactly the same (relative) path as the rest
|
|
* of the code base, so it's consistent and modules can be easily reused.
|
|
*/
|
|
require.config({
|
|
baseUrl: "resource://devtools-client-jsonview/",
|
|
paths: {
|
|
"devtools/client/jsonview": "resource://devtools-client-jsonview",
|
|
"devtools/client/shared": "resource://devtools-client-shared",
|
|
"devtools/shared": "resource://devtools/shared",
|
|
Services: "resource://devtools-client-shared/vendor/react-prop-types",
|
|
},
|
|
map: {
|
|
"*": {
|
|
Services: "ServicesMock",
|
|
"devtools/client/shared/components/reps/reps/custom-formatter":
|
|
"CustomFormatterMock",
|
|
},
|
|
},
|
|
});
|
|
|
|
// Load the main panel module
|
|
requirejs(["json-viewer"]);
|