Index: reactos/sdk/include/psdk/urlmon.idl =================================================================== --- reactos/sdk/include/psdk/urlmon.idl (revision 74175) +++ reactos/sdk/include/psdk/urlmon.idl (working copy) @@ -1565,7 +1565,25 @@ } +[ + object, + uuid(cd45f185-1b21-48e2-967b-ead743a8914e), + pointer_default(unique) +] +interface IZoneIdentifier : IUnknown +{ + HRESULT GetId( + [out] DWORD *pdwZone); + HRESULT SetId( + [in] DWORD dwZone); + + HRESULT Remove(); + +} + + + typedef struct _tagSOFTDISTINFO { ULONG cbSize; @@ -2061,6 +2079,7 @@ cpp_quote("DEFINE_GUID(CLSID_InternetSecurityManager, 0x7b8a2d94, 0x0ac9, 0x11d1, 0x89, 0x6c, 0x00, 0xc0, 0x4f, 0xB6, 0xbf, 0xc4);") cpp_quote("DEFINE_GUID(CLSID_InternetZoneManager, 0x7B8A2D95, 0x0AC9, 0x11D1, 0x89, 0x6C, 0x00, 0xC0, 0x4F, 0xB6, 0xBF, 0xC4);") +cpp_quote("DEFINE_GUID(CLSID_PersistentZoneIdentifier, 0x0968E258, 0x16C7, 0x4DBA, 0xAA, 0x86, 0x46, 0x2D, 0xD6, 0x1E, 0x31, 0xA3);") cpp_quote("DEFINE_GUID(IID_IAsyncMoniker, 0x79EAC9D3, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);") cpp_quote("DEFINE_GUID(IID_IAsyncBindCtx, 0x79EAC9D4, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);") cpp_quote("DEFINE_GUID(CLSID_StdURLMoniker, 0x79EAC9E0, 0xBAF9, 0x11CE, 0x8C, 0x82, 0x00, 0xAA, 0x00, 0x4B, 0xA9, 0x0B);") Index: rostests/apitests/com/CMakeLists.txt =================================================================== --- rostests/apitests/com/CMakeLists.txt (revision 74175) +++ rostests/apitests/com/CMakeLists.txt (working copy) @@ -9,6 +9,7 @@ ole32.c shdocvw.c shell32.c + urlmon.c com_apitest.c testlist.c) Index: rostests/apitests/com/com_apitest.c =================================================================== --- rostests/apitests/com/com_apitest.c (revision 74175) +++ rostests/apitests/com/com_apitest.c (working copy) @@ -454,7 +454,8 @@ { ID_NAME(IID_IDriveFolderExtOld), TRUE }, { ID_NAME(IID_IDriveFolderExt), TRUE }, { ID_NAME(IID_IPinnedListOld), TRUE }, - { ID_NAME(IID_IPinnedList), TRUE } + { ID_NAME(IID_IPinnedList), TRUE }, + { ID_NAME(IID_IZoneIdentifier), TRUE } }; static const INT KnownInterfaceCount = RTL_NUMBER_OF(KnownInterfaces); Index: rostests/apitests/com/testlist.c =================================================================== --- rostests/apitests/com/testlist.c (revision 74175) +++ rostests/apitests/com/testlist.c (working copy) @@ -11,6 +11,7 @@ extern void func_ole32(void); extern void func_shdocvw(void); extern void func_shell32(void); +extern void func_urlmon(void); const struct test winetest_testlist[] = { @@ -22,6 +23,7 @@ { "ole32", func_ole32 }, { "shdocvw", func_shdocvw }, { "shell32", func_shell32 }, + { "urlmon", func_urlmon }, { 0, 0 } }; Index: rostests/apitests/com/urlmon.c =================================================================== --- rostests/apitests/com/urlmon.c (nonexistent) +++ rostests/apitests/com/urlmon.c (working copy) @@ -0,0 +1,31 @@ +/* + * PROJECT: ReactOS api tests + * LICENSE: LGPLv2.1+ - See COPYING.LIB in the top level directory + * PURPOSE: COM interface test for urlmon classes + * PROGRAMMER: Mark Jansen + */ + +#include "com_apitest.h" + +#define NDEBUG +#include + +static const CLASS_AND_INTERFACES ExpectedInterfaces[] = +{ + { + ID_NAME(CLSID_PersistentZoneIdentifier), + { + { 0x0, &IID_IZoneIdentifier }, + { 0x0, &IID_IUnknown }, + { 0x4, &IID_IPersistFile }, + { 0x4, &IID_IPersist }, + }, + L"Apartment" + }, +}; +static const INT ExpectedInterfaceCount = RTL_NUMBER_OF(ExpectedInterfaces); + +START_TEST(urlmon) +{ + TestClasses(L"urlmon", ExpectedInterfaces, ExpectedInterfaceCount); +}