forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			47 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* Any copyright is dedicated to the Public Domain.
 | |
|    http://creativecommons.org/publicdomain/zero/1.0/ */
 | |
| "use strict";
 | |
| 
 | |
| const TEST_PATH = getRootDirectory(gTestPath).replace(
 | |
|   "chrome://mochitests/content",
 | |
|   "https://example.com"
 | |
| );
 | |
| const MULTIPART_URI = `${TEST_PATH}file_basic_multipart.sjs`;
 | |
| 
 | |
| add_task(async function viewsource_multipart_uri() {
 | |
|   await BrowserTestUtils.withNewTab("about:blank", async browser => {
 | |
|     BrowserTestUtils.startLoadingURIString(browser, MULTIPART_URI);
 | |
|     await BrowserTestUtils.browserLoaded(browser);
 | |
|     is(browser.currentURI.spec, MULTIPART_URI);
 | |
| 
 | |
|     // Continue probing the URL until we find the h1 we're expecting. This
 | |
|     // should handle cases where we somehow beat the second document having
 | |
|     // loaded.
 | |
|     await TestUtils.waitForCondition(async () => {
 | |
|       let value = await SpecialPowers.spawn(browser, [], async () => {
 | |
|         let headers = content.document.querySelectorAll("h1");
 | |
|         is(headers.length, 1, "only one h1 should be present");
 | |
|         return headers[0].textContent;
 | |
|       });
 | |
| 
 | |
|       ok(value == "First" || value == "Second", "some other value was found?");
 | |
|       return value == "Second";
 | |
|     });
 | |
| 
 | |
|     // Load a view-source version of the page, which should show the full
 | |
|     // content, not handling multipart.
 | |
|     BrowserTestUtils.startLoadingURIString(
 | |
|       browser,
 | |
|       `view-source:${MULTIPART_URI}`
 | |
|     );
 | |
|     await BrowserTestUtils.browserLoaded(browser);
 | |
| 
 | |
|     let viewSourceContent = await SpecialPowers.spawn(browser, [], async () => {
 | |
|       return content.document.body.textContent;
 | |
|     });
 | |
| 
 | |
|     ok(viewSourceContent.includes("<h1>First</h1>"), "first header");
 | |
|     ok(viewSourceContent.includes("<h1>Second</h1>"), "second header");
 | |
|     ok(viewSourceContent.includes("BOUNDARY"), "boundary");
 | |
|   });
 | |
| });
 | 
