docshell/shistory/nsSHTransaction.cpp
author Wes Kocher <wkocher@mozilla.com>
Thu, 09 Jul 2015 17:43:08 -0700
changeset 252149 fb0c6275d5c2b06d8467c9aa69ff2e50af16ecef
parent 244260 d4315c423b63778c73f8b45fe7d15e408ec8c55e
child 356591 d2fbb471ba83f0f92d0d06e62311c0ff530794e6
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/. */

#include "nsSHTransaction.h"
#include "nsISHEntry.h"

nsSHTransaction::nsSHTransaction()
  : mPersist(true)
  , mPrev(nullptr)
{
}

nsSHTransaction::~nsSHTransaction()
{
}

NS_IMPL_ADDREF(nsSHTransaction)
NS_IMPL_RELEASE(nsSHTransaction)

NS_INTERFACE_MAP_BEGIN(nsSHTransaction)
  NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsISHTransaction)
  NS_INTERFACE_MAP_ENTRY(nsISHTransaction)
NS_INTERFACE_MAP_END

NS_IMETHODIMP
nsSHTransaction::Create(nsISHEntry* aSHEntry, nsISHTransaction* aPrev)
{
  SetSHEntry(aSHEntry);
  if (aPrev) {
    aPrev->SetNext(this);
  }

  SetPrev(aPrev);
  return NS_OK;
}

NS_IMETHODIMP
nsSHTransaction::GetSHEntry(nsISHEntry** aResult)
{
  NS_ENSURE_ARG_POINTER(aResult);
  *aResult = mSHEntry;
  NS_IF_ADDREF(*aResult);
  return NS_OK;
}

NS_IMETHODIMP
nsSHTransaction::SetSHEntry(nsISHEntry* aSHEntry)
{
  mSHEntry = aSHEntry;
  return NS_OK;
}

NS_IMETHODIMP
nsSHTransaction::GetNext(nsISHTransaction** aResult)
{
  NS_ENSURE_ARG_POINTER(aResult);
  *aResult = mNext;
  NS_IF_ADDREF(*aResult);
  return NS_OK;
}

NS_IMETHODIMP
nsSHTransaction::SetNext(nsISHTransaction* aNext)
{
  if (aNext) {
    NS_ENSURE_SUCCESS(aNext->SetPrev(this), NS_ERROR_FAILURE);
  }

  mNext = aNext;
  return NS_OK;
}

NS_IMETHODIMP
nsSHTransaction::SetPrev(nsISHTransaction* aPrev)
{
  /* This is weak reference to parent. Do not Addref it */
  mPrev = aPrev;
  return NS_OK;
}

nsresult
nsSHTransaction::GetPrev(nsISHTransaction** aResult)
{
  NS_ENSURE_ARG_POINTER(aResult);
  *aResult = mPrev;
  NS_IF_ADDREF(*aResult);
  return NS_OK;
}

NS_IMETHODIMP
nsSHTransaction::SetPersist(bool aPersist)
{
  mPersist = aPersist;
  return NS_OK;
}

NS_IMETHODIMP
nsSHTransaction::GetPersist(bool* aPersist)
{
  NS_ENSURE_ARG_POINTER(aPersist);

  *aPersist = mPersist;
  return NS_OK;
}