1 /* Any copyright is dedicated to the Public Domain.
2 http://creativecommons.org/publicdomain/zero/1.0/ */
4 // Test cookie database migration from version 10 (prerelease Gecko 2.0) to the
5 // current version, presently 12.
8 var test_generator
= do_run_test();
12 test_generator
.next();
15 function finish_test() {
16 executeSoon(function () {
17 test_generator
.return();
22 function* do_run_test() {
24 let profile
= do_get_profile();
26 // Start the cookieservice, to force creation of a database.
27 // Get the sessionCookies to join the initialization in cookie thread
28 Services
.cookies
.sessionCookies
;
31 do_close_profile(test_generator
);
34 // Remove the cookie file in order to create another database file.
35 do_get_cookie_file(profile
).remove(false);
37 // Create a schema 10 database.
38 let schema10db
= new CookieDatabaseConnection(
39 do_get_cookie_file(profile
),
43 let now
= Date
.now() * 1000;
44 let futureExpiry
= Math
.round(now
/ 1e6
+ 1000);
45 let pastExpiry
= Math
.round(now
/ 1e6
- 1000);
48 // 1) Unexpired, unique cookies.
49 for (let i
= 0; i
< 20; ++i
) {
50 let cookie
= new Cookie(
63 schema10db
.insertCookie(cookie
);
66 // 2) Expired, unique cookies.
67 for (let i
= 20; i
< 40; ++i
) {
68 let cookie
= new Cookie(
81 schema10db
.insertCookie(cookie
);
84 // 3) Many copies of the same cookie, some of which have expired and
85 // some of which have not.
86 for (let i
= 40; i
< 45; ++i
) {
87 let cookie
= new Cookie(
101 schema10db
.insertCookie(cookie
);
104 for (let i
= 45; i
< 50; ++i
) {
105 let cookie
= new Cookie(
119 schema10db
.insertCookie(cookie
);
122 for (let i
= 50; i
< 55; ++i
) {
123 let cookie
= new Cookie(
137 schema10db
.insertCookie(cookie
);
140 for (let i
= 55; i
< 60; ++i
) {
141 let cookie
= new Cookie(
155 schema10db
.insertCookie(cookie
);
163 // Load the database, forcing migration to the current schema version. Then
164 // test the expected set of cookies:
167 // 1) All unexpired, unique cookies exist.
168 Assert
.equal(Services
.cookies
.countCookiesFromHost("foo.com"), 20);
170 // 2) All expired, unique cookies exist.
171 Assert
.equal(Services
.cookies
.countCookiesFromHost("bar.com"), 20);
173 // 3) Only one cookie remains, and it's the one with the highest expiration
175 Assert
.equal(Services
.cookies
.countCookiesFromHost("baz.com"), 1);
176 let cookies
= Services
.cookies
.getCookiesFromHost("baz.com", {});
177 let cookie
= cookies
[0];
178 Assert
.equal(cookie
.expiry
, futureExpiry
+ 40);