summaryrefslogtreecommitdiffstats
path: root/devtools/client/debugger/src/actions/pause/fetchScopes.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/debugger/src/actions/pause/fetchScopes.js')
-rw-r--r--devtools/client/debugger/src/actions/pause/fetchScopes.js30
1 files changed, 30 insertions, 0 deletions
diff --git a/devtools/client/debugger/src/actions/pause/fetchScopes.js b/devtools/client/debugger/src/actions/pause/fetchScopes.js
new file mode 100644
index 0000000000..691b3ce006
--- /dev/null
+++ b/devtools/client/debugger/src/actions/pause/fetchScopes.js
@@ -0,0 +1,30 @@
+/* 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/>. */
+
+import { getSelectedFrame, getGeneratedFrameScope } from "../../selectors";
+import { mapScopes } from "./mapScopes";
+import { generateInlinePreview } from "./inlinePreview";
+import { PROMISE } from "../utils/middleware/promise";
+
+export function fetchScopes(cx) {
+ return async function ({ dispatch, getState, client }) {
+ const frame = getSelectedFrame(getState(), cx.thread);
+ if (!frame || getGeneratedFrameScope(getState(), frame.id)) {
+ return;
+ }
+
+ const scopes = dispatch({
+ type: "ADD_SCOPES",
+ cx,
+ thread: cx.thread,
+ frame,
+ [PROMISE]: client.getFrameScopes(frame),
+ });
+
+ scopes.then(() => {
+ dispatch(generateInlinePreview(cx, frame));
+ });
+ await dispatch(mapScopes(cx, scopes, frame));
+ };
+}