forked from mirrors/gecko-dev
		
	 31441f82ea
			
		
	
	
		31441f82ea
		
	
	
	
	
		
			
			Differential Revision: https://phabricator.services.mozilla.com/D35504 --HG-- extra : moz-landing-system : lando
		
			
				
	
	
		
			107 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| var { XPCOMUtils } = ChromeUtils.import(
 | |
|   "resource://gre/modules/XPCOMUtils.jsm"
 | |
| );
 | |
| 
 | |
| // This url must sync with the table, url in SafeBrowsing.jsm addMozEntries
 | |
| const PHISH_TABLE = "moztest-phish-simple";
 | |
| const PHISH_URL = "https://www.itisatrap.org/firefox/its-a-trap.html";
 | |
| 
 | |
| /**
 | |
|  * Waits for a load (or custom) event to finish in a given tab. If provided
 | |
|  * load an uri into the tab.
 | |
|  *
 | |
|  * @param tab
 | |
|  *        The tab to load into.
 | |
|  * @param [optional] url
 | |
|  *        The url to load, or the current url.
 | |
|  * @param [optional] event
 | |
|  *        The load event type to wait for.  Defaults to "load".
 | |
|  * @return {Promise} resolved when the event is handled.
 | |
|  * @resolves to the received event
 | |
|  * @rejects if a valid load event is not received within a meaningful interval
 | |
|  */
 | |
| function promiseTabLoadEvent(tab, url, eventType = "load") {
 | |
|   info(`Wait tab event: ${eventType}`);
 | |
| 
 | |
|   function handle(loadedUrl) {
 | |
|     if (loadedUrl === "about:blank" || (url && loadedUrl !== url)) {
 | |
|       info(`Skipping spurious load event for ${loadedUrl}`);
 | |
|       return false;
 | |
|     }
 | |
| 
 | |
|     info("Tab event received: load");
 | |
|     return true;
 | |
|   }
 | |
| 
 | |
|   let loaded;
 | |
|   if (eventType === "load") {
 | |
|     loaded = BrowserTestUtils.browserLoaded(tab.linkedBrowser, false, handle);
 | |
|   } else {
 | |
|     // No need to use handle.
 | |
|     loaded = BrowserTestUtils.waitForContentEvent(
 | |
|       tab.linkedBrowser,
 | |
|       eventType,
 | |
|       true,
 | |
|       undefined,
 | |
|       true
 | |
|     );
 | |
|   }
 | |
| 
 | |
|   if (url) {
 | |
|     BrowserTestUtils.loadURI(tab.linkedBrowser, url);
 | |
|   }
 | |
| 
 | |
|   return loaded;
 | |
| }
 | |
| 
 | |
| // This function is mostly ported from classifierCommon.js
 | |
| // under toolkit/components/url-classifier/tests/mochitest.
 | |
| function waitForDBInit(callback) {
 | |
|   // Since there are two cases that may trigger the callback,
 | |
|   // we have to carefully avoid multiple callbacks and observer
 | |
|   // leaking.
 | |
|   let didCallback = false;
 | |
|   function callbackOnce() {
 | |
|     if (!didCallback) {
 | |
|       Services.obs.removeObserver(obsFunc, "mozentries-update-finished");
 | |
|       callback();
 | |
|     }
 | |
|     didCallback = true;
 | |
|   }
 | |
| 
 | |
|   // The first part: listen to internal event.
 | |
|   function obsFunc() {
 | |
|     ok(true, "Received internal event!");
 | |
|     callbackOnce();
 | |
|   }
 | |
|   Services.obs.addObserver(obsFunc, "mozentries-update-finished");
 | |
| 
 | |
|   // The second part: we might have missed the event. Just do
 | |
|   // an internal database lookup to confirm if the url has been
 | |
|   // added.
 | |
|   let principal = Services.scriptSecurityManager.createContentPrincipal(
 | |
|     Services.io.newURI(PHISH_URL),
 | |
|     {}
 | |
|   );
 | |
| 
 | |
|   let dbService = Cc["@mozilla.org/url-classifier/dbservice;1"].getService(
 | |
|     Ci.nsIUrlClassifierDBService
 | |
|   );
 | |
|   dbService.lookup(principal, PHISH_TABLE, value => {
 | |
|     if (value === PHISH_TABLE) {
 | |
|       ok(true, "DB lookup success!");
 | |
|       callbackOnce();
 | |
|     }
 | |
|   });
 | |
| }
 | |
| 
 | |
| Services.prefs.setCharPref(
 | |
|   "urlclassifier.malwareTable",
 | |
|   "moztest-malware-simple,moztest-unwanted-simple,moztest-harmful-simple"
 | |
| );
 | |
| Services.prefs.setCharPref("urlclassifier.phishTable", "moztest-phish-simple");
 | |
| Services.prefs.setCharPref(
 | |
|   "urlclassifier.blockedTable",
 | |
|   "moztest-block-simple"
 | |
| );
 | |
| SafeBrowsing.init();
 |