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

#ifndef PWebBrowserPersistDocumentParent_h
#define PWebBrowserPersistDocumentParent_h

#include "mozilla/PWebBrowserPersistDocument.h"
#ifdef DEBUG
#include "prenv.h"
#endif // DEBUG
#include "base/id_map.h"
#include "mozilla/ipc/MessageChannel.h"

namespace mozilla {
namespace dom {
class PContentParent;
} // namespace dom
} // namespace mozilla
namespace mozilla {
namespace dom {
class PContentChild;
} // namespace dom
} // namespace mozilla

namespace mozilla {
class PWebBrowserPersistResourcesParent;
} // namespace mozilla
namespace mozilla {
class PWebBrowserPersistResourcesChild;
} // namespace mozilla

namespace mozilla {
class PWebBrowserPersistSerializeParent;
} // namespace mozilla
namespace mozilla {
class PWebBrowserPersistSerializeChild;
} // namespace mozilla

namespace mozilla {
namespace dom {
class PContentParent;
} // namespace dom
} // namespace mozilla

namespace mozilla {
class PWebBrowserPersistSerializeParent;
} // namespace mozilla

namespace mozilla {
class PWebBrowserPersistResourcesParent;
} // namespace mozilla

namespace mozilla {


class PWebBrowserPersistDocumentParent :
    public mozilla::ipc::IProtocol
{
    friend class mozilla::dom::PContentParent;

    friend class mozilla::PWebBrowserPersistSerializeParent;

    friend class mozilla::PWebBrowserPersistResourcesParent;

protected:
    typedef mozilla::ipc::ActorHandle ActorHandle;
    typedef mozilla::ipc::BufferedInputStreamParams BufferedInputStreamParams;
    template<class FooSide> using Endpoint = mozilla::ipc::Endpoint<FooSide>;
    typedef mozilla::ipc::FileDescriptor FileDescriptor;
    typedef mozilla::ipc::FileInputStreamParams FileInputStreamParams;
    typedef mozilla::ipc::InputStreamParams InputStreamParams;
    typedef mozilla::ipc::MIMEInputStreamParams MIMEInputStreamParams;
    typedef mozilla::ipc::MultiplexInputStreamParams MultiplexInputStreamParams;
    typedef mozilla::ipc::OptionalInputStreamParams OptionalInputStreamParams;
    typedef mozilla::ipc::PartialFileInputStreamParams PartialFileInputStreamParams;
    typedef base::ProcessId ProcessId;
    typedef mozilla::ipc::ProtocolFdMapping ProtocolFdMapping;
    typedef mozilla::ipc::ProtocolId ProtocolId;
    typedef mozilla::ipc::RemoteInputStreamParams RemoteInputStreamParams;
    typedef mozilla::ipc::SameProcessInputStreamParams SameProcessInputStreamParams;
    typedef mozilla::ipc::Shmem Shmem;
    typedef mozilla::ipc::StringInputStreamParams StringInputStreamParams;
    typedef mozilla::ipc::TemporaryFileInputStreamParams TemporaryFileInputStreamParams;
    typedef mozilla::ipc::Transport Transport;
    typedef mozilla::ipc::TransportDescriptor TransportDescriptor;
    typedef mozilla::WebBrowserPersistDocumentAttrs WebBrowserPersistDocumentAttrs;
    typedef mozilla::WebBrowserPersistURIMap WebBrowserPersistURIMap;
    typedef mozilla::WebBrowserPersistURIMapEntry WebBrowserPersistURIMapEntry;
    typedef mozilla::void_t void_t;
    typedef mozilla::dom::PContentParent PContentParent;
    typedef mozilla::dom::PContentChild PContentChild;
    typedef mozilla::PWebBrowserPersistResourcesParent PWebBrowserPersistResourcesParent;
    typedef mozilla::PWebBrowserPersistResourcesChild PWebBrowserPersistResourcesChild;
    typedef mozilla::PWebBrowserPersistSerializeParent PWebBrowserPersistSerializeParent;
    typedef mozilla::PWebBrowserPersistSerializeChild PWebBrowserPersistSerializeChild;

    typedef PWebBrowserPersistDocument::State State;

    virtual bool
    RecvAttributes(
            const WebBrowserPersistDocumentAttrs& aAttrs,
            const OptionalInputStreamParams& postData,
            nsTArray<FileDescriptor>&& postFiles) = 0;
    virtual bool
    RecvInitFailure(const nsresult& aStatus) = 0;
    virtual PWebBrowserPersistResourcesParent*
    AllocPWebBrowserPersistResourcesParent() = 0;
    virtual bool
    DeallocPWebBrowserPersistResourcesParent(PWebBrowserPersistResourcesParent* aActor) = 0;
    virtual PWebBrowserPersistSerializeParent*
    AllocPWebBrowserPersistSerializeParent(
            const WebBrowserPersistURIMap& aMap,
            const nsCString& aRequestedContentType,
            const uint32_t& aEncoderFlags,
            const uint32_t& aWrapColumn) = 0;
    virtual bool
    DeallocPWebBrowserPersistSerializeParent(PWebBrowserPersistSerializeParent* aActor) = 0;

    virtual void
    ActorDestroy(ActorDestroyReason aWhy) = 0;

public:
    typedef mozilla::ipc::IProtocol ProtocolBase;
    typedef IPC::Message Message;
    typedef mozilla::ipc::MessageChannel Channel;
    typedef mozilla::ipc::IProtocol ChannelListener;
    typedef base::ProcessHandle ProcessHandle;
    typedef mozilla::ipc::MessageChannel MessageChannel;
    typedef mozilla::ipc::SharedMemory SharedMemory;
    typedef mozilla::ipc::Trigger Trigger;

public:
    MOZ_IMPLICIT PWebBrowserPersistDocumentParent();

    virtual ~PWebBrowserPersistDocumentParent();

    PContentParent*
    Manager() const;

    void
    ManagedPWebBrowserPersistResourcesParent(nsTArray<PWebBrowserPersistResourcesParent*>& aArr) const;
    const ManagedContainer<PWebBrowserPersistResourcesParent>&
    ManagedPWebBrowserPersistResourcesParent() const;

    void
    ManagedPWebBrowserPersistSerializeParent(nsTArray<PWebBrowserPersistSerializeParent*>& aArr) const;
    const ManagedContainer<PWebBrowserPersistSerializeParent>&
    ManagedPWebBrowserPersistSerializeParent() const;

    PWebBrowserPersistDocument::State
    state();

    MOZ_MUST_USE bool
    SendSetPersistFlags(const uint32_t& aNewFlags);

    MOZ_MUST_USE PWebBrowserPersistResourcesParent*
    SendPWebBrowserPersistResourcesConstructor();

    MOZ_MUST_USE PWebBrowserPersistResourcesParent*
    SendPWebBrowserPersistResourcesConstructor(PWebBrowserPersistResourcesParent* actor);

    MOZ_MUST_USE PWebBrowserPersistSerializeParent*
    SendPWebBrowserPersistSerializeConstructor(
            const WebBrowserPersistURIMap& aMap,
            const nsCString& aRequestedContentType,
            const uint32_t& aEncoderFlags,
            const uint32_t& aWrapColumn);

    MOZ_MUST_USE PWebBrowserPersistSerializeParent*
    SendPWebBrowserPersistSerializeConstructor(
            PWebBrowserPersistSerializeParent* actor,
            const WebBrowserPersistURIMap& aMap,
            const nsCString& aRequestedContentType,
            const uint32_t& aEncoderFlags,
            const uint32_t& aWrapColumn);

    MOZ_MUST_USE static bool
    Send__delete__(PWebBrowserPersistDocumentParent* actor);

    virtual void
    RemoveManagee(
            int32_t aProtocolId,
            ProtocolBase* aListener);

    virtual Result
    OnMessageReceived(const Message& msg__);

    virtual Result
    OnMessageReceived(
            const Message& msg__,
            Message*& reply__);

    virtual Result
    OnCallReceived(
            const Message& msg__,
            Message*& reply__);

    int32_t
    GetProtocolTypeId();

private:
    virtual const char*
    ProtocolName() const;

    void
    DestroySubtree(ActorDestroyReason why);

    void
    DeallocSubtree();

    template<typename T>
    void
    Write(
            const T& v__,
            Message* msg__)
    {
        IPC::WriteParam(msg__, v__);
    }

    template<typename T>
    bool
    Read(
            T* v__,
            const Message* msg__,
            PickleIterator* iter__)
    {
        return IPC::ReadParam(msg__, iter__, v__);
    }

    void
    Write(
            const StringInputStreamParams& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            StringInputStreamParams* v__,
            const Message* msg__,
            PickleIterator* iter__);

    void
    Write(
            const FileInputStreamParams& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            FileInputStreamParams* v__,
            const Message* msg__,
            PickleIterator* iter__);

    void
    Write(
            const PWebBrowserPersistSerializeParent* v__,
            Message* msg__,
            bool nullable__);

    MOZ_MUST_USE bool
    Read(
            PWebBrowserPersistSerializeParent** v__,
            const Message* msg__,
            PickleIterator* iter__,
            bool nullable__);

    void
    Write(
            const MultiplexInputStreamParams& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            MultiplexInputStreamParams* v__,
            const Message* msg__,
            PickleIterator* iter__);

    void
    Write(
            const PWebBrowserPersistDocumentParent* v__,
            Message* msg__,
            bool nullable__);

    MOZ_MUST_USE bool
    Read(
            PWebBrowserPersistDocumentParent** v__,
            const Message* msg__,
            PickleIterator* iter__,
            bool nullable__);

    void
    Write(
            const nsTArray<InputStreamParams>& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            nsTArray<InputStreamParams>* v__,
            const Message* msg__,
            PickleIterator* iter__);

    void
    Write(
            const OptionalInputStreamParams& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            OptionalInputStreamParams* v__,
            const Message* msg__,
            PickleIterator* iter__);

    void
    Write(
            const WebBrowserPersistURIMapEntry& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            WebBrowserPersistURIMapEntry* v__,
            const Message* msg__,
            PickleIterator* iter__);

    void
    Write(
            const WebBrowserPersistDocumentAttrs& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            WebBrowserPersistDocumentAttrs* v__,
            const Message* msg__,
            PickleIterator* iter__);

    void
    Write(
            const TemporaryFileInputStreamParams& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            TemporaryFileInputStreamParams* v__,
            const Message* msg__,
            PickleIterator* iter__);

    void
    Write(
            const WebBrowserPersistURIMap& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            WebBrowserPersistURIMap* v__,
            const Message* msg__,
            PickleIterator* iter__);

    void
    Write(
            const MIMEInputStreamParams& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            MIMEInputStreamParams* v__,
            const Message* msg__,
            PickleIterator* iter__);

    void
    Write(
            const nsTArray<WebBrowserPersistURIMapEntry>& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            nsTArray<WebBrowserPersistURIMapEntry>* v__,
            const Message* msg__,
            PickleIterator* iter__);

    void
    Write(
            const InputStreamParams& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            InputStreamParams* v__,
            const Message* msg__,
            PickleIterator* iter__);

    void
    Write(
            const BufferedInputStreamParams& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            BufferedInputStreamParams* v__,
            const Message* msg__,
            PickleIterator* iter__);

    void
    Write(
            const SameProcessInputStreamParams& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            SameProcessInputStreamParams* v__,
            const Message* msg__,
            PickleIterator* iter__);

    void
    Write(
            const PWebBrowserPersistResourcesParent* v__,
            Message* msg__,
            bool nullable__);

    MOZ_MUST_USE bool
    Read(
            PWebBrowserPersistResourcesParent** v__,
            const Message* msg__,
            PickleIterator* iter__,
            bool nullable__);

    void
    Write(
            const PartialFileInputStreamParams& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            PartialFileInputStreamParams* v__,
            const Message* msg__,
            PickleIterator* iter__);

    void
    Write(
            const RemoteInputStreamParams& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            RemoteInputStreamParams* v__,
            const Message* msg__,
            PickleIterator* iter__);

    void
    Write(
            const nsTArray<FileDescriptor>& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            nsTArray<FileDescriptor>* v__,
            const Message* msg__,
            PickleIterator* iter__);

    void
    Write(
            const FileDescriptor& v__,
            Message* msg__);

    MOZ_MUST_USE bool
    Read(
            FileDescriptor* v__,
            const Message* msg__,
            PickleIterator* iter__);

    State mState;
    ManagedContainer<PWebBrowserPersistResourcesParent> mManagedPWebBrowserPersistResourcesParent;
    ManagedContainer<PWebBrowserPersistSerializeParent> mManagedPWebBrowserPersistSerializeParent;
};


} // namespace mozilla

#if 0

//-----------------------------------------------------------------------------
// Skeleton implementation of abstract actor class

// Header file contents
namespace mozilla {
class WebBrowserPersistDocumentParent :
    public PWebBrowserPersistDocumentParent
{
    virtual bool
    RecvAttributes(
            const WebBrowserPersistDocumentAttrs& aAttrs,
            const OptionalInputStreamParams& postData,
            nsTArray<FileDescriptor>&& postFiles);

    virtual bool
    RecvInitFailure(const nsresult& aStatus);

    virtual PWebBrowserPersistResourcesParent*
    AllocPWebBrowserPersistResourcesParent();

    virtual bool
    DeallocPWebBrowserPersistResourcesParent(PWebBrowserPersistResourcesParent* aActor);

    virtual PWebBrowserPersistSerializeParent*
    AllocPWebBrowserPersistSerializeParent(
            const WebBrowserPersistURIMap& aMap,
            const nsCString& aRequestedContentType,
            const uint32_t& aEncoderFlags,
            const uint32_t& aWrapColumn);

    virtual bool
    DeallocPWebBrowserPersistSerializeParent(PWebBrowserPersistSerializeParent* aActor);

    virtual void
    ActorDestroy(ActorDestroyReason aWhy);

    MOZ_IMPLICIT WebBrowserPersistDocumentParent();
    virtual ~WebBrowserPersistDocumentParent();
};
} // namespace mozilla


// C++ file contents
namespace mozilla {
bool
WebBrowserPersistDocumentParent::RecvAttributes(
        const WebBrowserPersistDocumentAttrs& aAttrs,
        const OptionalInputStreamParams& postData,
        nsTArray<FileDescriptor>&& postFiles)
{
    return false;
}

bool
WebBrowserPersistDocumentParent::RecvInitFailure(const nsresult& aStatus)
{
    return false;
}

PWebBrowserPersistResourcesParent*
WebBrowserPersistDocumentParent::AllocPWebBrowserPersistResourcesParent()
{
    return 0;
}

bool
WebBrowserPersistDocumentParent::DeallocPWebBrowserPersistResourcesParent(PWebBrowserPersistResourcesParent* aActor)
{
    return false;
}

PWebBrowserPersistSerializeParent*
WebBrowserPersistDocumentParent::AllocPWebBrowserPersistSerializeParent(
        const WebBrowserPersistURIMap& aMap,
        const nsCString& aRequestedContentType,
        const uint32_t& aEncoderFlags,
        const uint32_t& aWrapColumn)
{
    return 0;
}

bool
WebBrowserPersistDocumentParent::DeallocPWebBrowserPersistSerializeParent(PWebBrowserPersistSerializeParent* aActor)
{
    return false;
}

void
WebBrowserPersistDocumentParent::ActorDestroy(ActorDestroyReason aWhy)
{
}

MOZ_IMPLICIT WebBrowserPersistDocumentParent::WebBrowserPersistDocumentParent()
{
    MOZ_COUNT_CTOR(WebBrowserPersistDocumentParent);
}

MOZ_IMPLICIT WebBrowserPersistDocumentParent::~WebBrowserPersistDocumentParent()
{
    MOZ_COUNT_DTOR(WebBrowserPersistDocumentParent);
}

} // namespace mozilla
#endif // if 0

#endif // ifndef PWebBrowserPersistDocumentParent_h
