зеркало из https://github.com/mozilla/gecko-dev.git
bug 872137 - Make history menu use PromptService asynchronously r=wesj
--HG-- extra : rebase_source : 59a3dc928967a3cf89001f77fb4d7ffd8cd07129
This commit is contained in:
Родитель
bfca27cbde
Коммит
6f7c102372
|
@ -63,6 +63,10 @@ XPCOMUtils.defineLazyGetter(this, "Prompt", function() {
|
|||
return temp.Prompt;
|
||||
});
|
||||
|
||||
XPCOMUtils.defineLazyServiceGetter(this, "uuidgen",
|
||||
"@mozilla.org/uuid-generator;1",
|
||||
"nsIUUIDGenerator");
|
||||
|
||||
// Lazily-loaded browser scripts:
|
||||
[
|
||||
["HelperApps", "chrome://browser/content/HelperApps.js"],
|
||||
|
@ -244,6 +248,7 @@ var BrowserApp = {
|
|||
_tabs: [],
|
||||
_selectedTab: null,
|
||||
_prefObservers: [],
|
||||
_promptHandlers: {},
|
||||
|
||||
get isTablet() {
|
||||
let sysInfo = Cc["@mozilla.org/system-info;1"].getService(Ci.nsIPropertyBag2);
|
||||
|
@ -293,6 +298,7 @@ var BrowserApp = {
|
|||
Services.obs.addObserver(this, "FormHistory:Init", false);
|
||||
Services.obs.addObserver(this, "gather-telemetry", false);
|
||||
Services.obs.addObserver(this, "keyword-search", false);
|
||||
Services.obs.addObserver(this, "Prompt:Reply", false);
|
||||
|
||||
Services.obs.addObserver(this, "sessionstore-state-purge-complete", false);
|
||||
|
||||
|
@ -1418,6 +1424,18 @@ var BrowserApp = {
|
|||
browser.contentDocument.mozCancelFullScreen();
|
||||
break;
|
||||
|
||||
case "Prompt:Reply":
|
||||
{
|
||||
let data = JSON.parse(aData);
|
||||
let guid = data.guid;
|
||||
let handler = this._promptHandlers[guid];
|
||||
if (!handler)
|
||||
break;
|
||||
this._promptHandlers[guid];
|
||||
handler(data);
|
||||
}
|
||||
break;
|
||||
|
||||
case "Viewport:Change":
|
||||
if (this.isBrowserContentDocumentDisplayed())
|
||||
this.selectedTab.setViewport(JSON.parse(aData));
|
||||
|
@ -1482,9 +1500,12 @@ var BrowserApp = {
|
|||
// selecting selIndex(if fromIndex<=selIndex<=toIndex)
|
||||
showHistory: function(fromIndex, toIndex, selIndex) {
|
||||
let browser = this.selectedBrowser;
|
||||
let guid = uuidgen.generateUUID().toString();
|
||||
let result = {
|
||||
type: "Prompt:Show",
|
||||
multiple: false,
|
||||
async: true,
|
||||
guid: guid,
|
||||
selected: [],
|
||||
listitems: []
|
||||
};
|
||||
|
@ -1501,11 +1522,13 @@ var BrowserApp = {
|
|||
result.listitems.push(item);
|
||||
result.selected.push(i == selIndex);
|
||||
}
|
||||
let data = JSON.parse(sendMessageToJava(result));
|
||||
let selected = data.button;
|
||||
if (selected == -1)
|
||||
return;
|
||||
browser.gotoIndex(toIndex-selected);
|
||||
this._promptHandlers[guid] = function (data) {
|
||||
let selected = data.button;
|
||||
if (selected == -1)
|
||||
return;
|
||||
browser.gotoIndex(toIndex-selected);
|
||||
};
|
||||
sendMessageToJava(result);
|
||||
},
|
||||
};
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче