docshell/shistory/nsSHEntry.h
author Wes Kocher <wkocher@mozilla.com>
Thu, 09 Jul 2015 17:43:08 -0700
changeset 252149 fb0c6275d5c2b06d8467c9aa69ff2e50af16ecef
parent 244260 d4315c423b63778c73f8b45fe7d15e408ec8c55e
child 265139 c634c30551b04b8d214e7ae54c79af8d87b24445
permissions -rw-r--r--
Backed out 5 changesets (bug 1180921) for build failures in BasePrincipal.cpp Backed out changeset d8c1a2e11a9a (bug 1180921) Backed out changeset f4dd8c53df5f (bug 1180921) Backed out changeset b272a0ebf5d8 (bug 1180921) Backed out changeset 8e86b6a7d201 (bug 1180921) Backed out changeset bbdebd7b8881 (bug 1180921)

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */

#ifndef nsSHEntry_h
#define nsSHEntry_h

// Helper Classes
#include "nsCOMPtr.h"
#include "nsAutoPtr.h"
#include "nsCOMArray.h"
#include "nsString.h"
#include "mozilla/Attributes.h"

// Interfaces needed
#include "nsISHEntry.h"
#include "nsISHContainer.h"

class nsSHEntryShared;
class nsIInputStream;
class nsIURI;

class nsSHEntry final : public nsISHEntry,
                        public nsISHContainer,
                        public nsISHEntryInternal
{
public:
  nsSHEntry();
  nsSHEntry(const nsSHEntry& aOther);

  NS_DECL_ISUPPORTS
  NS_DECL_NSISHENTRY
  NS_DECL_NSISHENTRYINTERNAL
  NS_DECL_NSISHCONTAINER

  void DropPresentationState();

  static nsresult Startup();
  static void Shutdown();

private:
  ~nsSHEntry();

  // We share the state in here with other SHEntries which correspond to the
  // same document.
  nsRefPtr<nsSHEntryShared> mShared;

  // See nsSHEntry.idl for comments on these members.
  nsCOMPtr<nsIURI> mURI;
  nsCOMPtr<nsIURI> mReferrerURI;
  uint32_t mReferrerPolicy;
  nsString mTitle;
  nsCOMPtr<nsIInputStream> mPostData;
  uint32_t mLoadType;
  uint32_t mID;
  int32_t mScrollPositionX;
  int32_t mScrollPositionY;
  nsISHEntry* mParent;
  nsCOMArray<nsISHEntry> mChildren;
  bool mURIWasModified;
  nsCOMPtr<nsIStructuredCloneContainer> mStateData;
  bool mIsSrcdocEntry;
  nsString mSrcdocData;
  nsCOMPtr<nsIURI> mBaseURI;
};

#endif /* nsSHEntry_h */