Bug 1280582 - Implement browser.history.onTitleChanged. r=bsilverberg,mixedpuppy

MozReview-Commit-ID: jzil9lDYnN

--HG--
extra : rebase_source : c7c000a17a1021f46d60ee7bc9d889c11a1bf384
This commit is contained in:
Tushar Saini (:shatur) 2017-03-08 21:18:19 +05:30
parent dd5be9dee0
commit fa1f43e7c6
3 changed files with 57 additions and 2 deletions

View File

@ -113,7 +113,9 @@ function getObserver() {
},
onBeginUpdateBatch: function() {},
onEndUpdateBatch: function() {},
onTitleChanged: function() {},
onTitleChanged: function(uri, title) {
this.emit("titleChanged", {url: uri.spec, title: title});
},
onClearHistory: function() {
this.emit("visitRemoved", {allHistory: true, urls: []});
},
@ -241,6 +243,17 @@ extensions.registerSchemaAPI("history", "addon_parent", context => {
getObserver().off("visitRemoved", listener);
};
}).api(),
onTitleChanged: new SingletonEventManager(context, "history.onTitleChanged", fire => {
let listener = (event, data) => {
fire.sync(data);
};
getObserver().on("titleChanged", listener);
return () => {
getObserver().off("titleChanged", listener);
};
}).api(),
},
};
});

View File

@ -310,6 +310,27 @@
}
}
]
},
{
"name": "onTitleChanged",
"type": "function",
"description": "Fired when the title of a URL is changed in the browser history.",
"parameters": [
{
"name": "changed",
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The URL for which the title has changed"
},
"title": {
"type": "string",
"description": "The new title for the URL."
}
}
}
]
}
]
}

View File

@ -422,6 +422,13 @@ add_task(function* test_on_visited() {
{date: new Date(visitDate += 1000)},
],
},
{
url: SINGLE_VISIT_URL,
title: "Title Changed",
visits: [
{date: new Date(visitDate)},
],
},
];
function background() {
@ -432,11 +439,16 @@ add_task(function* test_on_visited() {
return;
}
onVisitedData.push(data);
if (onVisitedData.length == 3) {
if (onVisitedData.length == 4) {
browser.test.sendMessage("on-visited-data", onVisitedData);
}
});
// Verifying onTitleChange Event along with onVisited event
browser.history.onTitleChanged.addListener(data => {
browser.test.sendMessage("on-title-changed-data", data);
});
browser.test.sendMessage("ready");
}
@ -483,5 +495,14 @@ add_task(function* test_on_visited() {
expected.visitCount = 2;
checkOnVisitedData(2, expected);
expected.url = PAGE_INFOS[2].url;
expected.title = PAGE_INFOS[2].title;
expected.time = PAGE_INFOS[2].visits[0].date.getTime();
expected.visitCount = 2;
checkOnVisitedData(3, expected);
let onTitleChangedData = yield extension.awaitMessage("on-title-changed-data");
equal(onTitleChangedData.title, "Title Changed", "ontitleChanged received the expected title.");
yield extension.unload();
});