 +      suspended: t.Optional(t.Boolean),
 +      url: t.String,
 +      method: t.String,
-+      isNavigationRequest: t.Boolean,
++      navigationId: t.Optional(t.String),
 +      cause: t.String,
 +    },
 +    'responseReceived': {

+      postData: readRequestPostData(httpChannel),
+      headers: requestHeaders(httpChannel),
+      method: httpChannel.requestMethod,
+      isNavigationRequest: httpChannel.isMainDocumentChannel,
+      cause: causeTypeToString(causeType),
+    });
+  }

+
diff --git a/testing/juggler/NetworkObserver.js b/testing/juggler/NetworkObserver.js
new file mode 100644
index 000000000000..2afbc74a4170
--- /dev/null
+++ b/testing/juggler/NetworkObserver.js
@@ -0,0 +1,450 @@
