/*
 * Copyright 2009 Piotr Caban for CodeWeavers
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 */

#include "urlmon.idl"

#ifndef __WIDL__
#define threading(model)
#define progid(str)
#define vi_progid(str)
#endif

#ifndef __midl
[
    helpstring("URL Moniker"),
    threading(apartment),
    uuid(79eac9e0-baf9-11ce-8c82-00aa004ba90b)
]
coclass StdURLMoniker { interface IMoniker; }
#endif

[
    helpstring("http: Asynchronous Pluggable Protocol Handler"),
    threading(apartment),
    uuid(79eac9e2-baf9-11ce-8c82-00aa004ba90b)
]
coclass HttpProtocol { interface IInternetProtocolEx; interface IInternetPriority; }

[
    helpstring("ftp: Asynchronous Pluggable Protocol Handler"),
    threading(apartment),
    uuid(79eac9e3-baf9-11ce-8c82-00aa004ba90b)
]
coclass FtpProtocol { interface IInternetProtocolEx; interface IInternetPriority; }

[
    helpstring("gopher: Asynchronous Pluggable Protocol Handler"),
    threading(apartment),
    uuid(79eac9e4-baf9-11ce-8c82-00aa004ba90b)
]
coclass GopherProtocol { interface IInternetProtocolEx; interface IInternetPriority; }

[
    helpstring("https: Asynchronous Pluggable Protocol Handler"),
    threading(apartment),
    uuid(79eac9e5-baf9-11ce-8c82-00aa004ba90b)
]
coclass HttpsProtocol { interface IInternetProtocolEx; interface IInternetPriority; }

[
    helpstring("mk: Asynchronous Pluggable Protocol Handler"),
    threading(apartment),
    uuid(79eac9e6-baf9-11ce-8c82-00aa004ba90b)
]
coclass MkProtocol { interface IInternetProtocolEx; interface IInternetPriority; }

#ifndef __midl
[
    helpstring("file:, local: Asynchronous Pluggable Protocol Handler"),
    threading(apartment),
    uuid(79eac9e7-baf9-11ce-8c82-00aa004ba90b)
]
coclass FileProtocol { interface IInternetProtocolEx; interface IInternetPriority; }
#endif

[
    helpstring("CDL: Asynchronous Pluggable Protocol Handler"),
    threading(apartment),
    uuid(3dd53d40-7b8b-11d0-b013-00aa0059ce02)
]
coclass CdlProtocol { interface IInternetProtocolEx; interface IInternetPriority; }

[
    helpstring("Security Manager"),
    threading(both),
    uuid(7b8a2d94-0ac9-11d1-896c-00c04fb6bfc4)
]
coclass InternetSecurityManager { interface IInternetSecurityManager; }

[
    helpstring("URL Zone Manager"),
    threading(both),
    uuid(7b8a2d95-0ac9-11d1-896c-00c04fb6bfc4)
]
coclass InternetZoneManager { interface IInternetZoneManagerEx2; }

[
    helpstring("URLMoniker ProxyStub Factory"),
    threading(apartment),
    uuid(79eac9f1-baf9-11ce-8c82-00aa004ba90b)
]
coclass PSFactoryBuffer { interface IPSFactoryBuffer; }

[
    helpstring("AP lzdhtml encoding/decoding Filter"),
    threading(apartment),
    uuid(8f6b0360-b80d-11d0-a9b3-006097942311)
]
coclass DeCompMimeFilter { interface IInternetProtocol; interface IInternetProtocolSink; }
