tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit cb2357bac13971269b17b679f210fad9061d7629
parent 2aeb9fe5a0e8a22608123381aee8c7be798ad17c
Author: Alexandre Poirot <poirot.alex@gmail.com>
Date:   Mon,  6 Oct 2025 12:40:32 +0000

Bug 1917012 - [devtools] Use distinct method to retrieve source text content from a location or a source object. r=devtools-reviewers,bomsy

This prevents have to create a transient location object when we only have a source object.

Differential Revision: https://phabricator.services.mozilla.com/D264239

Diffstat:
Mdevtools/client/debugger/src/actions/ast/setInScopeLines.js | 7+++++--
Mdevtools/client/debugger/src/actions/sources/loadSourceText.js | 16++++++----------
Mdevtools/client/debugger/src/actions/sources/select.js | 7+++++--
Mdevtools/client/debugger/src/actions/ui.js | 4++--
Mdevtools/client/debugger/src/components/Editor/DebugLine.js | 4++--
Mdevtools/client/debugger/src/selectors/sources-content.js | 28++++++++++++++++++----------
Mdevtools/client/debugger/src/selectors/sources.js | 6+++---
7 files changed, 41 insertions(+), 31 deletions(-)

diff --git a/devtools/client/debugger/src/actions/ast/setInScopeLines.js b/devtools/client/debugger/src/actions/ast/setInScopeLines.js @@ -4,7 +4,7 @@ import { hasInScopeLines, - getSourceTextContent, + getSourceTextContentForLocation, getVisibleSelectedFrame, } from "../../selectors/index"; @@ -26,7 +26,10 @@ export function setInScopeLines(editor) { } const { location } = visibleFrame; - const sourceTextContent = getSourceTextContent(getState(), location); + const sourceTextContent = getSourceTextContentForLocation( + getState(), + location + ); // Ignore if in scope lines have already be computed, or if the selected location // doesn't have its content already fully fetched. diff --git a/devtools/client/debugger/src/actions/sources/loadSourceText.js b/devtools/client/debugger/src/actions/sources/loadSourceText.js @@ -4,7 +4,7 @@ import { PROMISE } from "../utils/middleware/promise"; import { - getSourceTextContent, + getSourceTextContentForSource, getSettledSourceTextContent, getSourcesEpoch, getBreakpointsForSource, @@ -173,12 +173,10 @@ export const loadGeneratedSourceText = memoizeableAction( return null; } - const sourceTextContent = getSourceTextContent( + const sourceTextContent = getSourceTextContentForSource( getState(), - createLocation({ - source: sourceActor.sourceObject, - sourceActor, - }) + sourceActor.sourceObject, + sourceActor ); if (!sourceTextContent || sourceTextContent.state === "pending") { @@ -212,11 +210,9 @@ export const loadOriginalSourceText = memoizeableAction( return null; } - const sourceTextContent = getSourceTextContent( + const sourceTextContent = getSourceTextContentForSource( getState(), - createLocation({ - source, - }) + source ); if (!sourceTextContent || sourceTextContent.state === "pending") { return sourceTextContent; diff --git a/devtools/client/debugger/src/actions/sources/select.js b/devtools/client/debugger/src/actions/sources/select.js @@ -28,7 +28,7 @@ import { getSelectedLocation, getShouldSelectOriginalLocation, canPrettyPrintSource, - getSourceTextContent, + getSourceTextContentForLocation, tabExists, hasSource, hasSourceActor, @@ -312,7 +312,10 @@ export function selectLocation( return; } - const sourceTextContent = getSourceTextContent(getState(), location); + const sourceTextContent = getSourceTextContentForLocation( + getState(), + location + ); if ( keepContext && diff --git a/devtools/client/debugger/src/actions/ui.js b/devtools/client/debugger/src/actions/ui.js @@ -7,7 +7,7 @@ import { getPaneCollapse, getQuickOpenEnabled, getSource, - getSourceTextContent, + getSourceTextContentForLocation, getIgnoreListSourceUrls, getSourceByURL, getBreakpointsForSource, @@ -215,7 +215,7 @@ export function setSearchOptions(searchKey, searchOptions) { export function copyToClipboard(location) { return ({ getState }) => { - const content = getSourceTextContent(getState(), location); + const content = getSourceTextContentForLocation(getState(), location); if (content && isFulfilled(content) && content.value.type === "text") { copyToTheClipboard(content.value.value); } diff --git a/devtools/client/debugger/src/components/Editor/DebugLine.js b/devtools/client/debugger/src/components/Editor/DebugLine.js @@ -10,7 +10,7 @@ import { connect } from "devtools/client/shared/vendor/react-redux"; import { getVisibleSelectedFrame, getPauseReason, - getSourceTextContent, + getSourceTextContentForLocation, getCurrentThread, getViewport, getSelectedTraceLocation, @@ -169,7 +169,7 @@ const mapStateToProps = state => { return {}; } - const sourceTextContent = getSourceTextContent(state, location); + const sourceTextContent = getSourceTextContentForLocation(state, location); if (!isDocumentReady(location, sourceTextContent)) { return {}; } diff --git a/devtools/client/debugger/src/selectors/sources-content.js b/devtools/client/debugger/src/selectors/sources-content.js @@ -9,19 +9,27 @@ import { getFirstSourceActorForGeneratedSource, } from "../selectors/sources"; -export function getSourceTextContent(state, location) { - if (location.source.isOriginal) { +export function getSourceTextContentForLocation(state, location) { + return getSourceTextContentForSource( + state, + location.source, + location.sourceActor + ); +} + +export function getSourceTextContentForSource( + state, + source, + sourceActor = null +) { + if (source.isOriginal) { return state.sourcesContent.mutableOriginalSourceTextContentMapBySourceId.get( - location.source.id + source.id ); } - let { sourceActor } = location; if (!sourceActor) { - sourceActor = getFirstSourceActorForGeneratedSource( - state, - location.source.id - ); + sourceActor = getFirstSourceActorForGeneratedSource(state, source.id); } return state.sourcesContent.mutableGeneratedSourceTextContentMapBySourceActorId.get( sourceActor.id @@ -29,7 +37,7 @@ export function getSourceTextContent(state, location) { } export function getSettledSourceTextContent(state, location) { - const content = getSourceTextContent(state, location); + const content = getSourceTextContentForLocation(state, location); return asSettled(content); } @@ -40,7 +48,7 @@ export function getSelectedSourceTextContent(state) { return null; } - return getSourceTextContent(state, location); + return getSourceTextContentForLocation(state, location); } export function getSourcesEpoch(state) { diff --git a/devtools/client/debugger/src/selectors/sources.js b/devtools/client/debugger/src/selectors/sources.js @@ -18,7 +18,7 @@ import { getBreakableLinesForSourceActors, isSourceActorWithSourceMap, } from "./source-actors"; -import { getSourceTextContent } from "./sources-content"; +import { getSourceTextContentForLocation } from "./sources-content"; export function hasSource(state, id) { return state.sources.mutableSources.has(id); @@ -252,7 +252,7 @@ export function canPrettyPrintSource(state, location) { return false; } - const content = getSourceTextContent(state, location); + const content = getSourceTextContentForLocation(state, location); const sourceContent = content && isFulfilled(content) ? content.value : null; if ( @@ -283,7 +283,7 @@ export function getPrettyPrintMessage(state, location) { return L10N.getStr("sourceFooter.prettyPrint.hasSourceMapMessage"); } - const content = getSourceTextContent(state, location); + const content = getSourceTextContentForLocation(state, location); const sourceContent = content && isFulfilled(content) ? content.value : null; if (!sourceContent) {