summaryrefslogtreecommitdiffstats
path: root/devtools/client/debugger/src/actions/exceptions.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/debugger/src/actions/exceptions.js')
-rw-r--r--devtools/client/debugger/src/actions/exceptions.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/devtools/client/debugger/src/actions/exceptions.js b/devtools/client/debugger/src/actions/exceptions.js
new file mode 100644
index 0000000000..f054715041
--- /dev/null
+++ b/devtools/client/debugger/src/actions/exceptions.js
@@ -0,0 +1,46 @@
+/* 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/>. */
+
+// @flow
+
+import { hasException } from "../selectors";
+
+import type { ThunkArgs } from "./types";
+import type { Exception } from "../types";
+
+export function addExceptionFromResources(resources: Array<Object>) {
+ return async function({ dispatch }: ThunkArgs) {
+ for (const resource of resources) {
+ const { pageError } = resource;
+ if (!pageError.error) {
+ continue;
+ }
+ const { columnNumber, lineNumber, sourceId, errorMessage } = pageError;
+ const stacktrace = pageError.stacktrace || [];
+
+ const exception = {
+ columnNumber,
+ lineNumber,
+ sourceActorId: sourceId,
+ errorMessage,
+ stacktrace,
+ };
+
+ dispatch(addException(exception));
+ }
+ };
+}
+
+export function addException(exception: Exception) {
+ return async function({ dispatch, getState }: ThunkArgs) {
+ const { columnNumber, lineNumber } = exception;
+
+ if (!hasException(getState(), lineNumber, columnNumber)) {
+ dispatch({
+ type: "ADD_EXCEPTION",
+ exception,
+ });
+ }
+ };
+}