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

#ifndef WindowGlobalTypes_h
#define WindowGlobalTypes_h

#include "mozilla/Attributes.h"
#include "IPCMessageStart.h"
#include "mozilla/RefPtr.h"
#include "nsString.h"
#include "nsTArray.h"
#include "nsTHashtable.h"
#include "mozilla/MozPromise.h"
#include "mozilla/OperatorNewExtensions.h"
#include "mozilla/UniquePtr.h"
#include "mozilla/ipc/ByteBuf.h"
#include "mozilla/ipc/FileDescriptor.h"
#include "mozilla/ipc/IPCForwards.h"
#include "mozilla/ipc/Shmem.h"

// Headers for typedefs
#include "mozilla/dom/WindowContext.h"
#include "mozilla/ipc/IPDLStructMember.h"
#include "nsITransportSecurityInfo.h"
#include "mozilla/net/NeckoChannelParams.h"
#include "mozilla/dom/DOMTypes.h"


//-----------------------------------------------------------------------------
// Declaration of the IPDL type |struct WindowGlobalInit|
//
namespace mozilla {
namespace dom {
class WindowGlobalInit final
{
private:
    typedef ::mozilla::dom::WindowContextInitializer WindowContextInitializer;
    typedef ::nsIPrincipal nsIPrincipal;
    typedef ::nsIURI nsIURI;
    typedef ::uint32_t uint32_t;
    typedef ::mozilla::net::CookieJarSettingsArgs CookieJarSettingsArgs;
    typedef ::nsITransportSecurityInfo nsITransportSecurityInfo;

public:
#ifdef __clang__
#  pragma clang diagnostic push
#  if __has_warning("-Wdefaulted-function-deleted")
#    pragma clang diagnostic ignored "-Wdefaulted-function-deleted"
#  endif
#endif
    WindowGlobalInit() = default;
#ifdef __clang__
#  pragma clang diagnostic pop
#endif

    MOZ_IMPLICIT WindowGlobalInit(
            const WindowContextInitializer& _context,
            nsIPrincipal* _principal,
            nsIPrincipal* _storagePrincipal,
            nsIURI* _documentURI,
            const bool& _isInitialDocument,
            const bool& _blockAllMixedContent,
            const bool& _upgradeInsecureRequests,
            const uint32_t& _sandboxFlags,
            const CookieJarSettingsArgs& _cookieJarSettings,
            const uint32_t& _httpsOnlyStatus,
            nsITransportSecurityInfo* _securityInfo) :
        context_(_context),
        principal_(_principal),
        storagePrincipal_(_storagePrincipal),
        documentURI_(_documentURI),
        isInitialDocument_(_isInitialDocument),
        blockAllMixedContent_(_blockAllMixedContent),
        upgradeInsecureRequests_(_upgradeInsecureRequests),
        cookieJarSettings_(_cookieJarSettings),
        securityInfo_(_securityInfo),
        sandboxFlags_(_sandboxFlags),
        httpsOnlyStatus_(_httpsOnlyStatus)
    {
    }

    MOZ_IMPLICIT WindowGlobalInit(
            WindowContextInitializer&& _context,
            RefPtr<nsIPrincipal>&& _principal,
            RefPtr<nsIPrincipal>&& _storagePrincipal,
            RefPtr<nsIURI>&& _documentURI,
            bool&& _isInitialDocument,
            bool&& _blockAllMixedContent,
            bool&& _upgradeInsecureRequests,
            uint32_t&& _sandboxFlags,
            CookieJarSettingsArgs&& _cookieJarSettings,
            uint32_t&& _httpsOnlyStatus,
            RefPtr<nsITransportSecurityInfo>&& _securityInfo) :
        context_(std::move(_context)),
        principal_(std::move(_principal)),
        storagePrincipal_(std::move(_storagePrincipal)),
        documentURI_(std::move(_documentURI)),
        isInitialDocument_(std::move(_isInitialDocument)),
        blockAllMixedContent_(std::move(_blockAllMixedContent)),
        upgradeInsecureRequests_(std::move(_upgradeInsecureRequests)),
        cookieJarSettings_(std::move(_cookieJarSettings)),
        securityInfo_(std::move(_securityInfo)),
        sandboxFlags_(std::move(_sandboxFlags)),
        httpsOnlyStatus_(std::move(_httpsOnlyStatus))
    {
    }

    WindowContextInitializer&
    context()
    {
        return context_;
    }
    const WindowContextInitializer&
    context() const
    {
        return context_;
    }

    RefPtr<nsIPrincipal>&
    principal()
    {
        return principal_;
    }
    nsIPrincipal*
    principal() const
    {
        return principal_;
    }

    RefPtr<nsIPrincipal>&
    storagePrincipal()
    {
        return storagePrincipal_;
    }
    nsIPrincipal*
    storagePrincipal() const
    {
        return storagePrincipal_;
    }

    RefPtr<nsIURI>&
    documentURI()
    {
        return documentURI_;
    }
    nsIURI*
    documentURI() const
    {
        return documentURI_;
    }

    bool&
    isInitialDocument()
    {
        return isInitialDocument_;
    }
    const bool&
    isInitialDocument() const
    {
        return isInitialDocument_;
    }

    bool&
    blockAllMixedContent()
    {
        return blockAllMixedContent_;
    }
    const bool&
    blockAllMixedContent() const
    {
        return blockAllMixedContent_;
    }

    bool&
    upgradeInsecureRequests()
    {
        return upgradeInsecureRequests_;
    }
    const bool&
    upgradeInsecureRequests() const
    {
        return upgradeInsecureRequests_;
    }

    uint32_t&
    sandboxFlags()
    {
        return sandboxFlags_;
    }
    const uint32_t&
    sandboxFlags() const
    {
        return sandboxFlags_;
    }

    CookieJarSettingsArgs&
    cookieJarSettings()
    {
        return cookieJarSettings_;
    }
    const CookieJarSettingsArgs&
    cookieJarSettings() const
    {
        return cookieJarSettings_;
    }

    uint32_t&
    httpsOnlyStatus()
    {
        return httpsOnlyStatus_;
    }
    const uint32_t&
    httpsOnlyStatus() const
    {
        return httpsOnlyStatus_;
    }

    RefPtr<nsITransportSecurityInfo>&
    securityInfo()
    {
        return securityInfo_;
    }
    nsITransportSecurityInfo*
    securityInfo() const
    {
        return securityInfo_;
    }

private:
    void
    StaticAssertions() const;
    ::mozilla::ipc::IPDLStructMember<WindowContextInitializer> context_;
    ::mozilla::ipc::IPDLStructMember<RefPtr<nsIPrincipal>> principal_;
    ::mozilla::ipc::IPDLStructMember<RefPtr<nsIPrincipal>> storagePrincipal_;
    ::mozilla::ipc::IPDLStructMember<RefPtr<nsIURI>> documentURI_;
    ::mozilla::ipc::IPDLStructMember<bool> isInitialDocument_;
    ::mozilla::ipc::IPDLStructMember<bool> blockAllMixedContent_;
    ::mozilla::ipc::IPDLStructMember<bool> upgradeInsecureRequests_;
    ::mozilla::ipc::IPDLStructMember<CookieJarSettingsArgs> cookieJarSettings_;
    ::mozilla::ipc::IPDLStructMember<RefPtr<nsITransportSecurityInfo>> securityInfo_;
    ::mozilla::ipc::IPDLStructMember<uint32_t> sandboxFlags_;
    ::mozilla::ipc::IPDLStructMember<uint32_t> httpsOnlyStatus_;
};
} // namespace dom
} // namespace mozilla

namespace IPC {
template<>
struct ParamTraits <::mozilla::dom::WindowGlobalInit>
{
    typedef ::mozilla::dom::WindowGlobalInit paramType;
    static void
    Write(
            IPC::MessageWriter* aWriter,
            const paramType& aVar);
    static IPC::ReadResult<paramType>
    Read(IPC::MessageReader* aReader);
};
} // namespace IPC

#endif // ifndef WindowGlobalTypes_h
