summaryrefslogtreecommitdiffstats
path: root/browser/components/urlbar/tests/unit/test_dedupe_prefix.js
blob: 58f223fbc45aea4a31be6821fe39d753ae4c14ce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */

// Testing that we dedupe results that have the same URL and title as another
// except for their prefix (e.g. http://www.).
add_task(async function dedupe_prefix() {
  // We need to set the title or else we won't dedupe. We only dedupe when
  // titles match up to mitigate deduping when the www. version of a site is
  // completely different from it's www-less counterpart and thus presumably
  // has a different title.
  await PlacesTestUtils.addVisits([
    {
      uri: "http://example.com/foo/",
      title: "Example Page",
    },
    {
      uri: "http://www.example.com/foo/",
      title: "Example Page",
    },
    {
      uri: "https://example.com/foo/",
      title: "Example Page",
    },
    {
      uri: "https://www.example.com/foo/",
      title: "Example Page",
    },
    {
      uri: "https://www.example.com/foo/",
      title: "Example Page",
    },
  ]);

  // We should get https://www. as the heuristic result but https:// in the
  // results since the latter's prefix is a higher priority.
  let context = createContext("example.com/foo/", { isPrivate: false });
  await check_results({
    context,
    autofilled: "example.com/foo/",
    completed: "https://www.example.com/foo/",
    matches: [
      makeVisitResult(context, {
        uri: "https://www.example.com/foo/",
        title: "https://www.example.com/foo/",
        heuristic: true,
      }),
      makeVisitResult(context, {
        uri: "https://example.com/foo/",
        title: "Example Page",
      }),
    ],
  });

  // Add more visits to the lowest-priority prefix. It should be the heuristic
  // result but we should still show our highest-priority result. https://www.
  // should not appear at all.
  for (let i = 0; i < 3; i++) {
    await PlacesTestUtils.addVisits([
      {
        uri: "http://www.example.com/foo/",
        title: "Example Page",
      },
    ]);
  }

  context = createContext("example.com/foo/", { isPrivate: false });
  await check_results({
    context,
    autofilled: "example.com/foo/",
    completed: "http://www.example.com/foo/",
    matches: [
      makeVisitResult(context, {
        uri: "http://www.example.com/foo/",
        title: "www.example.com/foo/",
        heuristic: true,
      }),
      makeVisitResult(context, {
        uri: "https://example.com/foo/",
        title: "Example Page",
      }),
    ],
  });

  // Add enough https:// vists for it to have the highest frecency. It should
  // be the heuristic result. We should still get the https://www. result
  // because we still show results with the same key and protocol if they differ
  // from the heuristic result in having www.
  for (let i = 0; i < 5; i++) {
    await PlacesTestUtils.addVisits([
      {
        uri: "https://example.com/foo/",
        title: "Example Page",
      },
    ]);
  }

  context = createContext("example.com/foo/", { isPrivate: false });
  await check_results({
    context,
    autofilled: "example.com/foo/",
    completed: "https://example.com/foo/",
    matches: [
      makeVisitResult(context, {
        uri: "https://example.com/foo/",
        title: "https://example.com/foo/",
        heuristic: true,
      }),
      makeVisitResult(context, {
        uri: "https://www.example.com/foo/",
        title: "Example Page",
      }),
    ],
  });

  await cleanupPlaces();
});