зеркало из https://github.com/mozilla/gecko-dev.git
Bug 823547 - Store the snippets version along with the snippets.
r=adw
This commit is contained in:
Родитель
9a5322769a
Коммит
e52726a4d4
|
@ -134,6 +134,7 @@ function ensureSnippetsMapThen(aCallback)
|
|||
// Populate the cache from the persistent storage.
|
||||
let cache = new Map();
|
||||
for (let key of [ "snippets-last-update",
|
||||
"snippets-cached-version",
|
||||
"snippets" ]) {
|
||||
cache.set(key, localStorage[key]);
|
||||
}
|
||||
|
@ -229,6 +230,14 @@ function loadSnippets()
|
|||
if (!gSnippetsMap)
|
||||
throw new Error("Snippets map has not properly been initialized");
|
||||
|
||||
// Check cached snippets version.
|
||||
let cachedVersion = gSnippetsMap.get("snippets-cached-version") || 0;
|
||||
let currentVersion = document.documentElement.getAttribute("snippetsVersion");
|
||||
if (cachedVersion < currentVersion) {
|
||||
// The cached snippets are old and unsupported, restart from scratch.
|
||||
gSnippetsMap.clear();
|
||||
}
|
||||
|
||||
// Check last snippets update.
|
||||
let lastUpdate = gSnippetsMap.get("snippets-last-update");
|
||||
let updateURL = document.documentElement.getAttribute("snippetsURL");
|
||||
|
@ -253,6 +262,7 @@ function loadSnippets()
|
|||
{
|
||||
if (xhr.status == 200) {
|
||||
gSnippetsMap.set("snippets", xhr.responseText);
|
||||
gSnippetsMap.set("snippets-cached-version", currentVersion);
|
||||
}
|
||||
showSnippets();
|
||||
};
|
||||
|
|
|
@ -2635,6 +2635,7 @@ function BrowserOnAboutPageLoad(doc) {
|
|||
// Inject search engine and snippets URL.
|
||||
let docElt = doc.documentElement;
|
||||
docElt.setAttribute("snippetsURL", AboutHomeUtils.snippetsURL);
|
||||
docElt.setAttribute("snippetsVersion", AboutHomeUtils.snippetsVersion);
|
||||
docElt.setAttribute("searchEngineName",
|
||||
AboutHomeUtils.defaultSearchEngine.name);
|
||||
docElt.setAttribute("searchEngineURL",
|
||||
|
|
|
@ -6,6 +6,8 @@ XPCOMUtils.defineLazyModuleGetter(this, "Promise",
|
|||
"resource://gre/modules/commonjs/sdk/core/promise.js");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "Task",
|
||||
"resource://gre/modules/Task.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "AboutHomeUtils",
|
||||
"resource:///modules/AboutHomeUtils.jsm");
|
||||
|
||||
registerCleanupFunction(function() {
|
||||
// Ensure we don't pollute prefs for next tests.
|
||||
|
@ -156,6 +158,53 @@ let gTests = [
|
|||
}
|
||||
},
|
||||
|
||||
{
|
||||
desc: "Check default snippets are shown if cached version is old and fetch fails",
|
||||
setup: function (aSnippetsMap)
|
||||
{
|
||||
aSnippetsMap.set("snippets", "test");
|
||||
aSnippetsMap.set("snippets-cached-version", 0);
|
||||
},
|
||||
run: function (aSnippetsMap)
|
||||
{
|
||||
let doc = gBrowser.selectedTab.linkedBrowser.contentDocument;
|
||||
|
||||
let snippetsElt = doc.getElementById("snippets");
|
||||
ok(snippetsElt, "Found snippets element");
|
||||
is(snippetsElt.getElementsByTagName("span").length, 1,
|
||||
"A default snippet is present.");
|
||||
|
||||
ok(!aSnippetsMap.has("snippets"), "snippets have been properly cleared");
|
||||
ok(!aSnippetsMap.has("snippets-cached-version"),
|
||||
"cached-version has been properly cleared");
|
||||
ok(!aSnippetsMap.has("snippets-last-update"),
|
||||
"last-update has been properly cleared");
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
desc: "Check cached snippets are shown if cached version is current",
|
||||
setup: function (aSnippetsMap)
|
||||
{
|
||||
aSnippetsMap.set("snippets", "test");
|
||||
aSnippetsMap.set("snippets-cached-version", AboutHomeUtils.snippetsVersion);
|
||||
},
|
||||
run: function (aSnippetsMap)
|
||||
{
|
||||
let doc = gBrowser.selectedTab.linkedBrowser.contentDocument;
|
||||
|
||||
let snippetsElt = doc.getElementById("snippets");
|
||||
ok(snippetsElt, "Found snippets element");
|
||||
is(snippetsElt.innerHTML, "test", "Cached snippet is present.");
|
||||
|
||||
is(aSnippetsMap.get("snippets"), "test", "snippets still cached");
|
||||
is(aSnippetsMap.get("snippets-cached-version"),
|
||||
AboutHomeUtils.snippetsVersion,
|
||||
"cached-version is correct");
|
||||
ok(aSnippetsMap.has("snippets-last-update"), "last-update still exists");
|
||||
}
|
||||
},
|
||||
|
||||
];
|
||||
|
||||
function test()
|
||||
|
|
|
@ -15,7 +15,9 @@ const SNIPPETS_URL_PREF = "browser.aboutHomeSnippets.updateUrl";
|
|||
// Should be bumped up if the snippets content format changes.
|
||||
const STARTPAGE_VERSION = 4;
|
||||
|
||||
this.AboutHomeUtils = new Object();
|
||||
this.AboutHomeUtils = {
|
||||
get snippetsVersion() STARTPAGE_VERSION
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns an object containing the name and searchURL of the original default
|
||||
|
|
Загрузка…
Ссылка в новой задаче