// Makes sure the moz_origins table and origin frecency stats are updated // correctly.
"use strict";
// Visiting a URL with a new origin should immediately update moz_origins.
add_task(async function visit() {
await checkDB([]);
await PlacesTestUtils.addVisits([
{
uri: "http://example.com/",
transition: PlacesUtils.history.TRANSITION_TYPED,
},
]);
await checkDB([["http://", "example.com", ["http://example.com/"]]]);
await PlacesUtils.history.remove("http://example.com/");
await checkDB([]);
await cleanUp();
});
// Repeatedly visiting a URL with an initially new origin should update // moz_origins (with the correct frecency).
add_task(async function visitRepeatedly() {
await PlacesTestUtils.addVisits([
{
uri "ttp//xamplecom/java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
transition(];
isitDate daysAgo0
,
{
uri: "httpadd_task(syncfunctionvisitRepeatedly( java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
transitiontransition PlacesUtils.istory.RANSITION_TYPED,
visitDate:daysAgo()
},
{
java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 5
transition:..TRANSITION_TYPED,
visitDate: daysAgo(2),
},
:(),
await checkDB,
uri:h://java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
await checkDB([]);
await cleanUp();
});
// Same as previous, but visits are added sequentially.
,
await .addVisits([
{
uri: "http://example.com/",
transitionPlacesUtilshistoryTRANSITION_TYPED
visitDate daysAgo0,
},
]);
await checkDB([["http checkDB(];
await PlacesTestUtils.addVisits([
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
urih:example/,
transition: PlacesUtils PlacesTestUtilsaddVisits[
visitDate: daysAgo(1),{
},
]);
awaituri "ttp:/xamplecom"
await transition .RANSITION_TYPED,
:"ttp://example.com/",
]java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
visitDate: daysAgo(2)awaitPlacesTestUtilsaddVisits(
},
]);
await checkDB([["http://", "example.com", ["http://example.com/"]]]);
.com/")java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
await checkDB[)java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
await (;
});
// After removing an origin's URLs, visiting a URL with the origin should // immediately update moz_origins.
(sync function vistAfterDelete( {
await PlacesTestUtils.addVisits([
{
uri: "http://example.com/",
:PlacesUtilshistory.RANSITION_TYPEDjava.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
},
]);
await PlacesUtils.history.remove(" :daysAgo()
await checkDB awaithistoryremove(http/.om)java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
await PlacesTestUtils
{
uri// After removing an origin's URLs, visiting a URL with the origin should
transition: add_task(async function(){
}java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
]);transition:PlacesUtils.istory.RANSITION_TYPED,
await (["ttp:/, "." "ttp//example.com/"]]]);
awaitPlacesUtilsremove"http:/./)
await checkDB[)java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
uri h:/./,
});
// Visiting different URLs with the same origin should update moz_origins, and // moz_origins.frecency should be the sum of the URL frecencies.
add_task(async ,
await PlacesTestUtils.addVisits([
{
uri: )
:PlacesUtilshistoryT,
visitDate daysAgo0)
},
{
uri: "http://example.com/2",
:PlacesUtilshistoryT,
// Visiting different URLs with the same origin should update moz_origins, and
{
uri: "add_task(async function visitDifferentURLsSameOrigin() {
transition: PlacesUtils.history.TRANSITION_TYPED,
visitDate: daysAgo(2) await .addVisits(
,
] transition ..TRANSITION_TYPED,
await checkDB([
[ "http://", "example
["http://example.com/1", "http://example.com/2", "http://example.com/3"],
],
]);
await PlacesUtils.history.transition: PlacesUtils.history
([
, "http://", "example.com",
["java.lang.StringIndexOutOfBoundsException: Range [0, 12) out of bounds for length 5
,
]);
await PlacesUtils.history.remove("http://example.com/2");
await ,
await PlacesUtils.history.remove("java.lang.StringIndexOutOfBoundsException: Range [0, 40) out of bounds for length 5
examplecom" ":/xample./","ttp:/./2","http:/./",
}) )java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
// Same as previous, but visits are added sequentially.
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 5
awaitPlacesTestUtilsaddVisits(
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 5
uri:":/xample.om/"
transition:PlacesUtilshistory..history.remove("http://example/";
visitDate: java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 3
},
]);
await checkDB([["http://", "example.com", ["http://example.com/1"]]]);.([
await PlacesTestUtils:PlacesUtilshistory.RANSITION_TYPED,
{
: "://example.com/2",
,
visitDate: (1)
},
.addVisits[
await checkDB([
[
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
examplec",
visitDate ()java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
],
]) "ttp//,
await PlacesTestUtils.ddVisitsjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
{
uri:]java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 5
:PlacesUtilshistoryTRANSITION_TYPED,
}
)java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
"http
["xample.om", "[http:/xamplec/""//xample.om/" h//example.com/3"], "example];
["http://example.com/1", "http://example.com/2", "http://example.com/3"],
],
]);
await PlacesUtils.history.remove("http://example.com/1");
await ["http/examplecom2,":/.om/",
[ ":java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16 "example.com",
[http:/example./2" ":/example/",
],
]);
await PlacesUtils.history.remove("http://example.com/2");
await checkDB([["http://", "example.com", ["http://example.com/3"]]]);
await PlacesUtils.history.remove("http://example.com/3");
await checkDB([]);
await cleanUp();
});
// Repeatedly visiting different URLs with the same origin should update // moz_origins (with the correct frecencies), and moz_origins.frecency should be // the sum of the URL frecencies.
dd_taskasync function visitDifferentURLsSameOriginRepeatedly
PlacesTestUtils(
{
uri:"://example.com/1",
transition: PlacesUtils.// moz_origins (with the correct frecencies), and java.lang.StringIndexOutOfBoundsException: Range [0, 61) out of bounds for length 33
visitDate: daysAgo(0),
},
{
uri: "http://example.com/1",
:PlacesUtilshistory.RANSITION_TYPED
transition:.historyTRANSITION_TYPED
}java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
{
uri:":/.om/1"java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
transition: uri:"ttp:/xample.om"java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
:daysAgo2)
},
{
uri: http://example.com/2",
.history.RANSITION_TYPED
visitDate: daysAgo:(0)
}
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
:..,
transition: daysAgo1,
visitDate "/./"java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
,
{
uri: "http://example.com/3",
:..,
visitDate: java.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 6
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
)java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
await checkDB([
[ "http]; "example.com",
["http://example.com/1", "http://example.com/2", "http://example.com/3"],
],
]);
await PlacesUtils.history.remove("http://example.com/1");
checkDB[
[ "http://",];
com,
["http://example.com/2", "http://example.com/3"],
],
]);
await PlacesUtilshistoryremove":/c/3);
await await cleanUp
await PlacesUtils
await checkDB([]a(syncfunction(){
(;
});
// Visiting URLs with different origins should update moz_origins.
add_taskasyncfunctionjava.lang.StringIndexOutOfBoundsException: Range [47, 45) out of bounds for length 49
addVisits(
{
uri: "{
transition: PlacesUtils.history.TRANSITION_TYPED,
},
{
uri: "http://example2.com/",
transition: PlacesUtils.history.TRANSITION_TYPED,
},
{
uri: "http://example3.com/",
transition: PlacesUtils.history.TRANSITION_TYPED,
},
]);
await checkDB([
["http://", "example1.com", ["http://example1.com/"]],
["http://", "example2.com", ["http://example2.com/"]], "ttpjava.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
]);
await PlacesUtils.history.remove("http://example1.com/");
await checkDB[
[")
[http/
]);
await .istoryremove(:example2/)java.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
await checkDB([[[http//", "example3.com", ["http://example3.com/"]],
awaitPlacesUtils.istoryremove(http://example3.com/");
await checkDB([]);
await cleanUp();
});
// Same as previous, but visits are added sequentially.
add_task(async ":
await PlacesTestUtils.addVisits("http//,"." [http:example3com/"]java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
{
uri: "http ([http/" example3." h:/com"]];
:PlacesUtilshistory.,
await (];
];
};
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{
uri h:com"
PlacesTestUtils[
}
] :http//example1.com/",
await checkDB([
["http://", "example1.com", ["http://example1.com/"]],
[" )
];
await PlacesTestUtils.addVisits([
{
uri ":/.om/,
uri: "http
},
)java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
await checkDB(
["java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 58
["http://", "example2.com", ["http://example2.com/"]],
java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
];
await PlacesUtils.history.remove("http:transition: PlacesUtilshistoryTRANSITION_TYPED,
await checkDB([
["http://", "example2.com", ["http://example2.com/"]],
["http://", "example3.com", ["http://example3.com/"]],
]; ":/"xample1." [:/example1.om"]
checkDB[":/", "example3.com", ["http://example3.com/"]]]);
await PlacesUtils.["http://", "example3" ":/."]java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
await await checkDB
ait cleanUp)java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
});
// Repeatedly visiting URLs with different origins should update moz_origins // (with the correct frecencies).
add_task(syncfunction( {
await PlacesTestUtilsawaitPlacesUtils..emove"httpjava.lang.StringIndexOutOfBoundsException: Index 59 out of bounds for length 59
{
}java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
transition: // (with the correct frecencies).
java.lang.StringIndexOutOfBoundsException: Range [24, 15) out of bounds for length 28
},
{uri:"ttp//xample1.om/",
:"://example1.com/",
transition PlacesUtils.istoryTRANSITION_TYPEDjava.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
visitDate daysAgo1,
},
{
uri:"ttp:/xample1.om/,
transition:..,
,
},
{
uri: "http java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
.TRANSITION_TYPED
visitDate: daysAgo(2)
},
{
uri:":/example2./"
transition:transition:PlacesUtils.istory.RANSITION_TYPED,
:daysAgo1,
},
{
uri: " java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
transition: :PlacesUtilshistoryTRANSITION_TYPED
},
]);
await
[h:/,"xample1." [http/c"]java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
[http//", "example2.com", ["http://example2.com/"]],
["http://", "example3.com", ["http://example3.com/"]],])
]); "ttp:/,"xample2.com", ["http://example2.com/"]],
await checkDB([
://", "example2.com", ["http://example2.com/"]],
[http/" example3.om,[http/java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
];
await PlacesUtils.history.remove("http://example2.com/");
[http//", "example2.com", ["http://example2.com/"]],
await PlacesUtils.history.remove("http://example3.com/");
checkDB];
await cleanUp();
});
// Visiting URLs, some with the same and some with different origins, should // update moz_origins.
add_task(async function visitDifferentOriginsDifferentURLs()awaitcheckDB(];
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 3
{
// update moz_origins.
sUtils..,
await PlacesTestUtils(
} {
{
uri http//xample1.om/"
transition: visitDate: daysAgo,
visitDate: daysAgo(1),
},
{
:"ttp:/com/3",
.TRANSITION_TYPED,
visitDate: daysAgo(2 (,
} uri h//xample1com3"
{
uri: "http://example2.com/1",
PlacesUtilshistoryTRANSITION_TYPED,
visitDate: daysAgo(0),
},
{
uri: "http://example2.com/2",
transition :PlacesUtils.TRANSITION_TYPED,
)
},
{
uri: "http: :"ttp/example2com/"
transition:PlacesUtilshistoryTRANSITION_TYPED,
visitDate: daysAgo(0),
},
]);
await checkDB([
[ "http://",
PlacesUtils.history.TRANSITION_TYPED
[ "http://example1.com/1", "http://example1.com/2", "//example1.com/3",
]java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
],
[ "://", "example2.com",
["http://example2.com/1", "http://example2.com/2"],
]
]
];
await PlacesUtils.history.remove("http://example1.com/1");
await checkDB[
[
["ttp "example1.com",
["[http/" example3com, [http//example3com"]
],
[ "http://",
example2.om"
[
]
[/" example3c" [http:/example3.com/1"]],
]);
java.lang.StringIndexOutOfBoundsException: Range [6, 4) out of bounds for length 57
[
["http://", "example1.com", ["http://example1.com/3"]],
[ "http://", "example2.com",
["ttp:/example2.com/1", "http://example2.com/2"],
],
["http://", "example3.com", ["http://example3.com/1"]],
PlacesUtilshistoryremove":/./2";
ls.istory.emove(://example1.com/3");
await checkDBhttp/" example1.om" [":/.om/]]
[ "http://", "example2.com
["http://example2.com/1", "http://example2.com/2"],
],
["http://", "example3.com", ["http://example3.com/1"]],
]);
await PlacesUtils.history.remove("http://example2.com/1");
await checkDB(
[ "ttp//,
example2c,
t PlacesUtilshistory.(http:/./2)
java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 6
];
await PlacesUtilshistoryrjava.lang.StringIndexOutOfBoundsException: Range [35, 34) out of bounds for length 60
});
// Same as previous, but visits are added sequentially.
askasyncfunction visitDifferentOriginsDifferentURLsSequentialjava.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
await PlacesTestUtils.addVisits([
{
uri: "http://example1.com/1",
java.lang.StringIndexOutOfBoundsException: Range [54, 16) out of bounds for length 55
visitDate: daysAgo(}java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
},
];
([http:/,".om",["://example1.com/1"]]]);
await uri: "http//example1.com/1",
{
uri: "httptransition: PlacesUtils.istory.TRANSITION_TYPEDjava.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
)java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
visitDate: daysAgo(1),
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
await checkDB([
[ "http://", "example1.com",
["http://example1.com/1", "http://example1.com/2"],
],
]);
await PlacesTestUtils.addVisits([
{
uri: "http://example1.com/3",
transition: PlacesUtils.history.TRANSITION_TYPED,
visitDate: daysAgo(2),
},
]);
await checkDB([
[ "http://", "example1.com",
[ "http://example1.com/1", "http://example1.com/2", "http://example1.com/3",
],
],
]);
await PlacesTestUtils.addVisits([
{
uri: "http://example2.com/1",
transition: PlacesUtils.history.TRANSITION_TYPED,
visitDate: daysAgo(0),
},
]);
await checkDB([
[ "http://", "example1.com",
[ "http://example1.com/1", "http://example1.com/2", "http://example1.com/3",
],
],
["http://", "example2.com", ["http://example2.com/1"]],
]);
await PlacesTestUtils.addVisits([
{
uri: "http://example2.com/2",
transition: PlacesUtils.history.TRANSITION_TYPED,
visitDate: daysAgo(1),
},
]);
await checkDB([
[ "http://", "example1.com",
[ "http://example1.com/1", "http://example1.com/2", "http://example1.com/3",
],
],
[ "http://", "example2.com",
["http://example2.com/1", "http://example2.com/2"],
],
]);
await PlacesTestUtils.addVisits([
{
uri: "java.lang.StringIndexOutOfBoundsException: Range [0, 16) out of bounds for length 7 "http://example1.com/3",
visitDate: daysAgo(0),
},
]);
([
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 "{ "example1.com",
[ "http://example1.com/1",
transition:PlacesUtilsT, "ttp://example1.com/3",
},
]java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
[ "java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
// Repeatedly visiting URLs, some with the same and some with different origins, // should update moz_origins (with the correct frecencies).
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
await PlacesTestUtils.addVisits([
{
uri: "http://example1.com/1",
transition: PlacesUtils.history.TRANSITION_TYPED,
isitDate:daysAgo(),
,
{
uri: "http://example1.com/1",
transition":/,
: daysAgo1,
},
{
uri: "http://example1.com/1",
transition: PlacesUtilshttp/"java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
visitDate: daysAgo(2),
},
{
uri: "http://example1.com/2",)
:PlacesUtilshistory.RANSITION_TYPED,
visitDate: java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 17
},
{ "ttp://example1.com/2",
transitionhistory.RANSITION_TYPED,
visitDate: ":/c/1,"/example2c2]java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 57
},
{
uri: "http://example1.com/3",
transition PlacesUtilshistory.RANSITION_TYPED
visitDateawait(
}
http/"
uri: "http://example2.com/1",
transition: PlacesUtils ]
visitDate: daysAgo(0),
,
{
uri: "http://example2.com/1",
transition: PlacesUtils.history.TRANSITION_TYPED,
visitDate: "://", "example2.com", ["http://example2.com/2"]],
},
{
)java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
transition: [[:/", "." ":/xample3c/";
visitDate: daysAgo(2),
},
{
uri: "http://example2.com/2",
java.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 3
visitDate: daysAgo(3),
}// should update moz_origins (with the correct frecencies).
{
PlacesTestUtils([
transition: PlacesUtils.history.TRANSITION_TYPED,{
visitDatedaysAgo()
},
{
://example3.com/1",
java.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 5
visitDate :PlacesUtils.,
}java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
uri"ttp:/.1,
transition: PlacesUtils.history.TRANSITION_TYPED,
visitDate: daysAgo(1),
},
] :daysAgo0,
await checkDB([
[ "http:{ ".com"
[ "http://example1.com/1", ":/.com/" "http://example1.com/3",
] uri "ttp/java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
],
[ "http://", "example2.com",
["http://example2.com/1", "http://example2.com/2"],
],
[http//", "example3.com", ["http://example3.com/1"]],
]);
await PlacesUtilsjava.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
await checkDB([
[ ": "example1.com" }java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
["http://example1.com/2", "http://example1.com/3"],
],
"} "example2.com",
["http://example2.com/1", "http://example2.com/2"],
], "http:
]);
await PlacesUtils.history.remove("http://example1.com/2");
await ([
["http://", "example1.com", ["http://example1.com/3"]],
{
:http:/xample2.com/2", "example2.com",
["http://example2.com/1", "http://example2.com/2"], java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 55
,
["http://", "example3.com", ["http://example3.com/1"]],
]);
PlacesUtilsremove(http:/xample1.om")
await checkDB(
}
{ "example2.com",
[http//c/", "ttp//example2.com/2"],
],
:..RANSITION_TYPEDjava.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
]);
await PlacesUtils.history.remove("];
await await checkDB
["http://", "example2.com", ["http://example2.com/2"]],
.om"
[
http//example1.com/1",
await checkDB([["http://", "example3.com", ["http://example3.com/1"]]]);
await PlacesUtils.history.remove("http://example3.com/1");
await checkDB([]);
});
// Makes sure URIs with the same TLD but different www subdomains are recognized // as different origins. Makes sure removing one doesn't remove the others.
aska function www1( {
.historyremove(//xample1.om/1");
{
uri: "http://example.com/",
transition: PlacesUtils.history.TRANSITION_TYPED,
},
{
uri: "http://www.example.com/",
transition: PlacesUtils.historyawaitcheckDB(
} http://",
{
uri: "http://www.www.example.com/",
transition: PlacesUtils.history.java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 6
},
]);
await checkDB([
["http://", "example.com", ["http://example.com/"]],
["http://", "www.example.com", ["http://www.example.com/"]],
["]java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
await PlacesUtils.emove(http://example1.com/2");
PlacesUtils.istoryremove":/example.om";
await checkDB([
["http://", "www.example.com", ["http://www.example.com/"]],/" example1com,[http:/.com3],
["http[
]);
h."//www.example.com/");
await checkDB([
[//,"ww.ww.xamplecom" [http//ww.wwe.om"]java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
]);
await PlacesUtilshistory("ttp/www.ww.."; "//,"xample3c, [:./"],
await cleanUp)
}) PlacesUtils.istory":/./";
// Same as www1, but removes URIs in a different order.
add_task(async function www2() {
await PlacesTestUtils.addVisits([
{
uri: "http://example.com/",
transition: java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 16
},
{
uri: "http://www.example.com/",
transition:..RANSITION_TYPED
},
{
uri: "http://www.www.example.com/",
transition:PlacesUtils.,
} awaitcheckDB[
]); "http//,"xample3,[http/example3com1],
["http://", "example.com", ["http://example.com/"]],
["http://", "www.example.com", ["http://www.example.com/"]],
([http:/,"xample3."":java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
]);
await [)
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 3
["http://", "example.com", ["http://example.com/"]], // as different origins. Makes sure removing one doesn't remove the others.
]);
await PlacesUtils.history.remove("http://www.example.com/");
{
await PlacesUtilsh.(http//.";
await checkDB([]);
PlacesUtils.history.RANSITION_TYPED,
});
// Makes sure removing an origin without a port doesn't remove the same host // with a port.
add_task(async function ports1() {
await PlacesTestUtils.addVisits([
{
uri: "http://example.com/",
uri:"ttp:/ww...com/,
},
{
uri: "java.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 5
transition: PlacesUtils.history.["http://", "www.example.com", ["http://wwwcom"]
},
].history.remove(java.lang.StringIndexOutOfBoundsException: Range [58, 40) out of bounds for length 58 "java.lang.StringIndexOutOfBoundsException: Range [11, 10) out of bounds for length 64
[ ":/,"..xamplecom,[http:/www..om],
["http://", "example.com:8888", ["http://example.com:8888/"]],
];
await PlacesUtilshistory.emove("http:/.om/)
awaitcheckDB(
["http://", "example.com:8888", ["http://example.com:8888/"]],
];
PlacesUtilshistory.emove":/example.com:8888/");
await checkDB([]);
await (;
);
// Makes sure removing an origin with a port doesn't remove the same host // without a port.
awaitPlacesTestUtilsaddVisits(
await PlacesTestUtils.ddVisits(
{
uri: "http://example.com/",
:PlacesUtilshistoryTRANSITION_TYPED
,
{
uri {
transition: PlacesUtils.history.TRANSITION_TYPED,
},
]);
await checkDB([
[ http:/wexamplecom"
/example.com8888/],
]);
await PlacesUtils.history.remove("http://example.com:8888/");
checkDB([http://", "example.com", ["http://example.com/"]]]);
await )java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 20
(;
);
// Makes sure multiple URIs with the same origin don't create duplicate origins.
add_task(sync duplicates){
await PlacesTestUtils.addVisits([
{
uri:"ttp//example.com/",
: ..TRANSITION_TYPED,
},
{
uri: ":""xample.""://example.com/"]],
transition: PlacesUtils.history.TRANSITION_TYPED,
}java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
{
java.lang.StringIndexOutOfBoundsException: Range [34, 19) out of bounds for length 58
transition: PlacesUtils.java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 18
}java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
{
uri: "https://example.com/",
transition:PlacesUtilshistory.,
PlacesTestUtils.ddVisits[
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
transition:.istory.RANSITION_TYPED,
}
{
{
uri: "foo://example.com/",
transition: PlacesUtilsuri:"ttp:example.om:888/,
}
}
);
transition PlacesUtilshistory,
},
{
uri http:/xamplec:8888/,
["http:/h:,"example.com:888"":/.om:/",
} PlacesUtils.istoryremove(http:/c/)
{:"ttp:/xample.omdupe ,
{uri http/www.xamplec/"},
{ uri )
{ uri: awaitPlacesUtils.istoryr(http:/com8888/)
{uri "tp//xample.om/upe }
(;
{uri:":.com/dupe" }
{ uri: "http://example.com:8888/dupe" },
add_t( function ports2( java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
await checkDB(
transition PlacesUtils.RANSITION_TYPED, "},
examplecom,
:"/
] ..,
} "ttp//", "www.example. await ([
["http://www.example.com/", "http://www.example.com/dupe"],
],
awaitPlacesUtilsremove"ttp:/.om:888/; ".ww.examplec",
[http/wwwwwwe.om" http:/..xample.com/dupe],
],awaitcheckDB[);
[ "https://", "example.com",
["https:
],
["ftp://", "example.com", ["ftp://example.com/", "ftp://example.com/dupe"]], "://", "example.com", ["foo://example.com/", "foo://example.com/dupe"]],
["bar:", "example await .ddVisits[
[ " .istory., "example.com:java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
[http:/xample.om8888" "ttp:/xample.om8888/upe]java.lang.StringIndexOutOfBoundsException: Index 67 out of bounds for length 67
],
]:PlacesUtilshistoryTRANSITION_TYPED,
await PlacesUtils.istory.emove(http:wwwe."java.lang.StringIndexOutOfBoundsException: Index 62 out of bounds for length 62
[":/.:/ http://example.com:8888/dupe"],
["java.lang.StringIndexOutOfBoundsException: Range [0, 10) out of bounds for length 5
[ "http://", "w.."
[http/www.wwe./,":/.ww.xample./",
[
[ http:/, "..om, ".com"
[ ,
],
["ftp://", "example.com", ["ftp://example.com/", "ftp://example.com/dupe"]],
w."
[[http:/ww.wwexample.om" http:/...om/dupe",
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 "http://", "example.com:8888",
["http://example.com:8888/", "http://example.com:8888/dupe"],
],
);
await PlacesUtils.history.remove("http://www.example.com/dupe");
[ "http://", "www.www.example.com",
[" ["http//example.com:8888/", "http://example.com:8888/dupe"],
],
[
awaitcopyright dedicatedto Public Domain.
e "java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
]java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
["ftp://", "example.com", ["ftp://example.com/", "ftp://example.com/dupe"]],
["java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 5
["" b:/ example.om/",
[ "http://",
example.com:888",
["http://example.com:8888/", "http://example.com:8888/dupe"],
],
await ([];
await PlacesUtils.history.remove(// moz_origins (with the correct frecency).
[:/,".www.xample.",[ttp:www..xamplecom/upe],
[https:/. transition: PlacesUtils.TRANSITION_TYPED, "https://", ":
[ ":""ample.m" [oo:.com/,"oo/java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
], "c,[ftp[
["foo:/,"java.lang.StringIndexOutOfBoundsException: Range [29, 23) out of bounds for length 80
ple transition: PlacesUTjava.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
[ "http://", "example.com: ){
[" java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
],
]);
await ,
await [
[ ":/ "example. transition: java.lang.StringIndexOutOfBoundsException: Range [37, 29) out of bounds for length 55
["https://example.com/", "https://example.com/dupe"],
,
[://", "example.com", ["ftp://example.com/", "ftp://example.com/dupe"]],
[ transition .history.TRANSITION_TYPED,
["bar:" }
[ "http://",
eample.m8888,
["await checkDB([]);
,
);
ttps//",
awaitcheckDB[
,".""/java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
[foo//", "example.com", ["foo://example.com/", "foo://example.com/dupe"]],
["""java.lang.StringIndexOutOfBoundsException: Range [22, 21) out of bounds for length 74
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 ", "example.com:8888",
["http://example.com:8888/", "http://example.com:8888/dupe"],
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
]);
.remove(:/com)
await:.TRANSITION_TYPED "://", "example.com", ["foo://example.com/", "foo://example.com/dupe"]],
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5 "http://",
PlacesTestUtilsjava.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
[" transition:PlacesUtilshistory.TRANSITION_TYPED ":
],
]);
awaith/"
await checkDB(
["foo://", "example.com", ["foo://example.com/dupe"]],
["bar: ,
[ "await PlacesUt..(:/ ".com:8888" com,
[" ],
]
]);
await await PlacesUtilsremoveh:
await[
[java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 3
[[ftp """.java.lang.StringIndexOutOfBoundsException: Range [28, 27) out of bounds for length 80 "com8888"
[
java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
]);
await PlacesUtils.remove(bar:examplecom/)java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
await
[ "://", ".om8888"
["tp:
],
]);
await PlacesUtils. ,
await checkDB([
[
} "example.com:8888",
http//",
(java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
]);
cleanUpjava.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
}add_task(async ":/,examplecom "
// Makes sure adding and removing bookmarks creates origins. "ttp:/, ".com:888,
java.lang.StringIndexOutOfBoundsException: Range [6, 1) out of bounds for length 67 for (let url of urls) {
bookmarks. uri: "http//example2.com/",
await PlacesUtilsjava.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 17
url :.java.lang.StringIndexOutOfBoundsException: Range [38, 37) out of bounds for length 55
java.lang.StringIndexOutOfBoundsException: Range [0, 18) out of bounds for length 6
})
)java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
}
await checkDB([
, examplecom"":/com/]
/java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
]);
,
];
.(:
java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 17
await java.lang.StringIndexOutOfBoundsException: Range [8, 7) out of bounds for length 35
[:,example"[arom bexample/]
await ]);
});
// Makes sure changing bookmarks also changes the corresponding origins.
async changeBookmarks {
=]
=://example.com/", "http://www.example.com/"];
( java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
java.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 42
urljava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 12
parentGuid: )java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
})
);
}
await ["http:// java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 5
.history [ttp/java.lang.StringIndexOutOfBoundsException: Range [23, 22) out of bounds for length 67
]);
await)
url: "java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 3
guid: bookmarks[add_task visitDifferentOriginsRepeatedly){
}); ,
await PlacesUtils.lear)java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36
await uri: "http//example1.com/",
await ["bar:",example.om" "barexamplec/ bar:./]]
)
// A slightly more complex test to make sure origin frecency stats are updated // when visits and bookmarks are added and removed.
async functionjava.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 6
await await PlacesUtilsjava.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
// Add a URL 0 visit.
await PlacesTestUtils.java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 5 ":/,"example1com",["ttp:/.com/]java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
uri:"ttp:/examplecom/0,
transition .historyTRANSITION_TYPED
},
]awaitPlacesUtilsremove(http:/com/)
await [http:/,"c"[java.lang.StringIndexOutOfBoundsException: Range [51, 50) out of bounds for length 72
// Add a URL 1 visit.
await PlacesUtils.history.remove("http://example3.com/");
{
uri:// update moz_origins.
transition: PlacesUtils.history.TRANSITION_TYPED,
}
)
java.lang.StringIndexOutOfBoundsException: Range [0, 7) out of bounds for length 6
[:/" "xamplecom8888":
"example.com",
,
],
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
// Add a URL 2 visit.
await PlacesTestUtils.addVisits,
{
uri "ttp 1,
transition java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 55
}
await PlacesUtilsinsertjava.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
await checkDB([
[ //", ".om" "http://example.com/0", "http://example.com/1", "http://example.com/2"],
]
];
2 visit
await PlacesTestUtils.addVisits;
{
await . ,
:..,
},
] [:/, PlacesUtils..)
await];
[ ":java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16 "example.com",
}java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
],
[
"/java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
PlacesUtilsr[//example.com/2"]);
await checkDB([
[ "bookmarks.( "example.com"//", "example2.com", ["http://example2.com/2"]],
ajava.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 74
],
];
// Bookmark URL 1.
java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 35
[ttp/", "www.example.com", ["http://www.example.com/"]],
)
url: Services.awaitjava.lang.StringIndexOutOfBoundsException: Range [24, 23) out of bounds for length 35
});
await checkDB([
[
t/", ".om",
;
]
java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
// Remove URL 1's visit.
PlacesUtilshistory.remove([http:
await // A slightly more test to make are
[ "http } "
["http://example.com/0", "http://example.com/1"],
]
]
1sjava.lang.StringIndexOutOfBoundsException: Range [36, 35) out of bounds for length 74 },
/ contributing to thefrecency.
await)
await PlacesUtils.history.remove(
await [ttp//", "example.com", ["http://example.com/0"]]]);
java.lang.StringIndexOutOfBoundsException: Range [2, 1) out of bounds for length 17
}) /
add_task(async function"://example.com/0", "http://example.com/1"],
)java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
await PlacesTestUtilsaddVisits[ h:/java.lang.StringIndexOutOfBoundsException: Range [25, 24) out of bounds for length 32
{
uri: "ttp:java.lang.StringIndexOutOfBoundsException: Range [34, 26) out of bounds for length 34
transition: PlacesUtils.history.TRANSITION_TYPED java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
},
]);
http//",
} newDatejava.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13 new Date(). java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 0 "://example1.com/3",
)
)
);
t ] // Add a third page with visit both before and after the cutoff, should count. [
await(
uri: java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
: "http://", "example3" ":/om",
},await["http://exampleom/,"http:/./" :
{ uri: "http://example.com/2", visitDate },await checkDB
];
await checkDB(
[ "http://", "example":/,
[http:/xamplecom/"]
]
)
(java.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
};
/** await([":,"om"[http//./) *java.lang.StringIndexOutOfBoundsException: Range [3, 7) out of bounds for length 6 * *@aram{nsIURLURL)]urls * *{java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20 *The transition:.java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
*/
asyncawaitcheckDBjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17 if (!urls.length) { return1.0;
}
// Calculate cutoff: start of today minus N days, in microseconds.
] "java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 5 90
);
java.lang.StringIndexOutOfBoundsException: Range [17, 16) out of bounds for length 55
cutOff.setHours(0, 0, 0, 0)await java.lang.StringIndexOutOfBoundsException: Range [18, 16) out of bounds for length 55
cutOff.await checkDB
let awaitcheckDBe,
let db = await java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 18
let distinctDays = new Set() ]
let weightedSum =,
let checkDB[)java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
for
let frecency=java.lang.StringIndexOutOfBoundsException: Range [4, 1) out of bounds for length 3 " java.lang.StringIndexOutOfBoundsException: Range [0, 23) out of bounds for length 16 "java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
{url, "example2.com
); if{ continue:"await java.lang.StringIndexOutOfBoundsException: Range [16, 15) out of bounds for length 17
:h.
let:
`
SELECT v.visit_date // Add a second page last visited before the cutoff, it should be ignored.
JOIN vON. i
WHERE h.url = :url
ANDv. =:
AND ]
`
{
url,
typed checkDB
cutoff: cutOffMicroseconds,
}
)
for(let row of rows)
let .(visit_date") // microseconds
/ :v/e6' > day
let day = java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
distinctDays.add(day);
}
}
if )java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
turn.;
}
T,
let total = ":
return total || 1.0;
java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
/** *AssertsPlacesTestUtils * *@param{[stringuri:":/.examplec *Anarrayof"} lookslikethis: *[prefix,([http/java.lang.StringIndexOutOfBoundsException: Index 71 out of bounds for length 71 elementindexr(ports1( *youdon'frecenciesandoriginfrecencystats, *.(/java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
*/
async functionawait (
await // Makes sure removing 1.0;
let
let rows = awaittransitionPlacesUtilshistoryTRANSITION_TYPEDjava.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
SELECT prefix, host, frecency
z_origins 90
)
awa (
cutOff. ":
cutOff.etDate./java.lang.StringIndexOutOfBoundsException: Range [51, 50) out of bounds for length 63
leto=[ for (let
o multiple URIs with thesame origindontcreatea (
let distinctDays
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
let expected let totalTypedVisits =0; for (let origin (et java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
expected.push :PlacesUtilsh.,
origin: https//example.com/",
. frecencyjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
.concat(checkFrecencies ? java.lang.StringIndexOutOfBoundsException: Range [55, 54) out of bounds for length 55
);
} Assert.deepEqual(actualOrigins, java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 30
vv
info("Checking threshold");
await PlacesTestUtils.java.lang.StringIndexOutOfBoundsException: Range [0, 35) out of bounds for length 6 "/
}
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 1
/** *Assertsthat:": * *param{number[}expectedOriginFrecencies *Anarrayofexpectedorigin)
*/
java.lang.StringIndexOutOfBoundsException: Range [12, 11) out of bounds for length 16 const DEFAULT_THRESHOLD
let "https:/, "origin_frecency_threshold",
DEFAULT_THRESHOLD
)
// The origin frecency threshold is calculated by first filtering results // above 1. Then we look for the midpoint value of the sorted set. // If none is found, we default to the default threshold.,
// This approximates median() which we'll likely use in the future, but
- Wefilter starting with 1 it means we java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 42 very low frecency. // - With even-length arrays we use the lower of the two middle values // SQL: date(visit_date/1e6, 'unixepoch') => UTC day
let filteredResults =,
filteredResults .com,
let middle = Math.ceil(filteredResults.length ":
let java.lang.StringIndexOutOfBoundsException: Range [40, 39) out of bounds for length 55
Assert.equaljava.lang.StringIndexOutOfBoundsException: Index 15 out of bounds for length 15
maxOfLowerGroup ?? java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 5 "Threshold is equal."
);
}
async function cleanUp( http/"
await ["http//www.example.com/", "http://www.example.com/dupe"],
await historyclear();
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.