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
|
/* 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/. */
/**
* Test for Bug 646224. Make sure that after changing the URI via
* history.pushState, the history service has a title stored for the new URI.
**/
add_task(function* () {
let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, 'http://example.com');
let newTitlePromise = new Promise(resolve => {
let observer = {
onTitleChanged: function(uri, title) {
// If the uri of the page whose title is changing ends with 'new_page',
// then it's the result of our pushState.
if (/new_page$/.test(uri.spec)) {
resolve(title);
PlacesUtils.history.removeObserver(observer);
}
},
onBeginUpdateBatch: function() { },
onEndUpdateBatch: function() { },
onVisit: function() { },
onDeleteURI: function() { },
onClearHistory: function() { },
onPageChanged: function() { },
onDeleteVisits: function() { },
QueryInterface: XPCOMUtils.generateQI([Ci.nsINavHistoryObserver])
};
PlacesUtils.history.addObserver(observer, false);
});
yield ContentTask.spawn(tab.linkedBrowser, null, function* () {
let title = content.document.title;
content.history.pushState('', '', 'new_page');
Assert.ok(title, "Content window should initially have a title.");
});
let newtitle = yield newTitlePromise;
yield ContentTask.spawn(tab.linkedBrowser, { newtitle }, function* (args) {
Assert.equal(args.newtitle, content.document.title, "Title after pushstate.");
});
yield PlacesTestUtils.clearHistory();
gBrowser.removeTab(tab);
});
|