forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			272 lines
		
	
	
	
		
			7.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			272 lines
		
	
	
	
		
			7.1 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/. */
 | 
						|
 | 
						|
const ENGINE_NAME = "engine-suggestions.xml";
 | 
						|
 | 
						|
testEngine_setup();
 | 
						|
 | 
						|
add_task(async function test_prefix_space_noautofill() {
 | 
						|
  await PlacesTestUtils.addVisits({
 | 
						|
    uri: Services.io.newURI("http://moz.org/test/"),
 | 
						|
  });
 | 
						|
 | 
						|
  info("Should not try to autoFill if search string contains a space");
 | 
						|
  let context = createContext(" mo", { isPrivate: false });
 | 
						|
  await check_results({
 | 
						|
    context,
 | 
						|
    matches: [
 | 
						|
      makeSearchResult(context, {
 | 
						|
        engineName: ENGINE_NAME,
 | 
						|
        query: " mo",
 | 
						|
        heuristic: true,
 | 
						|
      }),
 | 
						|
      makeVisitResult(context, {
 | 
						|
        uri: "http://moz.org/test/",
 | 
						|
        title: "test visit for http://moz.org/test/",
 | 
						|
      }),
 | 
						|
    ],
 | 
						|
  });
 | 
						|
 | 
						|
  await cleanupPlaces();
 | 
						|
});
 | 
						|
 | 
						|
add_task(async function test_trailing_space_noautofill() {
 | 
						|
  await PlacesTestUtils.addVisits({
 | 
						|
    uri: Services.io.newURI("http://moz.org/test/"),
 | 
						|
  });
 | 
						|
 | 
						|
  info("Should not try to autoFill if search string contains a space");
 | 
						|
  let context = createContext("mo ", { isPrivate: false });
 | 
						|
  await check_results({
 | 
						|
    context,
 | 
						|
    matches: [
 | 
						|
      makeSearchResult(context, {
 | 
						|
        engineName: ENGINE_NAME,
 | 
						|
        query: "mo ",
 | 
						|
        heuristic: true,
 | 
						|
      }),
 | 
						|
      makeVisitResult(context, {
 | 
						|
        uri: "http://moz.org/test/",
 | 
						|
        title: "test visit for http://moz.org/test/",
 | 
						|
      }),
 | 
						|
    ],
 | 
						|
  });
 | 
						|
 | 
						|
  await cleanupPlaces();
 | 
						|
});
 | 
						|
 | 
						|
add_task(async function test_searchEngine_autofill() {
 | 
						|
  Services.prefs.setBoolPref("browser.urlbar.autoFill.searchEngines", true);
 | 
						|
  await SearchTestUtils.installSearchExtension({
 | 
						|
    name: "CakeSearch",
 | 
						|
    search_url: "https://cake.search",
 | 
						|
  });
 | 
						|
 | 
						|
  info(
 | 
						|
    "Should autoFill search engine if search string does not contains a space"
 | 
						|
  );
 | 
						|
  let context = createContext("ca", { isPrivate: false });
 | 
						|
  await check_results({
 | 
						|
    context,
 | 
						|
    matches: [
 | 
						|
      makePrioritySearchResult(context, {
 | 
						|
        engineName: "CakeSearch",
 | 
						|
        heuristic: true,
 | 
						|
      }),
 | 
						|
    ],
 | 
						|
  });
 | 
						|
 | 
						|
  await cleanupPlaces();
 | 
						|
});
 | 
						|
 | 
						|
add_task(async function test_searchEngine_prefix_space_noautofill() {
 | 
						|
  Services.prefs.setBoolPref("browser.urlbar.autoFill.searchEngines", true);
 | 
						|
  await SearchTestUtils.installSearchExtension({
 | 
						|
    name: "CupcakeSearch",
 | 
						|
    search_url: "https://cupcake.search",
 | 
						|
  });
 | 
						|
 | 
						|
  info(
 | 
						|
    "Should not try to autoFill search engine if search string contains a space"
 | 
						|
  );
 | 
						|
  let context = createContext(" cu", { isPrivate: false });
 | 
						|
  await check_results({
 | 
						|
    context,
 | 
						|
    matches: [
 | 
						|
      makeSearchResult(context, {
 | 
						|
        engineName: ENGINE_NAME,
 | 
						|
        query: " cu",
 | 
						|
        heuristic: true,
 | 
						|
      }),
 | 
						|
    ],
 | 
						|
  });
 | 
						|
 | 
						|
  await cleanupPlaces();
 | 
						|
});
 | 
						|
 | 
						|
add_task(async function test_searchEngine_trailing_space_noautofill() {
 | 
						|
  Services.prefs.setBoolPref("browser.urlbar.autoFill.searchEngines", true);
 | 
						|
  await SearchTestUtils.installSearchExtension({
 | 
						|
    name: "BaconSearch",
 | 
						|
    search_url: "https://bacon.search",
 | 
						|
  });
 | 
						|
 | 
						|
  info(
 | 
						|
    "Should not try to autoFill search engine if search string contains a space"
 | 
						|
  );
 | 
						|
  let context = createContext("ba ", { isPrivate: false });
 | 
						|
  await check_results({
 | 
						|
    context,
 | 
						|
    matches: [
 | 
						|
      makeSearchResult(context, {
 | 
						|
        engineName: ENGINE_NAME,
 | 
						|
        query: "ba ",
 | 
						|
        heuristic: true,
 | 
						|
      }),
 | 
						|
    ],
 | 
						|
  });
 | 
						|
 | 
						|
  await cleanupPlaces();
 | 
						|
});
 | 
						|
 | 
						|
add_task(async function test_searchEngine_www_noautofill() {
 | 
						|
  Services.prefs.setBoolPref("browser.urlbar.autoFill.searchEngines", true);
 | 
						|
  await SearchTestUtils.installSearchExtension({
 | 
						|
    name: "HamSearch",
 | 
						|
    search_url: "https://ham.search",
 | 
						|
  });
 | 
						|
 | 
						|
  info(
 | 
						|
    "Should not autoFill search engine if search string contains www. but engine doesn't"
 | 
						|
  );
 | 
						|
  let context = createContext("www.ham", { isPrivate: false });
 | 
						|
  await check_results({
 | 
						|
    context,
 | 
						|
    matches: [
 | 
						|
      makeVisitResult(context, {
 | 
						|
        source: UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
 | 
						|
        uri: "http://www.ham/",
 | 
						|
        title: "http://www.ham/",
 | 
						|
        displayUrl: "http://www.ham",
 | 
						|
        heuristic: true,
 | 
						|
      }),
 | 
						|
      makeSearchResult(context, {
 | 
						|
        engineName: ENGINE_NAME,
 | 
						|
        query: "www.ham",
 | 
						|
      }),
 | 
						|
    ],
 | 
						|
  });
 | 
						|
 | 
						|
  await cleanupPlaces();
 | 
						|
});
 | 
						|
 | 
						|
add_task(async function test_searchEngine_different_scheme_noautofill() {
 | 
						|
  Services.prefs.setBoolPref("browser.urlbar.autoFill.searchEngines", true);
 | 
						|
  await SearchTestUtils.installSearchExtension({
 | 
						|
    name: "PieSearch",
 | 
						|
    search_url: "https://pie.search",
 | 
						|
  });
 | 
						|
 | 
						|
  info(
 | 
						|
    "Should not autoFill search engine if search string has a different scheme."
 | 
						|
  );
 | 
						|
  let context = createContext("http://pie", { isPrivate: false });
 | 
						|
  await check_results({
 | 
						|
    context,
 | 
						|
    matches: [
 | 
						|
      makeVisitResult(context, {
 | 
						|
        source: UrlbarUtils.RESULT_SOURCE.OTHER_LOCAL,
 | 
						|
        uri: "http://pie/",
 | 
						|
        title: "http://pie/",
 | 
						|
        iconUri: "",
 | 
						|
        heuristic: true,
 | 
						|
      }),
 | 
						|
    ],
 | 
						|
  });
 | 
						|
 | 
						|
  await cleanupPlaces();
 | 
						|
});
 | 
						|
 | 
						|
add_task(async function test_searchEngine_matching_prefix_autofill() {
 | 
						|
  Services.prefs.setBoolPref("browser.urlbar.autoFill.searchEngines", true);
 | 
						|
  await SearchTestUtils.installSearchExtension({
 | 
						|
    name: "BeanSearch",
 | 
						|
    search_url: "https://www.bean.search",
 | 
						|
  });
 | 
						|
 | 
						|
  info("Should autoFill search engine if search string has matching prefix.");
 | 
						|
  let context = createContext("https://www.be", { isPrivate: false });
 | 
						|
  await check_results({
 | 
						|
    context,
 | 
						|
    autofilled: "https://www.bean.search/",
 | 
						|
    matches: [
 | 
						|
      makePrioritySearchResult(context, {
 | 
						|
        engineName: "BeanSearch",
 | 
						|
        heuristic: true,
 | 
						|
      }),
 | 
						|
    ],
 | 
						|
  });
 | 
						|
 | 
						|
  info("Should autoFill search engine if search string has www prefix.");
 | 
						|
  context = createContext("www.be", { isPrivate: false });
 | 
						|
  await check_results({
 | 
						|
    context,
 | 
						|
    autofilled: "www.bean.search/",
 | 
						|
    matches: [
 | 
						|
      makePrioritySearchResult(context, {
 | 
						|
        engineName: "BeanSearch",
 | 
						|
        heuristic: true,
 | 
						|
      }),
 | 
						|
    ],
 | 
						|
  });
 | 
						|
 | 
						|
  info("Should autoFill search engine if search string has matching scheme.");
 | 
						|
  context = createContext("https://be", { isPrivate: false });
 | 
						|
  await check_results({
 | 
						|
    context,
 | 
						|
    autofilled: "https://bean.search/",
 | 
						|
    matches: [
 | 
						|
      makePrioritySearchResult(context, {
 | 
						|
        engineName: "BeanSearch",
 | 
						|
        heuristic: true,
 | 
						|
      }),
 | 
						|
    ],
 | 
						|
  });
 | 
						|
 | 
						|
  await cleanupPlaces();
 | 
						|
});
 | 
						|
 | 
						|
add_task(async function test_prefix_autofill() {
 | 
						|
  await PlacesTestUtils.addVisits({
 | 
						|
    uri: Services.io.newURI("http://mozilla.org/test/"),
 | 
						|
  });
 | 
						|
  await PlacesTestUtils.addVisits({
 | 
						|
    uri: Services.io.newURI("http://moz.org/test/"),
 | 
						|
  });
 | 
						|
 | 
						|
  info(
 | 
						|
    "Should not try to autoFill in-the-middle if a search is canceled immediately"
 | 
						|
  );
 | 
						|
  let context = createContext("mozi", { isPrivate: false });
 | 
						|
  await check_results({
 | 
						|
    context,
 | 
						|
    incompleteSearch: "moz",
 | 
						|
    autofilled: "mozilla.org/",
 | 
						|
    completed: "http://mozilla.org/",
 | 
						|
    matches: [
 | 
						|
      makeVisitResult(context, {
 | 
						|
        uri: "http://mozilla.org/",
 | 
						|
        title: "mozilla.org",
 | 
						|
        heuristic: true,
 | 
						|
      }),
 | 
						|
      makeVisitResult(context, {
 | 
						|
        uri: "http://mozilla.org/test/",
 | 
						|
        title: "test visit for http://mozilla.org/test/",
 | 
						|
        providerName: "UnifiedComplete",
 | 
						|
      }),
 | 
						|
    ],
 | 
						|
  });
 | 
						|
 | 
						|
  await cleanupPlaces();
 | 
						|
});
 |