fune/devtools/shared/performance-new/recording-utils.js
Nazım Can Altınova 4356d88793 Bug 1698129 - Change the tabID sources from browsingContextId to browserId in the profiler r=nika,julienw
We have two parts in the codebase that we get the browsingContextId.
1) Inside the DOM code with profiler_register_page function whenever a
navigation happens.
2) Inside the profiler recording front-end when we start the profiler. That was
kept as activeBrowsingContextID, and now it's kept as activeTabID.

We are now changing these parts to keep the browserId instead so it directly
corresponds to the tabs. BrowsingContexts are replaced when there is a
cross-group navigation, but BrowserId is being preserved.

Differential Revision: https://phabricator.services.mozilla.com/D109281
2021-03-25 12:52:11 +00:00

63 lines
1.6 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/. */
// @ts-check
"use strict";
/**
* This file is for the new performance panel that targets profiler.firefox.com,
* not the default-enabled DevTools performance panel.
*/
/**
* @typedef {import("../../client/performance-new/@types/perf").GetActiveBrowserID} GetActiveBrowserID
*/
/**
* TS-TODO
*
* This function replaces lazyRequireGetter, and TypeScript can understand it. It's
* currently duplicated until we have consensus that TypeScript is a good idea.
*
* @template T
* @type {(callback: () => T) => () => T}
*/
function requireLazy(callback) {
/** @type {T | undefined} */
let cache;
return () => {
if (cache === undefined) {
cache = callback();
}
return cache;
};
}
const lazyServices = requireLazy(() =>
require("resource://gre/modules/Services.jsm")
);
/**
* Gets the ID of active tab from the browser.
*
* @type {GetActiveBrowserID}
*/
function getActiveBrowserID() {
const { Services } = lazyServices();
const win = Services.wm.getMostRecentWindow("navigator:browser");
if (win?.gBrowser?.selectedBrowser?.browsingContext?.browserId) {
return win.gBrowser.selectedBrowser.browsingContext.browserId;
}
console.error(
"Failed to get the active browserId while starting the profiler."
);
// `0` mean that we failed to ge the active browserId, and it's
// treated as null value in the platform.
return 0;
}
module.exports = {
getActiveBrowserID,
};