Bug 1539766 - handle the cancel case for e10s bp r=kershaw

Differential Revision: https://phabricator.services.mozilla.com/D25315

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Junior Hsu 2019-04-03 20:35:02 +00:00
Родитель de2dd15a33
Коммит 304908db26
1 изменённых файлов: 14 добавлений и 0 удалений

Просмотреть файл

@ -810,7 +810,20 @@ mozilla::ipc::IPCResult HttpChannelParent::RecvCancel(const nsresult& status) {
// May receive cancel before channel has been constructed!
if (mChannel) {
mChannel->Cancel(status);
// Once we receive |Cancel|, child will stop sending RecvBytesRead. Force
// the channel resumed if needed.
if (mSuspendedForFlowControl) {
LOG((" resume the channel due to e10s backpressure relief by cancel"));
Unused << mChannel->Resume();
mSuspendedForFlowControl = false;
}
}
// We won't need flow control anymore. Toggle the flag to avoid |Suspend|
// since OnDataAvailable could be off-main-thread.
mCacheNeedFlowControlInitialized = true;
mNeedFlowControl = false;
return IPC_OK();
}
@ -2129,6 +2142,7 @@ nsresult HttpChannelParent::SuspendForDiversion() {
// channel is suspended until all the data is consumed and no more e10s later.
// No point to have another redundant suspension.
if (mSuspendedForFlowControl) {
LOG((" resume the channel due to e10s backpressure relief by diversion"));
Unused << mChannel->Resume();
mSuspendedForFlowControl = false;
}