//
// Automatically generated by ipdlc.
// Edit at your own risk
//

#ifndef PWebBrowserPersistDocument_h
#define PWebBrowserPersistDocument_h

#include "mozilla/Attributes.h"
#include "IPCMessageStart.h"
#include "ipc/IPCMessageUtils.h"
#include "mozilla/RefPtr.h"
#include "nsStringGlue.h"
#include "nsTArray.h"
#include "mozilla/ipc/ProtocolUtils.h"
#include "nsTHashtable.h"
#include "mozilla/OperatorNewExtensions.h"
#include "mozilla/ipc/InputStreamParams.h"


//-----------------------------------------------------------------------------
// Declaration of the IPDL type |struct WebBrowserPersistDocumentAttrs|
//
namespace mozilla {
class WebBrowserPersistDocumentAttrs final
{
private:

public:
    MOZ_IMPLICIT WebBrowserPersistDocumentAttrs();

    MOZ_IMPLICIT WebBrowserPersistDocumentAttrs(
            const bool& _isPrivate,
            const nsCString& _documentURI,
            const nsCString& _baseURI,
            const nsCString& _contentType,
            const nsCString& _characterSet,
            const nsString& _title,
            const nsString& _referrer,
            const nsString& _contentDisposition,
            const uint32_t& _cacheKey,
            const uint32_t& _persistFlags)
    {
        Init();
        Assign(_isPrivate, _documentURI, _baseURI, _contentType, _characterSet, _title, _referrer, _contentDisposition, _cacheKey, _persistFlags);
    }

    MOZ_IMPLICIT WebBrowserPersistDocumentAttrs(const WebBrowserPersistDocumentAttrs& _o)
    {
        Init();
        Assign((_o).isPrivate(), (_o).documentURI(), (_o).baseURI(), (_o).contentType(), (_o).characterSet(), (_o).title(), (_o).referrer(), (_o).contentDisposition(), (_o).cacheKey(), (_o).persistFlags());
    }

    ~WebBrowserPersistDocumentAttrs();

    void
    operator=(const WebBrowserPersistDocumentAttrs& _o)
    {
        Assign((_o).isPrivate(), (_o).documentURI(), (_o).baseURI(), (_o).contentType(), (_o).characterSet(), (_o).title(), (_o).referrer(), (_o).contentDisposition(), (_o).cacheKey(), (_o).persistFlags());
    }

    bool
    operator==(const WebBrowserPersistDocumentAttrs& _o) const;

    bool&
    isPrivate()
    {
        return isPrivate_;
    }
    const bool&
    isPrivate() const
    {
        return isPrivate_;
    }

    nsCString&
    documentURI()
    {
        return documentURI_;
    }
    const nsCString&
    documentURI() const
    {
        return documentURI_;
    }

    nsCString&
    baseURI()
    {
        return baseURI_;
    }
    const nsCString&
    baseURI() const
    {
        return baseURI_;
    }

    nsCString&
    contentType()
    {
        return contentType_;
    }
    const nsCString&
    contentType() const
    {
        return contentType_;
    }

    nsCString&
    characterSet()
    {
        return characterSet_;
    }
    const nsCString&
    characterSet() const
    {
        return characterSet_;
    }

    nsString&
    title()
    {
        return title_;
    }
    const nsString&
    title() const
    {
        return title_;
    }

    nsString&
    referrer()
    {
        return referrer_;
    }
    const nsString&
    referrer() const
    {
        return referrer_;
    }

    nsString&
    contentDisposition()
    {
        return contentDisposition_;
    }
    const nsString&
    contentDisposition() const
    {
        return contentDisposition_;
    }

    uint32_t&
    cacheKey()
    {
        return cacheKey_;
    }
    const uint32_t&
    cacheKey() const
    {
        return cacheKey_;
    }

    uint32_t&
    persistFlags()
    {
        return persistFlags_;
    }
    const uint32_t&
    persistFlags() const
    {
        return persistFlags_;
    }

private:
    void
    Init();

    void
    Assign(
            const bool& _isPrivate,
            const nsCString& _documentURI,
            const nsCString& _baseURI,
            const nsCString& _contentType,
            const nsCString& _characterSet,
            const nsString& _title,
            const nsString& _referrer,
            const nsString& _contentDisposition,
            const uint32_t& _cacheKey,
            const uint32_t& _persistFlags);

    bool isPrivate_;
    nsCString documentURI_;
    nsCString baseURI_;
    nsCString contentType_;
    nsCString characterSet_;
    nsString title_;
    nsString referrer_;
    nsString contentDisposition_;
    uint32_t cacheKey_;
    uint32_t persistFlags_;
};
} // namespace mozilla


//-----------------------------------------------------------------------------
// Declaration of the IPDL type |struct WebBrowserPersistURIMapEntry|
//
namespace mozilla {
class WebBrowserPersistURIMapEntry final
{
private:

public:
    MOZ_IMPLICIT WebBrowserPersistURIMapEntry();

    MOZ_IMPLICIT WebBrowserPersistURIMapEntry(
            const nsCString& _mapFrom,
            const nsCString& _mapTo)
    {
        Init();
        Assign(_mapFrom, _mapTo);
    }

    MOZ_IMPLICIT WebBrowserPersistURIMapEntry(const WebBrowserPersistURIMapEntry& _o)
    {
        Init();
        Assign((_o).mapFrom(), (_o).mapTo());
    }

    ~WebBrowserPersistURIMapEntry();

    void
    operator=(const WebBrowserPersistURIMapEntry& _o)
    {
        Assign((_o).mapFrom(), (_o).mapTo());
    }

    bool
    operator==(const WebBrowserPersistURIMapEntry& _o) const;

    nsCString&
    mapFrom()
    {
        return mapFrom_;
    }
    const nsCString&
    mapFrom() const
    {
        return mapFrom_;
    }

    nsCString&
    mapTo()
    {
        return mapTo_;
    }
    const nsCString&
    mapTo() const
    {
        return mapTo_;
    }

private:
    void
    Init();

    void
    Assign(
            const nsCString& _mapFrom,
            const nsCString& _mapTo);

    nsCString mapFrom_;
    nsCString mapTo_;
};
} // namespace mozilla

namespace mozilla {
class WebBrowserPersistURIMapEntry;
} // namespace mozilla

//-----------------------------------------------------------------------------
// Declaration of the IPDL type |struct WebBrowserPersistURIMap|
//
namespace mozilla {
class WebBrowserPersistURIMap final
{
private:
    typedef mozilla::WebBrowserPersistURIMapEntry WebBrowserPersistURIMapEntry;

public:
    MOZ_IMPLICIT WebBrowserPersistURIMap();

    MOZ_IMPLICIT WebBrowserPersistURIMap(
            const nsTArray<WebBrowserPersistURIMapEntry>& _mapURIs,
            const nsCString& _targetBaseURI)
    {
        Init();
        Assign(_mapURIs, _targetBaseURI);
    }

    MOZ_IMPLICIT WebBrowserPersistURIMap(const WebBrowserPersistURIMap& _o)
    {
        Init();
        Assign((_o).mapURIs(), (_o).targetBaseURI());
    }

    ~WebBrowserPersistURIMap();

    void
    operator=(const WebBrowserPersistURIMap& _o)
    {
        Assign((_o).mapURIs(), (_o).targetBaseURI());
    }

    bool
    operator==(const WebBrowserPersistURIMap& _o) const;

    nsTArray<WebBrowserPersistURIMapEntry>&
    mapURIs()
    {
        return mapURIs_;
    }
    const nsTArray<WebBrowserPersistURIMapEntry>&
    mapURIs() const
    {
        return mapURIs_;
    }

    nsCString&
    targetBaseURI()
    {
        return targetBaseURI_;
    }
    const nsCString&
    targetBaseURI() const
    {
        return targetBaseURI_;
    }

private:
    void
    Init();

    void
    Assign(
            const nsTArray<WebBrowserPersistURIMapEntry>& _mapURIs,
            const nsCString& _targetBaseURI);

    nsTArray<WebBrowserPersistURIMapEntry> mapURIs_;
    nsCString targetBaseURI_;
};
} // namespace mozilla

namespace mozilla {
class PWebBrowserPersistDocumentParent;
} // namespace mozilla
namespace mozilla {
class PWebBrowserPersistDocumentChild;
} // namespace mozilla

//-----------------------------------------------------------------------------
// Code common to PWebBrowserPersistDocumentChild and PWebBrowserPersistDocumentParent
//
namespace mozilla {
namespace PWebBrowserPersistDocument {

nsresult
CreateEndpoints(
        base::ProcessId aParentDestPid,
        base::ProcessId aChildDestPid,
        mozilla::ipc::Endpoint<mozilla::PWebBrowserPersistDocumentParent>* aParent,
        mozilla::ipc::Endpoint<mozilla::PWebBrowserPersistDocumentChild>* aChild);

enum State {
    __Dead,
    __Null,
    __Error,
    __Dying,
    START,
    MAIN,
    FAILED,
    __Start = START
};

enum MessageType {
    PWebBrowserPersistDocumentStart = PWebBrowserPersistDocumentMsgStart << 16,
    Msg_Attributes__ID,
    Msg_InitFailure__ID,
    Msg_SetPersistFlags__ID,
    Msg_PWebBrowserPersistResourcesConstructor__ID,
    Reply_PWebBrowserPersistResourcesConstructor__ID,
    Msg_PWebBrowserPersistSerializeConstructor__ID,
    Reply_PWebBrowserPersistSerializeConstructor__ID,
    Msg___delete____ID,
    Reply___delete____ID,
    PWebBrowserPersistDocumentEnd
};

bool
Transition(
        mozilla::ipc::Trigger trigger,
        State* next);

IPC::Message*
Msg_Attributes(int32_t routingId);

IPC::Message*
Msg_InitFailure(int32_t routingId);

IPC::Message*
Msg_SetPersistFlags(int32_t routingId);

IPC::Message*
Msg_PWebBrowserPersistResourcesConstructor(int32_t routingId);
IPC::Message*
Reply_PWebBrowserPersistResourcesConstructor(int32_t routingId);

IPC::Message*
Msg_PWebBrowserPersistSerializeConstructor(int32_t routingId);
IPC::Message*
Reply_PWebBrowserPersistSerializeConstructor(int32_t routingId);

IPC::Message*
Msg___delete__(int32_t routingId);
IPC::Message*
Reply___delete__(int32_t routingId);



} // namespace PWebBrowserPersistDocument
} // namespace mozilla

#endif // ifndef PWebBrowserPersistDocument_h
