forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			83 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Any copyright is dedicated to the Public Domain.
 | 
						|
   http://creativecommons.org/publicdomain/zero/1.0/
 | 
						|
*/
 | 
						|
 | 
						|
"use strict";
 | 
						|
 | 
						|
add_test(async _ => {
 | 
						|
  ok(
 | 
						|
    Services.cookies,
 | 
						|
    "Force the cookie service to be initialized to avoid issues later. " +
 | 
						|
      "See https://bugzilla.mozilla.org/show_bug.cgi?id=1621759#c3"
 | 
						|
  );
 | 
						|
  Services.prefs.setBoolPref("browser.safebrowsing.passwords.enabled", true);
 | 
						|
 | 
						|
  let classifier = Cc["@mozilla.org/url-classifier/dbservice;1"].getService(
 | 
						|
    Ci.nsIURIClassifier
 | 
						|
  );
 | 
						|
  ok(!!classifier, "We have the URI-Classifier");
 | 
						|
 | 
						|
  var tests = [
 | 
						|
    { name: "a", expectedResult: false },
 | 
						|
    { name: "tracking-annotation", expectedResult: true },
 | 
						|
    { name: "tracking-protection", expectedResult: true },
 | 
						|
    { name: "login-reputation", expectedResult: true },
 | 
						|
  ];
 | 
						|
 | 
						|
  tests.forEach(test => {
 | 
						|
    let feature;
 | 
						|
    try {
 | 
						|
      feature = classifier.getFeatureByName(test.name);
 | 
						|
    } catch (e) {}
 | 
						|
 | 
						|
    equal(
 | 
						|
      !!feature,
 | 
						|
      test.expectedResult,
 | 
						|
      "Exceptected result for: " + test.name
 | 
						|
    );
 | 
						|
    if (feature) {
 | 
						|
      equal(feature.name, test.name, "Feature name matches");
 | 
						|
    }
 | 
						|
  });
 | 
						|
 | 
						|
  let uri = Services.io.newURI("https://example.com");
 | 
						|
 | 
						|
  let feature = classifier.getFeatureByName("tracking-protection");
 | 
						|
 | 
						|
  let results = await new Promise(resolve => {
 | 
						|
    classifier.asyncClassifyLocalWithFeatures(
 | 
						|
      uri,
 | 
						|
      [feature],
 | 
						|
      Ci.nsIUrlClassifierFeature.blocklist,
 | 
						|
      r => {
 | 
						|
        resolve(r);
 | 
						|
      }
 | 
						|
    );
 | 
						|
  });
 | 
						|
  equal(results.length, 0, "No tracker");
 | 
						|
 | 
						|
  Services.prefs.setCharPref(
 | 
						|
    "urlclassifier.trackingTable.testEntries",
 | 
						|
    "example.com"
 | 
						|
  );
 | 
						|
 | 
						|
  feature = classifier.getFeatureByName("tracking-protection");
 | 
						|
 | 
						|
  results = await new Promise(resolve => {
 | 
						|
    classifier.asyncClassifyLocalWithFeatures(
 | 
						|
      uri,
 | 
						|
      [feature],
 | 
						|
      Ci.nsIUrlClassifierFeature.blocklist,
 | 
						|
      r => {
 | 
						|
        resolve(r);
 | 
						|
      }
 | 
						|
    );
 | 
						|
  });
 | 
						|
  equal(results.length, 1, "Tracker");
 | 
						|
  let result = results[0];
 | 
						|
  equal(result.feature.name, "tracking-protection", "Correct feature");
 | 
						|
  equal(result.list, "tracking-blocklist-pref", "Correct list");
 | 
						|
 | 
						|
  Services.prefs.clearUserPref("browser.safebrowsing.password.enabled");
 | 
						|
  run_next_test();
 | 
						|
});
 |