Skip to content

Instantly share code, notes, and snippets.

@mixedpuppy
Created November 6, 2019 23:27
Show Gist options
  • Save mixedpuppy/8698a7d40bda0dd461793a3533011a43 to your computer and use it in GitHub Desktop.
Save mixedpuppy/8698a7d40bda0dd461793a3533011a43 to your computer and use it in GitHub Desktop.
diff --git a/toolkit/components/extensions/test/xpcshell/test_ext_webRequest_filterResponseData.js b/toolkit/components/extensions/test/xpcshell/test_ext_webRequest_filterResponseData.js
--- a/toolkit/components/extensions/test/xpcshell/test_ext_webRequest_filterResponseData.js
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_webRequest_filterResponseData.js
@@ -25,16 +25,61 @@ server.registerPathHandler("/dummy.xhtml
response.write(String.raw`<?xml version="1.0"?>
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head/>
<body/>
</html>
`);
});
+add_task(async function test_replace_data() {
+ let extension = ExtensionTestUtils.loadExtension({
+ background() {
+ browser.webRequest.onBeforeRequest.addListener(
+ request => {
+ let filter = browser.webRequest.filterResponseData(request.requestId);
+ let decoder = new TextDecoder("utf-8");
+ let encoder = new TextEncoder();
+
+ filter.ondata = event => {
+ let str = decoder.decode(event.data, { stream: true });
+ str = str.replace(/ok/g, "WebExtension Example");
+ filter.write(encoder.encode(str));
+ filter.disconnect();
+ };
+ },
+ {
+ urls: ["http://example.com/dummy"],
+ types: ["main_frame"],
+ },
+ ["blocking"]
+ );
+ },
+
+ manifest: {
+ permissions: ["webRequest", "webRequestBlocking", "http://example.com/"],
+ },
+ });
+
+ await extension.startup();
+
+ let contentPage = await ExtensionTestUtils.loadContentPage(
+ "http://example.com/dummy"
+ );
+
+ let content = await contentPage.spawn(null, () => {
+ return this.content.document.body.textContent;
+ });
+
+ equal(content, "WebExtension Example", `expected url`);
+
+ await contentPage.close();
+ await extension.unload();
+});
+
// Tests that the stream filter request is added to the document's load
// group, and blocks an XML document's load event until after the filter
// stops sending data.
add_task(async function test_xml_document_loadgroup_blocking() {
let extension = ExtensionTestUtils.loadExtension({
background() {
browser.webRequest.onBeforeRequest.addListener(
request => {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment