diff --git a/docshell/base/CanonicalBrowsingContext.cpp b/docshell/base/CanonicalBrowsingContext.cpp index ba32717e2ca1..8ee99cbab27b 100644 --- a/docshell/base/CanonicalBrowsingContext.cpp +++ b/docshell/base/CanonicalBrowsingContext.cpp @@ -259,28 +259,24 @@ nsISHistory* CanonicalBrowsingContext::GetSessionHistory() { return mSessionHistory; } -static uint64_t gNextHistoryEntryId = 0; - -UniquePtr +UniquePtr CanonicalBrowsingContext::CreateSessionHistoryEntryForLoad( nsDocShellLoadState* aLoadState, nsIChannel* aChannel) { MOZ_ASSERT(GetSessionHistory(), "Creating an entry but session history is not enabled for this " "browsing context!"); - uint64_t id = ++gNextHistoryEntryId; RefPtr entry = new SessionHistoryEntry(GetSessionHistory(), aLoadState, aChannel); - mLoadingEntries.AppendElement(SessionHistoryEntryAndId(id, entry)); - return MakeUnique( - id, MakeUnique(entry->GetInfo())); + mLoadingEntries.AppendElement(entry); + return MakeUnique(entry->Info()); } void CanonicalBrowsingContext::SessionHistoryCommit( uint64_t aSessionHistoryEntryId) { for (size_t i = 0; i < mLoadingEntries.Length(); ++i) { - if (mLoadingEntries[i].mId == aSessionHistoryEntryId) { + if (mLoadingEntries[i]->Info().Id() == aSessionHistoryEntryId) { RefPtr oldActiveEntry = mActiveEntry.forget(); - mActiveEntry = mLoadingEntries[i].mEntry; + mActiveEntry = mLoadingEntries[i]; mLoadingEntries.RemoveElementAt(i); if (IsTop()) { GetSessionHistory()->AddEntry(mActiveEntry, diff --git a/docshell/base/CanonicalBrowsingContext.h b/docshell/base/CanonicalBrowsingContext.h index eb28f0c53410..8e066815a9c8 100644 --- a/docshell/base/CanonicalBrowsingContext.h +++ b/docshell/base/CanonicalBrowsingContext.h @@ -32,18 +32,10 @@ namespace dom { class BrowserParent; class MediaController; -struct SessionHistoryInfoAndId; +class SessionHistoryInfo; class SessionHistoryEntry; class WindowGlobalParent; -struct SessionHistoryEntryAndId { - SessionHistoryEntryAndId(uint64_t aId, SessionHistoryEntry* aEntry) - : mId(aId), mEntry(aEntry) {} - - uint64_t mId; - RefPtr mEntry; -}; - // CanonicalBrowsingContext is a BrowsingContext living in the parent // process, with whatever extra data that a BrowsingContext in the // parent needs. @@ -99,7 +91,7 @@ class CanonicalBrowsingContext final : public BrowsingContext { Nullable GetTopChromeWindow(); nsISHistory* GetSessionHistory(); - UniquePtr CreateSessionHistoryEntryForLoad( + UniquePtr CreateSessionHistoryEntryForLoad( nsDocShellLoadState* aLoadState, nsIChannel* aChannel); void SessionHistoryCommit(uint64_t aSessionHistoryEntryId); @@ -249,7 +241,7 @@ class CanonicalBrowsingContext final : public BrowsingContext { RefPtr mCurrentLoad; - nsTArray mLoadingEntries; + nsTArray> mLoadingEntries; RefPtr mActiveEntry; RefPtr mSecureBrowserUI; diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp index 9a79d3dbcf1e..a61c2cde1158 100644 --- a/docshell/base/nsDocShell.cpp +++ b/docshell/base/nsDocShell.cpp @@ -346,7 +346,6 @@ nsDocShell::nsDocShell(BrowsingContext* aBrowsingContext, mHistoryID(aBrowsingContext->GetHistoryID()), mContentWindowID(aContentWindowID), mBrowsingContext(aBrowsingContext), - mLoadingEntryId(PR_UINT64_MAX), mForcedCharset(nullptr), mParentCharset(nullptr), mTreeOwner(nullptr), @@ -5318,14 +5317,16 @@ nsresult nsDocShell::Embed(nsIContentViewer* aContentViewer, if (StaticPrefs::fission_sessionHistoryInParent()) { mActiveEntry = nullptr; mLoadingEntry.swap(mActiveEntry); - if (XRE_IsParentProcess()) { - mBrowsingContext->Canonical()->SessionHistoryCommit(mLoadingEntryId); - } else { - ContentChild* cc = ContentChild::GetSingleton(); - mozilla::Unused << cc->SendHistoryCommit(mBrowsingContext, - mLoadingEntryId); + if (mActiveEntry) { + if (XRE_IsParentProcess()) { + mBrowsingContext->Canonical()->SessionHistoryCommit( + mActiveEntry->Id()); + } else { + ContentChild* cc = ContentChild::GetSingleton(); + mozilla::Unused << cc->SendHistoryCommit(mBrowsingContext, + mActiveEntry->Id()); + } } - mLoadingEntryId = 0; } } @@ -9346,10 +9347,9 @@ nsresult nsDocShell::DoURILoad(nsDocShellLoadState* aLoadState, // FIXME We still have a ton of codepaths that don't pass through // DocumentLoadListener, so probably need to create session history info // in more places. - if (aLoadState->GetSessionHistoryID() != 0) { + if (aLoadState->GetSessionHistoryInfo()) { mLoadingEntry = - MakeUnique(aLoadState->GetSessionHistoryInfo()); - mLoadingEntryId = aLoadState->GetSessionHistoryID(); + MakeUnique(*aLoadState->GetSessionHistoryInfo()); } // open a channel for the url @@ -12443,8 +12443,7 @@ bool nsDocShell::GetIsAttemptingToNavigate() { return false; } -void nsDocShell::SetLoadingSessionHistoryInfoAndId( - const mozilla::dom::SessionHistoryInfoAndId& aInfoAndId) { - mLoadingEntry = MakeUnique(*aInfoAndId.mInfo); - mLoadingEntryId = aInfoAndId.mId; +void nsDocShell::SetLoadingSessionHistoryInfo( + const mozilla::dom::SessionHistoryInfo& aInfo) { + mLoadingEntry = MakeUnique(aInfo); } diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h index 7562d9111ad1..b99453d22c4b 100644 --- a/docshell/base/nsDocShell.h +++ b/docshell/base/nsDocShell.h @@ -65,7 +65,6 @@ class ClientInfo; class ClientSource; class EventTarget; class SessionHistoryInfo; -struct SessionHistoryInfoAndId; } // namespace dom namespace net { class LoadInfo; @@ -467,8 +466,8 @@ class nsDocShell final : public nsDocLoader, static uint32_t ComputeURILoaderFlags( mozilla::dom::BrowsingContext* aBrowsingContext, uint32_t aLoadType); - void SetLoadingSessionHistoryInfoAndId( - const mozilla::dom::SessionHistoryInfoAndId& aInfoAndId); + void SetLoadingSessionHistoryInfo( + const mozilla::dom::SessionHistoryInfo& aInfo); private: // member functions friend class nsDSURIContentListener; @@ -1070,7 +1069,6 @@ class nsDocShell final : public nsDocLoader, // These are only set when fission.sessionHistoryInParent is set. mozilla::UniquePtr mActiveEntry; mozilla::UniquePtr mLoadingEntry; - uint64_t mLoadingEntryId; // Holds a weak pointer to a RestorePresentationEvent object if any that // holds a weak pointer back to us. We use this pointer to possibly revoke diff --git a/docshell/base/nsDocShellLoadState.cpp b/docshell/base/nsDocShellLoadState.cpp index cbcb71db8d47..f30918926344 100644 --- a/docshell/base/nsDocShellLoadState.cpp +++ b/docshell/base/nsDocShellLoadState.cpp @@ -499,17 +499,13 @@ void nsDocShellLoadState::SetSHEntry(nsISHEntry* aSHEntry) { } void nsDocShellLoadState::SetSessionHistoryInfo( - const mozilla::dom::SessionHistoryInfoAndId& aIdAndInfo) { - mSessionHistoryInfo = aIdAndInfo; + const mozilla::dom::SessionHistoryInfo& aInfo) { + mSessionHistoryInfo = MakeUnique(aInfo); } -uint64_t nsDocShellLoadState::GetSessionHistoryID() const { - return mSessionHistoryInfo.mId; -} - -const mozilla::dom::SessionHistoryInfo& +const mozilla::dom::SessionHistoryInfo* nsDocShellLoadState::GetSessionHistoryInfo() const { - return *mSessionHistoryInfo.mInfo; + return mSessionHistoryInfo.get(); } const nsString& nsDocShellLoadState::Target() const { return mTarget; } diff --git a/docshell/base/nsDocShellLoadState.h b/docshell/base/nsDocShellLoadState.h index 747965657077..3d7ae6a52d4b 100644 --- a/docshell/base/nsDocShellLoadState.h +++ b/docshell/base/nsDocShellLoadState.h @@ -132,11 +132,9 @@ class nsDocShellLoadState final { void SetSHEntry(nsISHEntry* aSHEntry); - const mozilla::dom::SessionHistoryInfo& GetSessionHistoryInfo() const; - uint64_t GetSessionHistoryID() const; + const mozilla::dom::SessionHistoryInfo* GetSessionHistoryInfo() const; - void SetSessionHistoryInfo( - const mozilla::dom::SessionHistoryInfoAndId& aIdAndInfo); + void SetSessionHistoryInfo(const mozilla::dom::SessionHistoryInfo& aInfo); const nsString& Target() const; @@ -365,7 +363,7 @@ class nsDocShellLoadState final { nsCOMPtr mSHEntry; // Session history info for the load - mozilla::dom::SessionHistoryInfoAndId mSessionHistoryInfo; + mozilla::UniquePtr mSessionHistoryInfo; // Target for load, like _content, _blank etc. nsString mTarget; diff --git a/docshell/shistory/SessionHistoryEntry.cpp b/docshell/shistory/SessionHistoryEntry.cpp index dc1979ec7b54..4a0fae77d22e 100644 --- a/docshell/shistory/SessionHistoryEntry.cpp +++ b/docshell/shistory/SessionHistoryEntry.cpp @@ -13,6 +13,8 @@ namespace mozilla { namespace dom { +static uint64_t gNextHistoryEntryId = 0; + SessionHistoryInfo::SessionHistoryInfo(nsDocShellLoadState* aLoadState, nsIChannel* aChannel) : mURI(aLoadState->URI()), @@ -25,6 +27,7 @@ SessionHistoryInfo::SessionHistoryInfo(nsDocShellLoadState* aLoadState, mScrollPositionY(0), mSrcdocData(aLoadState->SrcdocData()), mBaseURI(aLoadState->BaseURI()), + mId(++gNextHistoryEntryId), mLoadReplace(aLoadState->LoadReplace()), mURIWasModified(false), /* FIXME Should this be aLoadState->IsSrcdocLoad()? */ @@ -756,81 +759,75 @@ SessionHistoryEntry::SyncTreesForSubframeNavigation( namespace ipc { -void IPDLParamTraits::Write( +void IPDLParamTraits::Write( IPC::Message* aMsg, IProtocol* aActor, - const dom::SessionHistoryInfoAndId& aParam) { - WriteIPDLParam(aMsg, aActor, aParam.mId); - - const dom::SessionHistoryInfo* info = aParam.mInfo.get(); + const dom::SessionHistoryInfo& aParam) { dom::ClonedMessageData stateData; - if (info->mStateData) { - JSStructuredCloneData& data = info->mStateData->Data(); + if (aParam.mStateData) { + JSStructuredCloneData& data = aParam.mStateData->Data(); auto iter = data.Start(); bool success; stateData.data().data = data.Borrow(iter, data.Size(), &success); if (NS_WARN_IF(!success)) { return; } - MOZ_ASSERT(info->mStateData->PortIdentifiers().IsEmpty() && - info->mStateData->BlobImpls().IsEmpty() && - info->mStateData->InputStreams().IsEmpty()); + MOZ_ASSERT(aParam.mStateData->PortIdentifiers().IsEmpty() && + aParam.mStateData->BlobImpls().IsEmpty() && + aParam.mStateData->InputStreams().IsEmpty()); } - WriteIPDLParam(aMsg, aActor, info->mURI); - WriteIPDLParam(aMsg, aActor, info->mOriginalURI); - WriteIPDLParam(aMsg, aActor, info->mResultPrincipalURI); - WriteIPDLParam(aMsg, aActor, info->mReferrerInfo); - WriteIPDLParam(aMsg, aActor, info->mTitle); - WriteIPDLParam(aMsg, aActor, info->mPostData); - WriteIPDLParam(aMsg, aActor, info->mLoadType); - WriteIPDLParam(aMsg, aActor, info->mScrollPositionX); - WriteIPDLParam(aMsg, aActor, info->mScrollPositionY); + WriteIPDLParam(aMsg, aActor, aParam.mURI); + WriteIPDLParam(aMsg, aActor, aParam.mOriginalURI); + WriteIPDLParam(aMsg, aActor, aParam.mResultPrincipalURI); + WriteIPDLParam(aMsg, aActor, aParam.mReferrerInfo); + WriteIPDLParam(aMsg, aActor, aParam.mTitle); + WriteIPDLParam(aMsg, aActor, aParam.mPostData); + WriteIPDLParam(aMsg, aActor, aParam.mLoadType); + WriteIPDLParam(aMsg, aActor, aParam.mScrollPositionX); + WriteIPDLParam(aMsg, aActor, aParam.mScrollPositionY); WriteIPDLParam(aMsg, aActor, stateData); - WriteIPDLParam(aMsg, aActor, info->mSrcdocData); - WriteIPDLParam(aMsg, aActor, info->mBaseURI); - WriteIPDLParam(aMsg, aActor, info->mLoadReplace); - WriteIPDLParam(aMsg, aActor, info->mURIWasModified); - WriteIPDLParam(aMsg, aActor, info->mIsSrcdocEntry); - WriteIPDLParam(aMsg, aActor, info->mScrollRestorationIsManual); - WriteIPDLParam(aMsg, aActor, info->mPersist); + WriteIPDLParam(aMsg, aActor, aParam.mSrcdocData); + WriteIPDLParam(aMsg, aActor, aParam.mBaseURI); + WriteIPDLParam(aMsg, aActor, aParam.mId); + WriteIPDLParam(aMsg, aActor, aParam.mLoadReplace); + WriteIPDLParam(aMsg, aActor, aParam.mURIWasModified); + WriteIPDLParam(aMsg, aActor, aParam.mIsSrcdocEntry); + WriteIPDLParam(aMsg, aActor, aParam.mScrollRestorationIsManual); + WriteIPDLParam(aMsg, aActor, aParam.mPersist); } -bool IPDLParamTraits::Read( +bool IPDLParamTraits::Read( const IPC::Message* aMsg, PickleIterator* aIter, IProtocol* aActor, - dom::SessionHistoryInfoAndId* aResult) { - uint64_t id; - UniquePtr info = - MakeUnique(); + dom::SessionHistoryInfo* aResult) { dom::ClonedMessageData stateData; - if (!ReadIPDLParam(aMsg, aIter, aActor, &id) || - !ReadIPDLParam(aMsg, aIter, aActor, &info->mURI) || - !ReadIPDLParam(aMsg, aIter, aActor, &info->mOriginalURI) || - !ReadIPDLParam(aMsg, aIter, aActor, &info->mResultPrincipalURI) || - !ReadIPDLParam(aMsg, aIter, aActor, &info->mReferrerInfo) || - !ReadIPDLParam(aMsg, aIter, aActor, &info->mTitle) || - !ReadIPDLParam(aMsg, aIter, aActor, &info->mPostData) || - !ReadIPDLParam(aMsg, aIter, aActor, &info->mLoadType) || - !ReadIPDLParam(aMsg, aIter, aActor, &info->mScrollPositionX) || - !ReadIPDLParam(aMsg, aIter, aActor, &info->mScrollPositionY) || + if (!ReadIPDLParam(aMsg, aIter, aActor, &aResult->mURI) || + !ReadIPDLParam(aMsg, aIter, aActor, &aResult->mOriginalURI) || + !ReadIPDLParam(aMsg, aIter, aActor, &aResult->mResultPrincipalURI) || + !ReadIPDLParam(aMsg, aIter, aActor, &aResult->mReferrerInfo) || + !ReadIPDLParam(aMsg, aIter, aActor, &aResult->mTitle) || + !ReadIPDLParam(aMsg, aIter, aActor, &aResult->mPostData) || + !ReadIPDLParam(aMsg, aIter, aActor, &aResult->mLoadType) || + !ReadIPDLParam(aMsg, aIter, aActor, &aResult->mScrollPositionX) || + !ReadIPDLParam(aMsg, aIter, aActor, &aResult->mScrollPositionY) || !ReadIPDLParam(aMsg, aIter, aActor, &stateData) || - !ReadIPDLParam(aMsg, aIter, aActor, &info->mSrcdocData) || - !ReadIPDLParam(aMsg, aIter, aActor, &info->mBaseURI) || - !ReadIPDLParam(aMsg, aIter, aActor, &info->mLoadReplace) || - !ReadIPDLParam(aMsg, aIter, aActor, &info->mURIWasModified) || - !ReadIPDLParam(aMsg, aIter, aActor, &info->mIsSrcdocEntry) || - !ReadIPDLParam(aMsg, aIter, aActor, &info->mScrollRestorationIsManual) || - !ReadIPDLParam(aMsg, aIter, aActor, &info->mPersist)) { + !ReadIPDLParam(aMsg, aIter, aActor, &aResult->mSrcdocData) || + !ReadIPDLParam(aMsg, aIter, aActor, &aResult->mBaseURI) || + !ReadIPDLParam(aMsg, aIter, aActor, &aResult->mId) || + !ReadIPDLParam(aMsg, aIter, aActor, &aResult->mLoadReplace) || + !ReadIPDLParam(aMsg, aIter, aActor, &aResult->mURIWasModified) || + !ReadIPDLParam(aMsg, aIter, aActor, &aResult->mIsSrcdocEntry) || + !ReadIPDLParam(aMsg, aIter, aActor, + &aResult->mScrollRestorationIsManual) || + !ReadIPDLParam(aMsg, aIter, aActor, &aResult->mPersist)) { aActor->FatalError("Error reading fields for SessionHistoryInfo"); return false; } - info->mStateData = new nsStructuredCloneContainer(); + aResult->mStateData = new nsStructuredCloneContainer(); if (aActor->GetSide() == ChildSide) { - UnpackClonedMessageDataForChild(stateData, *info->mStateData); + UnpackClonedMessageDataForChild(stateData, *aResult->mStateData); } else { - UnpackClonedMessageDataForParent(stateData, *info->mStateData); + UnpackClonedMessageDataForParent(stateData, *aResult->mStateData); } - aResult->mId = id; - aResult->mInfo = std::move(info); return true; } diff --git a/docshell/shistory/SessionHistoryEntry.h b/docshell/shistory/SessionHistoryEntry.h index fa6108952688..f9bc1d163966 100644 --- a/docshell/shistory/SessionHistoryEntry.h +++ b/docshell/shistory/SessionHistoryEntry.h @@ -21,7 +21,6 @@ class nsIURI; namespace mozilla { namespace dom { -struct SessionHistoryInfoAndId; class SHEntrySharedParentState; // SessionHistoryInfo stores session history data for a load. It can be sent @@ -37,9 +36,11 @@ class SessionHistoryInfo { nsIURI* GetURI() const { return mURI; } + uint64_t Id() const { return mId; } + private: friend class SessionHistoryEntry; - friend struct mozilla::ipc::IPDLParamTraits; + friend struct mozilla::ipc::IPDLParamTraits; nsCOMPtr mURI; nsCOMPtr mOriginalURI; @@ -53,6 +54,7 @@ class SessionHistoryInfo { RefPtr mStateData; nsString mSrcdocData; nsCOMPtr mBaseURI; + uint64_t mId = 0; bool mLoadReplace = false; bool mURIWasModified = false; bool mIsSrcdocEntry = false; @@ -60,28 +62,6 @@ class SessionHistoryInfo { bool mPersist = false; }; -// XXX Not sure that the id shouldn't just live in SessionHistoryInfo. -struct SessionHistoryInfoAndId { - SessionHistoryInfoAndId() = default; - SessionHistoryInfoAndId(uint64_t aId, - UniquePtr aInfo) - : mId(aId), mInfo(std::move(aInfo)) {} - SessionHistoryInfoAndId(SessionHistoryInfoAndId&& aInfoAndId) = default; - SessionHistoryInfoAndId& operator=( - const SessionHistoryInfoAndId& aInfoAndId) { - mId = aInfoAndId.mId; - mInfo = MakeUnique(*aInfoAndId.mInfo); - return *this; - } - bool operator==(const SessionHistoryInfoAndId& aInfoAndId) const { - return mId == aInfoAndId.mId && !mInfo == !aInfoAndId.mInfo && - *mInfo == *aInfoAndId.mInfo; - } - - uint64_t mId = 0; - UniquePtr mInfo; -}; - // SessionHistoryEntry is used to store session history data in the parent // process. It holds a SessionHistoryInfo, some state shared amongst multiple // SessionHistoryEntries, a parent and children. @@ -93,7 +73,7 @@ class SessionHistoryEntry : public nsISHEntry { NS_DECL_ISUPPORTS NS_DECL_NSISHENTRY - const SessionHistoryInfo& GetInfo() const { return *mInfo; } + const SessionHistoryInfo& Info() const { return *mInfo; } private: virtual ~SessionHistoryEntry() = default; @@ -111,11 +91,11 @@ class SessionHistoryEntry : public nsISHEntry { namespace ipc { template <> -struct IPDLParamTraits { +struct IPDLParamTraits { static void Write(IPC::Message* aMsg, IProtocol* aActor, - const dom::SessionHistoryInfoAndId& aParam); + const dom::SessionHistoryInfo& aParam); static bool Read(const IPC::Message* aMsg, PickleIterator* aIter, - IProtocol* aActor, dom::SessionHistoryInfoAndId* aResult); + IProtocol* aActor, dom::SessionHistoryInfo* aResult); }; } // namespace ipc diff --git a/netwerk/ipc/DocumentChannelChild.cpp b/netwerk/ipc/DocumentChannelChild.cpp index bf67c1ed16d5..c498d3c0698f 100644 --- a/netwerk/ipc/DocumentChannelChild.cpp +++ b/netwerk/ipc/DocumentChannelChild.cpp @@ -216,10 +216,7 @@ IPCResult DocumentChannelChild::RecvRedirectToRealChannel( nsDocShell* docShell = GetDocShell(); if (docShell && aArgs.sessionHistoryInfo().isSome()) { - SessionHistoryInfoAndId& infoAndId = aArgs.sessionHistoryInfo().ref(); - if (infoAndId.mId != 0) { - docShell->SetLoadingSessionHistoryInfoAndId(infoAndId); - } + docShell->SetLoadingSessionHistoryInfo(aArgs.sessionHistoryInfo().ref()); } // transfer any properties. This appears to be entirely a content-side diff --git a/netwerk/ipc/DocumentLoadListener.cpp b/netwerk/ipc/DocumentLoadListener.cpp index b90b5751f136..e40aec8ba684 100644 --- a/netwerk/ipc/DocumentLoadListener.cpp +++ b/netwerk/ipc/DocumentLoadListener.cpp @@ -1084,9 +1084,7 @@ void DocumentLoadListener::SerializeRedirectData( aArgs.loadStateLoadFlags() = mLoadStateLoadFlags; aArgs.loadStateLoadType() = mLoadStateLoadType; if (mSessionHistoryInfo) { - aArgs.sessionHistoryInfo().emplace( - mSessionHistoryInfo->mId, MakeUnique( - *mSessionHistoryInfo->mInfo)); + aArgs.sessionHistoryInfo().emplace(*mSessionHistoryInfo); } } diff --git a/netwerk/ipc/DocumentLoadListener.h b/netwerk/ipc/DocumentLoadListener.h index d54c7c1b641b..66a1f72b9ddb 100644 --- a/netwerk/ipc/DocumentLoadListener.h +++ b/netwerk/ipc/DocumentLoadListener.h @@ -403,7 +403,7 @@ class DocumentLoadListener : public nsIInterfaceRequestor, nsString mSrcdocData; nsCOMPtr mBaseURI; - mozilla::UniquePtr mSessionHistoryInfo; + mozilla::UniquePtr mSessionHistoryInfo; // Flags from nsDocShellLoadState::LoadFlags/Type that we want to make // available to the new docshell if we switch processes. diff --git a/netwerk/ipc/NeckoChannelParams.ipdlh b/netwerk/ipc/NeckoChannelParams.ipdlh index 20a6a4747dc8..f43c6eb7fd74 100644 --- a/netwerk/ipc/NeckoChannelParams.ipdlh +++ b/netwerk/ipc/NeckoChannelParams.ipdlh @@ -24,7 +24,7 @@ using class mozilla::TimeStamp from "mozilla/TimeStamp.h"; using refcounted class nsIPropertyBag2 from "mozilla/dom/PropertyBagUtils.h"; using refcounted class nsDOMNavigationTiming from "nsDOMNavigationTiming.h"; using nsILoadInfo::CrossOriginEmbedderPolicy from "nsILoadInfo.h"; -using moveonly mozilla::dom::SessionHistoryInfoAndId from "mozilla/dom/SessionHistoryEntry.h"; +using moveonly mozilla::dom::SessionHistoryInfo from "mozilla/dom/SessionHistoryEntry.h"; namespace mozilla { namespace net { @@ -467,7 +467,7 @@ struct RedirectToRealChannelArgs { nsDOMNavigationTiming? timing; nsString srcdocData; nsIURI baseUri; - SessionHistoryInfoAndId? sessionHistoryInfo; + SessionHistoryInfo? sessionHistoryInfo; uint64_t loadIdentifier; };