forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			100 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* Any copyright is dedicated to the Public Domain.
 | |
|    http://creativecommons.org/publicdomain/zero/1.0/ */
 | |
| 
 | |
| // Test that the fix for bug 687710 isn't too aggressive -- shentries which are
 | |
| // cousins should be able to share bfcache entries.
 | |
| 
 | |
| var stateBackup = ss.getBrowserState();
 | |
| 
 | |
| var state = {
 | |
|   entries: [
 | |
|     {
 | |
|       docIdentifier: 1,
 | |
|       url: "http://example.com?1",
 | |
|       triggeringPrincipal_base64,
 | |
|       children: [
 | |
|         {
 | |
|           docIdentifier: 10,
 | |
|           url: "http://example.com?10",
 | |
|           triggeringPrincipal_base64,
 | |
|         },
 | |
|       ],
 | |
|     },
 | |
|     {
 | |
|       docIdentifier: 1,
 | |
|       url: "http://example.com?1#a",
 | |
|       triggeringPrincipal_base64,
 | |
|       children: [
 | |
|         {
 | |
|           docIdentifier: 10,
 | |
|           url: "http://example.com?10#aa",
 | |
|           triggeringPrincipal_base64,
 | |
|         },
 | |
|       ],
 | |
|     },
 | |
|   ],
 | |
| };
 | |
| 
 | |
| add_task(async function test() {
 | |
|   let tab = BrowserTestUtils.addTab(gBrowser, "about:blank");
 | |
|   await promiseTabState(tab, state);
 | |
|   if (!SpecialPowers.Services.appinfo.sessionHistoryInParent) {
 | |
|     await SpecialPowers.spawn(tab.linkedBrowser, [], function () {
 | |
|       function compareEntries(i, j, history) {
 | |
|         let e1 = history.getEntryAtIndex(i);
 | |
|         let e2 = history.getEntryAtIndex(j);
 | |
| 
 | |
|         ok(e1.sharesDocumentWith(e2), `${i} should share doc with ${j}`);
 | |
|         is(e1.childCount, e2.childCount, `Child count mismatch (${i}, ${j})`);
 | |
| 
 | |
|         for (let c = 0; c < e1.childCount; c++) {
 | |
|           let c1 = e1.GetChildAt(c);
 | |
|           let c2 = e2.GetChildAt(c);
 | |
| 
 | |
|           ok(
 | |
|             c1.sharesDocumentWith(c2),
 | |
|             `Cousins should share documents. (${i}, ${j}, ${c})`
 | |
|           );
 | |
|         }
 | |
|       }
 | |
| 
 | |
|       let history = docShell.browsingContext.childSessionHistory.legacySHistory;
 | |
| 
 | |
|       is(history.count, 2, "history.count");
 | |
|       for (let i = 0; i < history.count; i++) {
 | |
|         for (let j = 0; j < history.count; j++) {
 | |
|           compareEntries(i, j, history);
 | |
|         }
 | |
|       }
 | |
|     });
 | |
|   } else {
 | |
|     function compareEntries(i, j, history) {
 | |
|       let e1 = history.getEntryAtIndex(i);
 | |
|       let e2 = history.getEntryAtIndex(j);
 | |
| 
 | |
|       ok(e1.sharesDocumentWith(e2), `${i} should share doc with ${j}`);
 | |
|       is(e1.childCount, e2.childCount, `Child count mismatch (${i}, ${j})`);
 | |
| 
 | |
|       for (let c = 0; c < e1.childCount; c++) {
 | |
|         let c1 = e1.GetChildAt(c);
 | |
|         let c2 = e2.GetChildAt(c);
 | |
| 
 | |
|         ok(
 | |
|           c1.sharesDocumentWith(c2),
 | |
|           `Cousins should share documents. (${i}, ${j}, ${c})`
 | |
|         );
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     let history = tab.linkedBrowser.browsingContext.sessionHistory;
 | |
| 
 | |
|     is(history.count, 2, "history.count");
 | |
|     for (let i = 0; i < history.count; i++) {
 | |
|       for (let j = 0; j < history.count; j++) {
 | |
|         compareEntries(i, j, history);
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   ss.setBrowserState(stateBackup);
 | |
| });
 | 
