forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			85 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* This Source Code Form is subject to the terms of the Mozilla Public
 | |
|  * License, v. 2.0. If a copy of the MPL was not distributed with this
 | |
|  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 | |
| /* eslint-disable mozilla/no-arbitrary-setTimeout */
 | |
| 
 | |
| // This test makes sure that the title of existing history entries does not
 | |
| // change inside a private window.
 | |
| 
 | |
| add_task(async function test() {
 | |
|   const TEST_URL =
 | |
|     "http://mochi.test:8888/browser/browser/components/" +
 | |
|     "privatebrowsing/test/browser/title.sjs";
 | |
|   let cm = Services.cookies;
 | |
| 
 | |
|   function cleanup() {
 | |
|     // delete all cookies
 | |
|     cm.removeAll();
 | |
|     // delete all history items
 | |
|     return PlacesUtils.history.clear();
 | |
|   }
 | |
| 
 | |
|   await cleanup();
 | |
|   registerCleanupFunction(cleanup);
 | |
| 
 | |
|   let win = await BrowserTestUtils.openNewBrowserWindow();
 | |
|   registerCleanupFunction(async () => {
 | |
|     await BrowserTestUtils.closeWindow(win);
 | |
|   });
 | |
| 
 | |
|   let promiseTitleChanged = PlacesTestUtils.waitForNotification(
 | |
|     "page-title-changed",
 | |
|     events => events[0].url == TEST_URL,
 | |
|     "places"
 | |
|   );
 | |
|   await BrowserTestUtils.openNewForegroundTab(win.gBrowser, TEST_URL);
 | |
|   await promiseTitleChanged;
 | |
|   await BrowserTestUtils.waitForCondition(async function() {
 | |
|     let entry = await PlacesUtils.history.fetch(TEST_URL);
 | |
|     return entry && entry.title == "No Cookie";
 | |
|   }, "The page should be loaded without any cookie for the first time");
 | |
| 
 | |
|   promiseTitleChanged = PlacesTestUtils.waitForNotification(
 | |
|     "page-title-changed",
 | |
|     events => events[0].url == TEST_URL,
 | |
|     "places"
 | |
|   );
 | |
|   await BrowserTestUtils.openNewForegroundTab(win.gBrowser, TEST_URL);
 | |
|   await promiseTitleChanged;
 | |
|   await BrowserTestUtils.waitForCondition(async function() {
 | |
|     let entry = await PlacesUtils.history.fetch(TEST_URL);
 | |
|     return entry && entry.title == "Cookie";
 | |
|   }, "The page should be loaded with a cookie for the second time");
 | |
| 
 | |
|   await cleanup();
 | |
| 
 | |
|   promiseTitleChanged = PlacesTestUtils.waitForNotification(
 | |
|     "page-title-changed",
 | |
|     events => events[0].url == TEST_URL,
 | |
|     "places"
 | |
|   );
 | |
|   await BrowserTestUtils.openNewForegroundTab(win.gBrowser, TEST_URL);
 | |
|   await promiseTitleChanged;
 | |
|   await BrowserTestUtils.waitForCondition(async function() {
 | |
|     let entry = await PlacesUtils.history.fetch(TEST_URL);
 | |
|     return entry && entry.title == "No Cookie";
 | |
|   }, "The page should be loaded without any cookie again");
 | |
| 
 | |
|   // Reopen the page in a private browser window, it should not notify a title
 | |
|   // change.
 | |
|   let win2 = await BrowserTestUtils.openNewBrowserWindow({ private: true });
 | |
|   registerCleanupFunction(async () => {
 | |
|     let promisePBExit = TestUtils.topicObserved("last-pb-context-exited");
 | |
|     await BrowserTestUtils.closeWindow(win2);
 | |
|     await promisePBExit;
 | |
|   });
 | |
| 
 | |
|   await BrowserTestUtils.openNewForegroundTab(win2.gBrowser, TEST_URL);
 | |
|   // Wait long enough to be sure history didn't set a title.
 | |
|   await new Promise(resolve => setTimeout(resolve, 1000));
 | |
|   is(
 | |
|     (await PlacesUtils.history.fetch(TEST_URL)).title,
 | |
|     "No Cookie",
 | |
|     "The title remains the same after visiting in private window"
 | |
|   );
 | |
| });
 | 
