gecko-dev/netwerk/base/nsIMultiPartChannel.idl
Peter Van der Beken 61f7e59993 Bug 1747033 - "Back" does not work correctly for pages with multipart/x-mixed-replace and history.replaceState. r=smaug,necko-reviewers,valentin
multipart/x-mixed-replace loads don't start a new load for parts other than the first,
they just call OnStartRequest/OnStopRequest for every part. The nsDocShell code was
trying to set the active entry to the loading entry for these loads, but because we
never started a new load after the first part, the loading entry would be null and we'd
just clear the active entry. history.replaceState would then try to replace the active
entry, but finding none it would just add a new one.

Differential Revision: https://phabricator.services.mozilla.com/D138464
2022-02-19 08:30:35 +00:00

52 lines
1.5 KiB
Plaintext

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "nsISupports.idl"
interface nsIChannel;
/**
* An interface to access the the base channel
* associated with a MultiPartChannel.
*/
[scriptable, builtinclass, uuid(4fefb490-5567-11e5-a837-0800200c9a66)]
interface nsIMultiPartChannel : nsISupports
{
/**
* readonly attribute to access the underlying channel
*/
readonly attribute nsIChannel baseChannel;
/**
* Attribute guaranteed to be different for different parts of
* the same multipart document.
*/
readonly attribute uint32_t partID;
[noscript] readonly attribute boolean isFirstPart;
/**
* Set to true when onStopRequest is received from the base channel.
* The listener can check this from its onStopRequest to determine
* whether more data can be expected.
*/
readonly attribute boolean isLastPart;
};
/**
* An interface that listeners can implement to receive a notification
* when the last part of the multi-part channel has finished, and the
* final OnStopRequest has been sent.
*/
[scriptable, uuid(b084959a-4fb9-41a5-88a0-d0f045ce75cf)]
interface nsIMultiPartChannelListener : nsISupports
{
/**
* Sent when all parts have finished and sent OnStopRequest.
*/
void onAfterLastPart(in nsresult status);
};