зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1192720 - prevent re-entrancy in event handling in tabbrowser.xml's _switcher, r=billm
--HG-- extra : commitid : AZ2VdDPujAp extra : rebase_source : 753ec1a07ea81fc35992065d67eaa1fedd93bbf7 extra : amend_source : d63d242d9f013f7aa5706b6b63d45d01d6390a07
This commit is contained in:
Родитель
b6fbc5df6b
Коммит
e91e642b81
|
@ -3086,6 +3086,9 @@
|
|||
STATE_LOADED: 2,
|
||||
STATE_UNLOADING: 3,
|
||||
|
||||
// re-entrancy guard:
|
||||
_processing: false,
|
||||
|
||||
getTabState: function(tab) {
|
||||
let state = this.tabState.get(tab);
|
||||
if (state === undefined) {
|
||||
|
@ -3228,7 +3231,6 @@
|
|||
}
|
||||
|
||||
this.lastVisibleTab = this.visibleTab;
|
||||
|
||||
},
|
||||
|
||||
assert: function(cond) {
|
||||
|
@ -3441,7 +3443,17 @@
|
|||
this.postActions();
|
||||
},
|
||||
|
||||
handleEvent: function(event) {
|
||||
handleEvent: function(event, delayed = false) {
|
||||
if (this._processing) {
|
||||
setTimeout(() => this.handleEvent(event, true), 0);
|
||||
return;
|
||||
}
|
||||
if (delayed && this.tabbrowser._switcher != this) {
|
||||
// if we delayed processing this event, we might be out of date, in which
|
||||
// case we drop the delayed events
|
||||
return;
|
||||
}
|
||||
this._processing = true;
|
||||
this.preActions();
|
||||
|
||||
if (event.type == "MozLayerTreeReady") {
|
||||
|
@ -3455,6 +3467,7 @@
|
|||
}
|
||||
|
||||
this.postActions();
|
||||
this._processing = false;
|
||||
},
|
||||
|
||||
/*
|
||||
|
|
Загрузка…
Ссылка в новой задаче