add_task(async function test_encoded() {
  info("Searching for over encoded url should not break it");
  let url = "https://www.mozilla.com/search/top/?q=%25%32%35";
  await PlacesTestUtils.addVisits({
    uri: Services.io.newURI(url),
    title: url,
  });
  let context = createContext(url, { isPrivate: false });
  await check_results({
    context,
    autofilled: url,
    completed: url,
    matches: [
      makeVisitResult(context, {
        uri: url,
        title: url,
        heuristic: true,
      }),
    ],
  });
  await cleanupPlaces();
});

add_task(async function test_encoded_trimmed() {
  info("Searching for over encoded url should not break it");
  let url = "https://www.mozilla.com/search/top/?q=%25%32%35";
  await PlacesTestUtils.addVisits({
    uri: Services.io.newURI(url),
    title: url,
  });
  let context = createContext("mozilla.com/search/top/?q=%25%32%35", {
    isPrivate: false,
  });
  await check_results({
    context,
    autofilled: "mozilla.com/search/top/?q=%25%32%35",
    completed: url,
    matches: [
      makeVisitResult(context, {
        uri: url,
        title: url,
        heuristic: true,
      }),
    ],
  });
  await cleanupPlaces();
});

add_task(async function test_encoded_partial() {
  info("Searching for over encoded url should not break it");
  let url = "https://www.mozilla.com/search/top/?q=%25%32%35";
  await PlacesTestUtils.addVisits({
    uri: Services.io.newURI(url),
    title: url,
  });
  let context = createContext("https://www.mozilla.com/search/top/?q=%25", {
    isPrivate: false,
  });
  await check_results({
    context,
    autofilled: url,
    completed: url,
    matches: [
      makeVisitResult(context, {
        uri: url,
        title: url,
        heuristic: true,
      }),
    ],
  });
  await cleanupPlaces();
});

add_task(async function test_encoded_path() {
  info("Searching for over encoded url should not break it");
  let url = "https://www.mozilla.com/%25%32%35/top/";
  await PlacesTestUtils.addVisits({
    uri: Services.io.newURI(url),
    title: url,
  });
  let context = createContext("https://www.mozilla.com/%25%32%35/t", {
    isPrivate: false,
  });
  await check_results({
    context,
    autofilled: url,
    completed: url,
    matches: [
      makeVisitResult(context, {
        uri: url,
        title: url,
        heuristic: true,
      }),
    ],
  });
  await cleanupPlaces();
});
