/* Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ /* global Services, requestLongerTimeout, TestUtils, BrowserTestUtils, ok, info, dump, is, Ci, Cu, Components, ctypes, gBrowser, add_task, addEventListener, removeEventListener, ContentTask */ "use strict"; // Running this test in ASAN is slow. requestLongerTimeout(2); /** * Removes a file from a directory. This is a no-op if the file does not * exist. * * @param directory * The nsIFile representing the directory to remove from. * @param filename * A string for the file to remove from the directory. */ function removeFile(directory, filename) { let file = directory.clone(); file.append(filename); if (file.exists()) { file.remove(false); } } /** * Returns the directory where crash dumps are stored. * * @return nsIFile */ function getMinidumpDirectory() { let dir = Services.dirsvc.get("ProfD", Ci.nsIFile); dir.append("minidumps"); return dir; } /** * Checks that the URL is correctly annotated on a content process crash. */ add_task(async function test_content_url_annotation() { let url = "https://example.com/browser/toolkit/content/tests/browser/file_redirect.html"; let redirect_url = "https://example.com/browser/toolkit/content/tests/browser/file_redirect_to.html"; await BrowserTestUtils.withNewTab( { gBrowser, }, async function (browser) { ok(browser.isRemoteBrowser, "Should be a remote browser"); // file_redirect.html should send us to file_redirect_to.html let promise = BrowserTestUtils.waitForContentEvent( browser, "RedirectDone", true, null, true ); BrowserTestUtils.startLoadingURIString(browser, url); await promise; // Crash the tab let annotations = await BrowserTestUtils.crashFrame(browser); ok("URL" in annotations, "annotated a URL"); is( annotations.URL, redirect_url, "Should have annotated the URL after redirect" ); } ); });