From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- include/wincodecsdk.idl | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
diff --git a/include/wincodecsdk.idl b/include/wincodecsdk.idl index 8692eea3067..a12ca9226d1 100644 --- a/include/wincodecsdk.idl +++ b/include/wincodecsdk.idl @@ -366,6 +366,24 @@ interface IWICPersistStream : IPersistStream [in] BOOL fClearDirty); }
+[ + object, + uuid(449494bc-b468-4927-96d7-ba90d31ab505) +] +interface IWICStreamProvider : IUnknown +{ + HRESULT GetStream( + [out] IStream **stream); + + HRESULT GetPersistOptions( + [out] DWORD *options); + + HRESULT GetPreferredVendorGUID( + [out] GUID *guid); + + HRESULT RefreshStream(); +} + [ object, uuid(412d0c3a-9650-44fa-af5b-dd2a06c8e8fb)
From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/windowscodecs/tests/metadata.c | 420 +++++++++++++++------------- 1 file changed, 232 insertions(+), 188 deletions(-)
diff --git a/dlls/windowscodecs/tests/metadata.c b/dlls/windowscodecs/tests/metadata.c index 886e62833bf..2792a9b810e 100644 --- a/dlls/windowscodecs/tests/metadata.c +++ b/dlls/windowscodecs/tests/metadata.c @@ -34,6 +34,21 @@ #include "initguid.h" DEFINE_GUID(IID_MdbrUnknown, 0x00240e6f,0x3f23,0x4432,0xb0,0xcc,0x48,0xd5,0xbb,0xff,0x6c,0x36);
+#define check_interface(a, b, c) check_interface_(__LINE__, a, b, c) +static void check_interface_(unsigned int line, void *iface_ptr, REFIID iid, BOOL supported) +{ + IUnknown *iface = iface_ptr; + HRESULT hr, expected_hr; + IUnknown *unk; + + expected_hr = supported ? S_OK : E_NOINTERFACE; + + hr = IUnknown_QueryInterface(iface, iid, (void **)&unk); + ok_(__FILE__, line)(hr == expected_hr, "Got hr %#lx, expected %#lx.\n", hr, expected_hr); + if (SUCCEEDED(hr)) + IUnknown_Release(unk); +} + #define expect_blob(propvar, data, length) do { \ ok((propvar).vt == VT_BLOB, "unexpected vt: %i\n", (propvar).vt); \ if ((propvar).vt == VT_BLOB) { \ @@ -395,7 +410,6 @@ static void test_metadata_unknown(void) HRESULT hr; IWICMetadataReader *reader; IWICEnumMetadataItem *enumerator; - IWICMetadataBlockReader *blockreader; PROPVARIANT schema, id, value; ULONG items_returned;
@@ -404,6 +418,11 @@ static void test_metadata_unknown(void) ok(hr == S_OK, "CoCreateInstance failed, hr=%lx\n", hr); if (FAILED(hr)) return;
+ check_interface(reader, &IID_IWICMetadataReader, TRUE); + check_interface(reader, &IID_IPersist, TRUE); + check_interface(reader, &IID_IPersistStream, TRUE); + check_interface(reader, &IID_IWICPersistStream, TRUE); + load_stream((IUnknown*)reader, metadata_unknown, sizeof(metadata_unknown), WICPersistOptionDefault);
hr = IWICMetadataReader_GetEnumerator(reader, &enumerator); @@ -452,11 +471,7 @@ static void test_metadata_unknown(void) IWICEnumMetadataItem_Release(enumerator); }
- hr = IWICMetadataReader_QueryInterface(reader, &IID_IWICMetadataBlockReader, (void**)&blockreader); - ok(hr == E_NOINTERFACE, "QueryInterface failed, hr=%lx\n", hr); - - if (SUCCEEDED(hr)) - IWICMetadataBlockReader_Release(blockreader); + check_interface(reader, &IID_IWICMetadataBlockReader, FALSE);
IWICMetadataReader_Release(reader); } @@ -480,6 +495,11 @@ static void test_metadata_tEXt(void) ok(hr == S_OK, "CoCreateInstance failed, hr=%lx\n", hr); if (FAILED(hr)) return;
+ check_interface(reader, &IID_IWICMetadataReader, TRUE); + check_interface(reader, &IID_IPersist, TRUE); + check_interface(reader, &IID_IPersistStream, TRUE); + check_interface(reader, &IID_IWICPersistStream, TRUE); + hr = IWICMetadataReader_GetCount(reader, NULL); ok(hr == E_INVALIDARG, "GetCount failed, hr=%lx\n", hr);
@@ -598,6 +618,11 @@ static void test_metadata_gAMA(void) ok(hr == S_OK || broken(hr == REGDB_E_CLASSNOTREG) /*winxp*/, "CoCreateInstance failed, hr=%lx\n", hr); if (FAILED(hr)) return;
+ check_interface(reader, &IID_IWICMetadataReader, TRUE); + check_interface(reader, &IID_IPersist, TRUE); + check_interface(reader, &IID_IPersistStream, TRUE); + check_interface(reader, &IID_IWICPersistStream, TRUE); + load_stream((IUnknown*)reader, metadata_gAMA, sizeof(metadata_gAMA), WICPersistOptionDefault);
hr = IWICMetadataReader_GetMetadataFormat(reader, &format); @@ -656,6 +681,11 @@ static void test_metadata_cHRM(void) ok(hr == S_OK || broken(hr == REGDB_E_CLASSNOTREG) /*winxp*/, "CoCreateInstance failed, hr=%lx\n", hr); if (FAILED(hr)) return;
+ check_interface(reader, &IID_IWICMetadataReader, TRUE); + check_interface(reader, &IID_IPersist, TRUE); + check_interface(reader, &IID_IPersistStream, TRUE); + check_interface(reader, &IID_IWICPersistStream, TRUE); + load_stream((IUnknown*)reader, metadata_cHRM, sizeof(metadata_cHRM), WICPersistOptionDefault);
hr = IWICMetadataReader_GetMetadataFormat(reader, &format); @@ -704,6 +734,11 @@ static void test_metadata_hIST(void) ok(hr == S_OK || broken(hr == REGDB_E_CLASSNOTREG) /*winxp*/, "CoCreateInstance failed, hr=%lx\n", hr); if (FAILED(hr)) return;
+ check_interface(reader, &IID_IWICMetadataReader, TRUE); + check_interface(reader, &IID_IPersist, TRUE); + check_interface(reader, &IID_IPersistStream, TRUE); + check_interface(reader, &IID_IWICPersistStream, TRUE); + load_stream((IUnknown*)reader, metadata_hIST, sizeof(metadata_hIST), WICPersistOptionDefault);
hr = IWICMetadataReader_GetMetadataFormat(reader, &format); @@ -754,6 +789,11 @@ static void test_metadata_tIME(void) ok(hr == S_OK || broken(hr == REGDB_E_CLASSNOTREG) /*winxp*/, "CoCreateInstance failed, hr=%lx\n", hr); if (FAILED(hr)) return;
+ check_interface(reader, &IID_IWICMetadataReader, TRUE); + check_interface(reader, &IID_IPersist, TRUE); + check_interface(reader, &IID_IPersistStream, TRUE); + check_interface(reader, &IID_IWICPersistStream, TRUE); + load_stream((IUnknown*)reader, metadata_tIME, sizeof(metadata_tIME), WICPersistOptionDefault);
hr = IWICMetadataReader_GetMetadataFormat(reader, &format); @@ -915,7 +955,6 @@ static void test_metadata_IFD(void) }; HRESULT hr; IWICMetadataReader *reader; - IWICMetadataBlockReader *blockreader; PROPVARIANT schema, id, value; UINT count; GUID format; @@ -930,6 +969,11 @@ static void test_metadata_IFD(void) &IID_IWICMetadataReader, (void**)&reader); ok(hr == S_OK, "CoCreateInstance error %#lx\n", hr);
+ check_interface(reader, &IID_IWICMetadataReader, TRUE); + check_interface(reader, &IID_IPersist, TRUE); + check_interface(reader, &IID_IPersistStream, TRUE); + check_interface(reader, &IID_IWICPersistStream, TRUE); + hr = IWICMetadataReader_GetCount(reader, NULL); ok(hr == E_INVALIDARG, "GetCount error %#lx\n", hr);
@@ -1040,11 +1084,7 @@ static void test_metadata_IFD(void) ok(!strcmp(value.pszVal, "Hello World!"), "unexpected value: %s\n", value.pszVal); PropVariantClear(&value);
- hr = IWICMetadataReader_QueryInterface(reader, &IID_IWICMetadataBlockReader, (void**)&blockreader); - ok(hr == E_NOINTERFACE, "QueryInterface failed, hr=%lx\n", hr); - - if (SUCCEEDED(hr)) - IWICMetadataBlockReader_Release(blockreader); + check_interface(reader, &IID_IWICMetadataBlockReader, FALSE);
IWICMetadataReader_Release(reader); } @@ -1053,7 +1093,6 @@ static void test_metadata_Exif(void) { HRESULT hr; IWICMetadataReader *reader; - IWICMetadataBlockReader *blockreader; UINT count=0;
hr = CoCreateInstance(&CLSID_WICExifMetadataReader, NULL, CLSCTX_INPROC_SERVER, @@ -1061,6 +1100,11 @@ static void test_metadata_Exif(void) todo_wine ok(hr == S_OK, "CoCreateInstance error %#lx\n", hr); if (FAILED(hr)) return;
+ check_interface(reader, &IID_IWICMetadataReader, TRUE); + check_interface(reader, &IID_IPersist, TRUE); + check_interface(reader, &IID_IPersistStream, TRUE); + check_interface(reader, &IID_IWICPersistStream, TRUE); + hr = IWICMetadataReader_GetCount(reader, NULL); ok(hr == E_INVALIDARG, "GetCount error %#lx\n", hr);
@@ -1068,11 +1112,7 @@ static void test_metadata_Exif(void) ok(hr == S_OK, "GetCount error %#lx\n", hr); ok(count == 0, "unexpected count %u\n", count);
- hr = IWICMetadataReader_QueryInterface(reader, &IID_IWICMetadataBlockReader, (void**)&blockreader); - ok(hr == E_NOINTERFACE, "QueryInterface failed, hr=%lx\n", hr); - - if (SUCCEEDED(hr)) - IWICMetadataBlockReader_Release(blockreader); + check_interface(reader, &IID_IWICMetadataBlockReader, FALSE);
IWICMetadataReader_Release(reader); } @@ -1112,6 +1152,11 @@ static void test_create_reader(void) stream, &reader); ok(hr == S_OK, "CreateMetadataReaderFromContainer failed, hr=%lx\n", hr);
+ check_interface(reader, &IID_IWICMetadataReader, TRUE); + check_interface(reader, &IID_IPersist, TRUE); + check_interface(reader, &IID_IPersistStream, TRUE); + check_interface(reader, &IID_IWICPersistStream, TRUE); + if (SUCCEEDED(hr)) { hr = IWICMetadataReader_GetCount(reader, &count); @@ -1181,8 +1226,7 @@ static void test_metadata_png(void) hr = IWICBitmapDecoder_Initialize(decoder, stream, WICDecodeMetadataCacheOnLoad); ok(hr == S_OK, "Initialize failed, hr=%lx\n", hr);
- hr = IWICBitmapDecoder_QueryInterface(decoder, &IID_IWICMetadataBlockReader, (void**)&blockreader); - ok(hr == E_NOINTERFACE, "QueryInterface failed, hr=%lx\n", hr); + check_interface(decoder, &IID_IWICMetadataBlockReader, FALSE);
hr = IWICBitmapDecoder_GetFrame(decoder, 0, &frame); ok(hr == S_OK, "GetFrame failed, hr=%lx\n", hr); @@ -1919,50 +1963,50 @@ static void test_metadata_LSD(void) &IID_IWICMetadataReader, (void **)&reader); ok(hr == S_OK || broken(hr == E_NOINTERFACE || hr == REGDB_E_CLASSNOTREG) /* before Win7 */, "CoCreateInstance error %#lx\n", hr); + if (FAILED(hr)) return; + + check_interface(reader, &IID_IWICMetadataReader, TRUE); + check_interface(reader, &IID_IPersist, TRUE); + check_interface(reader, &IID_IPersistStream, TRUE); + check_interface(reader, &IID_IWICPersistStream, TRUE);
stream = create_stream(LSD_data, sizeof(LSD_data));
- if (SUCCEEDED(hr)) - { - pos.QuadPart = 6; - hr = IStream_Seek(stream, pos, SEEK_SET, NULL); - ok(hr == S_OK, "IStream_Seek error %#lx\n", hr); + pos.QuadPart = 6; + hr = IStream_Seek(stream, pos, SEEK_SET, NULL); + ok(hr == S_OK, "IStream_Seek error %#lx\n", hr);
- hr = IUnknown_QueryInterface(reader, &IID_IWICPersistStream, (void **)&persist); - ok(hr == S_OK, "QueryInterface error %#lx\n", hr); + hr = IUnknown_QueryInterface(reader, &IID_IWICPersistStream, (void **)&persist); + ok(hr == S_OK, "QueryInterface error %#lx\n", hr);
- hr = IWICPersistStream_Load(persist, stream); - ok(hr == S_OK, "Load error %#lx\n", hr); + hr = IWICPersistStream_Load(persist, stream); + ok(hr == S_OK, "Load error %#lx\n", hr);
- IWICPersistStream_Release(persist); - } + IWICPersistStream_Release(persist);
- if (SUCCEEDED(hr)) - { - hr = IWICMetadataReader_GetCount(reader, &count); - ok(hr == S_OK, "GetCount error %#lx\n", hr); - ok(count == ARRAY_SIZE(td), "unexpected count %u\n", count); + hr = IWICMetadataReader_GetCount(reader, &count); + ok(hr == S_OK, "GetCount error %#lx\n", hr); + ok(count == ARRAY_SIZE(td), "unexpected count %u\n", count);
- compare_metadata(reader, td, count); + compare_metadata(reader, td, count);
- hr = IWICMetadataReader_GetMetadataFormat(reader, &format); - ok(hr == S_OK, "GetMetadataFormat error %#lx\n", hr); - ok(IsEqualGUID(&format, &GUID_MetadataFormatLSD), "wrong format %s\n", wine_dbgstr_guid(&format)); + hr = IWICMetadataReader_GetMetadataFormat(reader, &format); + ok(hr == S_OK, "GetMetadataFormat error %#lx\n", hr); + ok(IsEqualGUID(&format, &GUID_MetadataFormatLSD), "wrong format %s\n", wine_dbgstr_guid(&format));
- hr = IWICMetadataReader_GetMetadataHandlerInfo(reader, &info); - ok(hr == S_OK, "GetMetadataHandlerInfo error %#lx\n", hr); + hr = IWICMetadataReader_GetMetadataHandlerInfo(reader, &info); + ok(hr == S_OK, "GetMetadataHandlerInfo error %#lx\n", hr);
- hr = IWICMetadataHandlerInfo_GetCLSID(info, &id); - ok(hr == S_OK, "GetCLSID error %#lx\n", hr); - ok(IsEqualGUID(&id, &CLSID_WICLSDMetadataReader), "wrong CLSID %s\n", wine_dbgstr_guid(&id)); + hr = IWICMetadataHandlerInfo_GetCLSID(info, &id); + ok(hr == S_OK, "GetCLSID error %#lx\n", hr); + ok(IsEqualGUID(&id, &CLSID_WICLSDMetadataReader), "wrong CLSID %s\n", wine_dbgstr_guid(&id));
- hr = IWICMetadataHandlerInfo_GetFriendlyName(info, 64, name, &dummy); - ok(hr == S_OK, "GetFriendlyName error %#lx\n", hr); - ok(lstrcmpW(name, LSD_name) == 0, "wrong LSD reader name %s\n", wine_dbgstr_w(name)); + hr = IWICMetadataHandlerInfo_GetFriendlyName(info, 64, name, &dummy); + ok(hr == S_OK, "GetFriendlyName error %#lx\n", hr); + ok(lstrcmpW(name, LSD_name) == 0, "wrong LSD reader name %s\n", wine_dbgstr_w(name));
- IWICMetadataHandlerInfo_Release(info); - IWICMetadataReader_Release(reader); - } + IWICMetadataHandlerInfo_Release(info); + IWICMetadataReader_Release(reader);
IStream_Release(stream); } @@ -1997,50 +2041,50 @@ static void test_metadata_IMD(void) &IID_IWICMetadataReader, (void **)&reader); ok(hr == S_OK || broken(hr == E_NOINTERFACE || hr == REGDB_E_CLASSNOTREG) /* before Win7 */, "CoCreateInstance error %#lx\n", hr); + if (FAILED(hr)) return; + + check_interface(reader, &IID_IWICMetadataReader, TRUE); + check_interface(reader, &IID_IPersist, TRUE); + check_interface(reader, &IID_IPersistStream, TRUE); + check_interface(reader, &IID_IWICPersistStream, TRUE);
stream = create_stream(IMD_data, sizeof(IMD_data));
- if (SUCCEEDED(hr)) - { - pos.QuadPart = 12; - hr = IStream_Seek(stream, pos, SEEK_SET, NULL); - ok(hr == S_OK, "IStream_Seek error %#lx\n", hr); + pos.QuadPart = 12; + hr = IStream_Seek(stream, pos, SEEK_SET, NULL); + ok(hr == S_OK, "IStream_Seek error %#lx\n", hr);
- hr = IUnknown_QueryInterface(reader, &IID_IWICPersistStream, (void **)&persist); - ok(hr == S_OK, "QueryInterface error %#lx\n", hr); + hr = IUnknown_QueryInterface(reader, &IID_IWICPersistStream, (void **)&persist); + ok(hr == S_OK, "QueryInterface error %#lx\n", hr);
- hr = IWICPersistStream_Load(persist, stream); - ok(hr == S_OK, "Load error %#lx\n", hr); + hr = IWICPersistStream_Load(persist, stream); + ok(hr == S_OK, "Load error %#lx\n", hr);
- IWICPersistStream_Release(persist); - } + IWICPersistStream_Release(persist);
- if (SUCCEEDED(hr)) - { - hr = IWICMetadataReader_GetCount(reader, &count); - ok(hr == S_OK, "GetCount error %#lx\n", hr); - ok(count == ARRAY_SIZE(td), "unexpected count %u\n", count); + hr = IWICMetadataReader_GetCount(reader, &count); + ok(hr == S_OK, "GetCount error %#lx\n", hr); + ok(count == ARRAY_SIZE(td), "unexpected count %u\n", count);
- compare_metadata(reader, td, count); + compare_metadata(reader, td, count);
- hr = IWICMetadataReader_GetMetadataFormat(reader, &format); - ok(hr == S_OK, "GetMetadataFormat error %#lx\n", hr); - ok(IsEqualGUID(&format, &GUID_MetadataFormatIMD), "wrong format %s\n", wine_dbgstr_guid(&format)); + hr = IWICMetadataReader_GetMetadataFormat(reader, &format); + ok(hr == S_OK, "GetMetadataFormat error %#lx\n", hr); + ok(IsEqualGUID(&format, &GUID_MetadataFormatIMD), "wrong format %s\n", wine_dbgstr_guid(&format));
- hr = IWICMetadataReader_GetMetadataHandlerInfo(reader, &info); - ok(hr == S_OK, "GetMetadataHandlerInfo error %#lx\n", hr); + hr = IWICMetadataReader_GetMetadataHandlerInfo(reader, &info); + ok(hr == S_OK, "GetMetadataHandlerInfo error %#lx\n", hr);
- hr = IWICMetadataHandlerInfo_GetCLSID(info, &id); - ok(hr == S_OK, "GetCLSID error %#lx\n", hr); - ok(IsEqualGUID(&id, &CLSID_WICIMDMetadataReader), "wrong CLSID %s\n", wine_dbgstr_guid(&id)); + hr = IWICMetadataHandlerInfo_GetCLSID(info, &id); + ok(hr == S_OK, "GetCLSID error %#lx\n", hr); + ok(IsEqualGUID(&id, &CLSID_WICIMDMetadataReader), "wrong CLSID %s\n", wine_dbgstr_guid(&id));
- hr = IWICMetadataHandlerInfo_GetFriendlyName(info, 64, name, &dummy); - ok(hr == S_OK, "GetFriendlyName error %#lx\n", hr); - ok(lstrcmpW(name, IMD_name) == 0, "wrong IMD reader name %s\n", wine_dbgstr_w(name)); + hr = IWICMetadataHandlerInfo_GetFriendlyName(info, 64, name, &dummy); + ok(hr == S_OK, "GetFriendlyName error %#lx\n", hr); + ok(lstrcmpW(name, IMD_name) == 0, "wrong IMD reader name %s\n", wine_dbgstr_w(name));
- IWICMetadataHandlerInfo_Release(info); - IWICMetadataReader_Release(reader); - } + IWICMetadataHandlerInfo_Release(info); + IWICMetadataReader_Release(reader);
IStream_Release(stream); } @@ -2072,50 +2116,50 @@ static void test_metadata_GCE(void) &IID_IWICMetadataReader, (void **)&reader); ok(hr == S_OK || broken(hr == E_NOINTERFACE || hr == REGDB_E_CLASSNOTREG) /* before Win7 */, "CoCreateInstance error %#lx\n", hr); + if (FAILED(hr)) return; + + check_interface(reader, &IID_IWICMetadataReader, TRUE); + check_interface(reader, &IID_IPersist, TRUE); + check_interface(reader, &IID_IPersistStream, TRUE); + check_interface(reader, &IID_IWICPersistStream, TRUE);
stream = create_stream(GCE_data, sizeof(GCE_data));
- if (SUCCEEDED(hr)) - { - pos.QuadPart = 12; - hr = IStream_Seek(stream, pos, SEEK_SET, NULL); - ok(hr == S_OK, "IStream_Seek error %#lx\n", hr); + pos.QuadPart = 12; + hr = IStream_Seek(stream, pos, SEEK_SET, NULL); + ok(hr == S_OK, "IStream_Seek error %#lx\n", hr);
- hr = IUnknown_QueryInterface(reader, &IID_IWICPersistStream, (void **)&persist); - ok(hr == S_OK, "QueryInterface error %#lx\n", hr); + hr = IUnknown_QueryInterface(reader, &IID_IWICPersistStream, (void **)&persist); + ok(hr == S_OK, "QueryInterface error %#lx\n", hr);
- hr = IWICPersistStream_Load(persist, stream); - ok(hr == S_OK, "Load error %#lx\n", hr); + hr = IWICPersistStream_Load(persist, stream); + ok(hr == S_OK, "Load error %#lx\n", hr);
- IWICPersistStream_Release(persist); - } + IWICPersistStream_Release(persist);
- if (SUCCEEDED(hr)) - { - hr = IWICMetadataReader_GetCount(reader, &count); - ok(hr == S_OK, "GetCount error %#lx\n", hr); - ok(count == ARRAY_SIZE(td), "unexpected count %u\n", count); + hr = IWICMetadataReader_GetCount(reader, &count); + ok(hr == S_OK, "GetCount error %#lx\n", hr); + ok(count == ARRAY_SIZE(td), "unexpected count %u\n", count);
- compare_metadata(reader, td, count); + compare_metadata(reader, td, count);
- hr = IWICMetadataReader_GetMetadataFormat(reader, &format); - ok(hr == S_OK, "GetMetadataFormat error %#lx\n", hr); - ok(IsEqualGUID(&format, &GUID_MetadataFormatGCE), "wrong format %s\n", wine_dbgstr_guid(&format)); + hr = IWICMetadataReader_GetMetadataFormat(reader, &format); + ok(hr == S_OK, "GetMetadataFormat error %#lx\n", hr); + ok(IsEqualGUID(&format, &GUID_MetadataFormatGCE), "wrong format %s\n", wine_dbgstr_guid(&format));
- hr = IWICMetadataReader_GetMetadataHandlerInfo(reader, &info); - ok(hr == S_OK, "GetMetadataHandlerInfo error %#lx\n", hr); + hr = IWICMetadataReader_GetMetadataHandlerInfo(reader, &info); + ok(hr == S_OK, "GetMetadataHandlerInfo error %#lx\n", hr);
- hr = IWICMetadataHandlerInfo_GetCLSID(info, &id); - ok(hr == S_OK, "GetCLSID error %#lx\n", hr); - ok(IsEqualGUID(&id, &CLSID_WICGCEMetadataReader), "wrong CLSID %s\n", wine_dbgstr_guid(&id)); + hr = IWICMetadataHandlerInfo_GetCLSID(info, &id); + ok(hr == S_OK, "GetCLSID error %#lx\n", hr); + ok(IsEqualGUID(&id, &CLSID_WICGCEMetadataReader), "wrong CLSID %s\n", wine_dbgstr_guid(&id));
- hr = IWICMetadataHandlerInfo_GetFriendlyName(info, 64, name, &dummy); - ok(hr == S_OK, "GetFriendlyName error %#lx\n", hr); - ok(lstrcmpW(name, GCE_name) == 0, "wrong GCE reader name %s\n", wine_dbgstr_w(name)); + hr = IWICMetadataHandlerInfo_GetFriendlyName(info, 64, name, &dummy); + ok(hr == S_OK, "GetFriendlyName error %#lx\n", hr); + ok(lstrcmpW(name, GCE_name) == 0, "wrong GCE reader name %s\n", wine_dbgstr_w(name));
- IWICMetadataHandlerInfo_Release(info); - IWICMetadataReader_Release(reader); - } + IWICMetadataHandlerInfo_Release(info); + IWICMetadataReader_Release(reader);
IStream_Release(stream); } @@ -2149,58 +2193,58 @@ static void test_metadata_APE(void) &IID_IWICMetadataReader, (void **)&reader); ok(hr == S_OK || broken(hr == E_NOINTERFACE || hr == REGDB_E_CLASSNOTREG) /* before Win7 */, "CoCreateInstance error %#lx\n", hr); + if (FAILED(hr)) return; + + check_interface(reader, &IID_IWICMetadataReader, TRUE); + check_interface(reader, &IID_IPersist, TRUE); + check_interface(reader, &IID_IPersistStream, TRUE); + check_interface(reader, &IID_IWICPersistStream, TRUE);
stream = create_stream(APE_data, sizeof(APE_data));
- if (SUCCEEDED(hr)) - { - hr = IUnknown_QueryInterface(reader, &IID_IWICPersistStream, (void **)&persist); - ok(hr == S_OK, "QueryInterface error %#lx\n", hr); + hr = IUnknown_QueryInterface(reader, &IID_IWICPersistStream, (void **)&persist); + ok(hr == S_OK, "QueryInterface error %#lx\n", hr);
- hr = IWICPersistStream_Load(persist, stream); - ok(hr == S_OK, "Load error %#lx\n", hr); + hr = IWICPersistStream_Load(persist, stream); + ok(hr == S_OK, "Load error %#lx\n", hr);
- IWICPersistStream_Release(persist); - } + IWICPersistStream_Release(persist);
- if (SUCCEEDED(hr)) - { - hr = IWICMetadataReader_GetCount(reader, &count); - ok(hr == S_OK, "GetCount error %#lx\n", hr); - ok(count == ARRAY_SIZE(td), "unexpected count %u\n", count); + hr = IWICMetadataReader_GetCount(reader, &count); + ok(hr == S_OK, "GetCount error %#lx\n", hr); + ok(count == ARRAY_SIZE(td), "unexpected count %u\n", count);
- compare_metadata(reader, td, count); + compare_metadata(reader, td, count);
- hr = IWICMetadataReader_GetMetadataFormat(reader, &format); - ok(hr == S_OK, "GetMetadataFormat error %#lx\n", hr); - ok(IsEqualGUID(&format, &GUID_MetadataFormatAPE), "wrong format %s\n", wine_dbgstr_guid(&format)); + hr = IWICMetadataReader_GetMetadataFormat(reader, &format); + ok(hr == S_OK, "GetMetadataFormat error %#lx\n", hr); + ok(IsEqualGUID(&format, &GUID_MetadataFormatAPE), "wrong format %s\n", wine_dbgstr_guid(&format));
- PropVariantInit(&value); - id.vt = VT_LPWSTR; - id.pwszVal = dataW; - - hr = IWICMetadataReader_GetValue(reader, NULL, &id, &value); - ok(hr == S_OK, "GetValue error %#lx\n", hr); - ok(value.vt == (VT_UI1|VT_VECTOR), "unexpected vt: %i\n", id.vt); - ok(td[1].count == value.caub.cElems, "expected cElems %d, got %ld\n", td[1].count, value.caub.cElems); - for (i = 0; i < value.caub.cElems; i++) - ok(td[1].value[i] == value.caub.pElems[i], "%u: expected value %#I64x, got %#x\n", i, td[1].value[i], value.caub.pElems[i]); - PropVariantClear(&value); + PropVariantInit(&value); + id.vt = VT_LPWSTR; + id.pwszVal = dataW;
- hr = IWICMetadataReader_GetMetadataHandlerInfo(reader, &info); - ok(hr == S_OK, "GetMetadataHandlerInfo error %#lx\n", hr); + hr = IWICMetadataReader_GetValue(reader, NULL, &id, &value); + ok(hr == S_OK, "GetValue error %#lx\n", hr); + ok(value.vt == (VT_UI1|VT_VECTOR), "unexpected vt: %i\n", id.vt); + ok(td[1].count == value.caub.cElems, "expected cElems %d, got %ld\n", td[1].count, value.caub.cElems); + for (i = 0; i < value.caub.cElems; i++) + ok(td[1].value[i] == value.caub.pElems[i], "%u: expected value %#I64x, got %#x\n", i, td[1].value[i], value.caub.pElems[i]); + PropVariantClear(&value);
- hr = IWICMetadataHandlerInfo_GetCLSID(info, &clsid); - ok(hr == S_OK, "GetCLSID error %#lx\n", hr); - ok(IsEqualGUID(&clsid, &CLSID_WICAPEMetadataReader), "wrong CLSID %s\n", wine_dbgstr_guid(&clsid)); + hr = IWICMetadataReader_GetMetadataHandlerInfo(reader, &info); + ok(hr == S_OK, "GetMetadataHandlerInfo error %#lx\n", hr);
- hr = IWICMetadataHandlerInfo_GetFriendlyName(info, 64, name, &dummy); - ok(hr == S_OK, "GetFriendlyName error %#lx\n", hr); - ok(lstrcmpW(name, APE_name) == 0, "wrong APE reader name %s\n", wine_dbgstr_w(name)); + hr = IWICMetadataHandlerInfo_GetCLSID(info, &clsid); + ok(hr == S_OK, "GetCLSID error %#lx\n", hr); + ok(IsEqualGUID(&clsid, &CLSID_WICAPEMetadataReader), "wrong CLSID %s\n", wine_dbgstr_guid(&clsid));
- IWICMetadataHandlerInfo_Release(info); - IWICMetadataReader_Release(reader); - } + hr = IWICMetadataHandlerInfo_GetFriendlyName(info, 64, name, &dummy); + ok(hr == S_OK, "GetFriendlyName error %#lx\n", hr); + ok(lstrcmpW(name, APE_name) == 0, "wrong APE reader name %s\n", wine_dbgstr_w(name)); + + IWICMetadataHandlerInfo_Release(info); + IWICMetadataReader_Release(reader);
IStream_Release(stream); } @@ -2233,56 +2277,56 @@ static void test_metadata_GIF_comment(void) &IID_IWICMetadataReader, (void **)&reader); ok(hr == S_OK || broken(hr == E_NOINTERFACE || hr == REGDB_E_CLASSNOTREG) /* before Win7 */, "CoCreateInstance error %#lx\n", hr); + if (FAILED(hr)) return; + + check_interface(reader, &IID_IWICMetadataReader, TRUE); + check_interface(reader, &IID_IPersist, TRUE); + check_interface(reader, &IID_IPersistStream, TRUE); + check_interface(reader, &IID_IWICPersistStream, TRUE);
stream = create_stream(GIF_comment_data, sizeof(GIF_comment_data));
- if (SUCCEEDED(hr)) - { - hr = IUnknown_QueryInterface(reader, &IID_IWICPersistStream, (void **)&persist); - ok(hr == S_OK, "QueryInterface error %#lx\n", hr); + hr = IUnknown_QueryInterface(reader, &IID_IWICPersistStream, (void **)&persist); + ok(hr == S_OK, "QueryInterface error %#lx\n", hr);
- hr = IWICPersistStream_Load(persist, stream); - ok(hr == S_OK, "Load error %#lx\n", hr); + hr = IWICPersistStream_Load(persist, stream); + ok(hr == S_OK, "Load error %#lx\n", hr);
- IWICPersistStream_Release(persist); - } + IWICPersistStream_Release(persist);
- if (SUCCEEDED(hr)) - { - hr = IWICMetadataReader_GetCount(reader, &count); - ok(hr == S_OK, "GetCount error %#lx\n", hr); - ok(count == ARRAY_SIZE(td), "unexpected count %u\n", count); + hr = IWICMetadataReader_GetCount(reader, &count); + ok(hr == S_OK, "GetCount error %#lx\n", hr); + ok(count == ARRAY_SIZE(td), "unexpected count %u\n", count);
- compare_metadata(reader, td, count); + compare_metadata(reader, td, count);
- hr = IWICMetadataReader_GetMetadataFormat(reader, &format); - ok(hr == S_OK, "GetMetadataFormat error %#lx\n", hr); - ok(IsEqualGUID(&format, &GUID_MetadataFormatGifComment), "wrong format %s\n", wine_dbgstr_guid(&format)); + hr = IWICMetadataReader_GetMetadataFormat(reader, &format); + ok(hr == S_OK, "GetMetadataFormat error %#lx\n", hr); + ok(IsEqualGUID(&format, &GUID_MetadataFormatGifComment), "wrong format %s\n", wine_dbgstr_guid(&format));
- PropVariantInit(&value); - id.vt = VT_LPWSTR; - id.pwszVal = text_entryW; + PropVariantInit(&value); + id.vt = VT_LPWSTR; + id.pwszVal = text_entryW;
- hr = IWICMetadataReader_GetValue(reader, NULL, &id, &value); - ok(hr == S_OK, "GetValue error %#lx\n", hr); - ok(value.vt == VT_LPSTR, "unexpected vt: %i\n", id.vt); - ok(!strcmp(value.pszVal, "Hello World!"), "unexpected value: %s\n", value.pszVal); - PropVariantClear(&value); + hr = IWICMetadataReader_GetValue(reader, NULL, &id, &value); + ok(hr == S_OK, "GetValue error %#lx\n", hr); + ok(value.vt == VT_LPSTR, "unexpected vt: %i\n", id.vt); + ok(!strcmp(value.pszVal, "Hello World!"), "unexpected value: %s\n", value.pszVal); + PropVariantClear(&value);
- hr = IWICMetadataReader_GetMetadataHandlerInfo(reader, &info); - ok(hr == S_OK, "GetMetadataHandlerInfo error %#lx\n", hr); + hr = IWICMetadataReader_GetMetadataHandlerInfo(reader, &info); + ok(hr == S_OK, "GetMetadataHandlerInfo error %#lx\n", hr);
- hr = IWICMetadataHandlerInfo_GetCLSID(info, &clsid); - ok(hr == S_OK, "GetCLSID error %#lx\n", hr); - ok(IsEqualGUID(&clsid, &CLSID_WICGifCommentMetadataReader), "wrong CLSID %s\n", wine_dbgstr_guid(&clsid)); + hr = IWICMetadataHandlerInfo_GetCLSID(info, &clsid); + ok(hr == S_OK, "GetCLSID error %#lx\n", hr); + ok(IsEqualGUID(&clsid, &CLSID_WICGifCommentMetadataReader), "wrong CLSID %s\n", wine_dbgstr_guid(&clsid));
- hr = IWICMetadataHandlerInfo_GetFriendlyName(info, 64, name, &dummy); - ok(hr == S_OK, "GetFriendlyName error %#lx\n", hr); - ok(lstrcmpW(name, GIF_comment_name) == 0, "wrong APE reader name %s\n", wine_dbgstr_w(name)); + hr = IWICMetadataHandlerInfo_GetFriendlyName(info, 64, name, &dummy); + ok(hr == S_OK, "GetFriendlyName error %#lx\n", hr); + ok(lstrcmpW(name, GIF_comment_name) == 0, "wrong APE reader name %s\n", wine_dbgstr_w(name));
- IWICMetadataHandlerInfo_Release(info); - IWICMetadataReader_Release(reader); - } + IWICMetadataHandlerInfo_Release(info); + IWICMetadataReader_Release(reader);
IStream_Release(stream); }
From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/windowscodecs/tests/metadata.c | 54 ----------------------------- 1 file changed, 54 deletions(-)
diff --git a/dlls/windowscodecs/tests/metadata.c b/dlls/windowscodecs/tests/metadata.c index 2792a9b810e..263666af6ae 100644 --- a/dlls/windowscodecs/tests/metadata.c +++ b/dlls/windowscodecs/tests/metadata.c @@ -2646,8 +2646,6 @@ static char the_worst[] = "The Worst";
static HRESULT WINAPI mdr_QueryInterface(IWICMetadataReader *iface, REFIID iid, void **out) { - trace("%p,%s,%p\n", iface, wine_dbgstr_guid(iid), out); - if (IsEqualIID(iid, &IID_IUnknown) || IsEqualIID(iid, &IID_IWICMetadataReader)) { @@ -2673,8 +2671,6 @@ static ULONG WINAPI mdr_Release(IWICMetadataReader *iface)
static HRESULT WINAPI mdr_GetMetadataFormat(IWICMetadataReader *iface, GUID *format) { - trace("%p,%p\n", iface, format); - ok(current_metadata_block != NULL, "current_metadata_block can't be NULL\n"); if (!current_metadata_block) return E_POINTER;
@@ -2690,8 +2686,6 @@ static HRESULT WINAPI mdr_GetMetadataHandlerInfo(IWICMetadataReader *iface, IWIC
static HRESULT WINAPI mdr_GetCount(IWICMetadataReader *iface, UINT *count) { - trace("%p,%p\n", iface, count); - ok(current_metadata_block != NULL, "current_metadata_block can't be NULL\n"); if (!current_metadata_block) return E_POINTER;
@@ -2705,46 +2699,6 @@ static HRESULT WINAPI mdr_GetValueByIndex(IWICMetadataReader *iface, UINT index, return E_NOTIMPL; }
-static char *get_temp_buffer(int size) -{ - static char buf[16][256]; - static int idx; - char *p; - - assert(size < 256); - - p = buf[idx & 0x0f]; - idx++; - return p; -} - -static const char *wine_dbgstr_propvariant(const PROPVARIANT *var) -{ - char *ret; - - if (!var) return "(null)"; - - switch (var->vt) - { - case VT_LPWSTR: - ret = get_temp_buffer(lstrlenW(var->pwszVal) + 16); - sprintf(ret, "(VT_LPWSTR:%s)", wine_dbgstr_w(var->pwszVal)); - break; - - case VT_LPSTR: - ret = get_temp_buffer(lstrlenA(var->pszVal) + 16); - sprintf(ret, "(VT_LPSTR:%s)", var->pszVal); - break; - - default: - ret = get_temp_buffer(16); - sprintf(ret, "(vt:%u)", var->vt); - break; - } - - return ret; -} - static int propvar_cmp(const PROPVARIANT *v1, LONGLONG value2) { LONGLONG value1; @@ -2760,8 +2714,6 @@ static HRESULT WINAPI mdr_GetValue(IWICMetadataReader *iface, const PROPVARIANT { UINT i;
- trace("%p,%s,%s,%s\n", iface, wine_dbgstr_propvariant(schema), wine_dbgstr_propvariant(id), wine_dbgstr_propvariant(value)); - ok(current_metadata_block != NULL, "current_metadata_block can't be NULL\n"); if (!current_metadata_block) return E_POINTER;
@@ -2902,8 +2854,6 @@ static ULONG WINAPI mdbr_Release(IWICMetadataBlockReader *iface)
static HRESULT WINAPI mdbr_GetContainerFormat(IWICMetadataBlockReader *iface, GUID *format) { - trace("%p,%p\n", iface, format); - ok(current_metadata != NULL, "current_metadata can't be NULL\n"); if (!current_metadata) return E_POINTER;
@@ -2913,8 +2863,6 @@ static HRESULT WINAPI mdbr_GetContainerFormat(IWICMetadataBlockReader *iface, GU
static HRESULT WINAPI mdbr_GetCount(IWICMetadataBlockReader *iface, UINT *count) { - trace("%p,%p\n", iface, count); - ok(current_metadata != NULL, "current_metadata can't be NULL\n"); if (!current_metadata) return E_POINTER;
@@ -2924,8 +2872,6 @@ static HRESULT WINAPI mdbr_GetCount(IWICMetadataBlockReader *iface, UINT *count)
static HRESULT WINAPI mdbr_GetReaderByIndex(IWICMetadataBlockReader *iface, UINT index, IWICMetadataReader **out) { - trace("%p,%u,%p\n", iface, index, out); - *out = NULL;
ok(current_metadata != NULL, "current_metadata can't be NULL\n");
From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/windowscodecs/tests/metadata.c | 244 +++++++++++++++++++++++++++- 1 file changed, 238 insertions(+), 6 deletions(-)
diff --git a/dlls/windowscodecs/tests/metadata.c b/dlls/windowscodecs/tests/metadata.c index 263666af6ae..392e86beebd 100644 --- a/dlls/windowscodecs/tests/metadata.c +++ b/dlls/windowscodecs/tests/metadata.c @@ -411,6 +411,7 @@ static void test_metadata_unknown(void) IWICMetadataReader *reader; IWICEnumMetadataItem *enumerator; PROPVARIANT schema, id, value; + IWICMetadataWriter *writer; ULONG items_returned;
hr = CoCreateInstance(&CLSID_WICUnknownMetadataReader, NULL, CLSCTX_INPROC_SERVER, @@ -422,6 +423,9 @@ static void test_metadata_unknown(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); + todo_wine + check_interface(reader, &IID_IWICStreamProvider, TRUE); + check_interface(reader, &IID_IWICMetadataBlockReader, FALSE);
load_stream((IUnknown*)reader, metadata_unknown, sizeof(metadata_unknown), WICPersistOptionDefault);
@@ -471,9 +475,22 @@ static void test_metadata_unknown(void) IWICEnumMetadataItem_Release(enumerator); }
- check_interface(reader, &IID_IWICMetadataBlockReader, FALSE); - IWICMetadataReader_Release(reader); + + hr = CoCreateInstance(&CLSID_WICUnknownMetadataWriter, NULL, CLSCTX_INPROC_SERVER, + &IID_IWICMetadataWriter, (void **)&writer); + todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if (FAILED(hr)) return; + + check_interface(writer, &IID_IWICMetadataWriter, TRUE); + check_interface(writer, &IID_IWICMetadataReader, TRUE); + check_interface(writer, &IID_IPersist, TRUE); + check_interface(writer, &IID_IPersistStream, TRUE); + check_interface(writer, &IID_IWICPersistStream, TRUE); + check_interface(writer, &IID_IWICStreamProvider, TRUE); + + IWICMetadataWriter_Release(writer); }
static void test_metadata_tEXt(void) @@ -482,6 +499,7 @@ static void test_metadata_tEXt(void) IWICMetadataReader *reader; IWICEnumMetadataItem *enumerator; PROPVARIANT schema, id, value; + IWICMetadataWriter *writer; ULONG items_returned; UINT count; GUID format; @@ -499,6 +517,8 @@ static void test_metadata_tEXt(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); + todo_wine + check_interface(reader, &IID_IWICStreamProvider, TRUE);
hr = IWICMetadataReader_GetCount(reader, NULL); ok(hr == E_INVALIDARG, "GetCount failed, hr=%lx\n", hr); @@ -598,6 +618,21 @@ static void test_metadata_tEXt(void) ok(hr == E_INVALIDARG, "GetValueByIndex failed, hr=%lx\n", hr);
IWICMetadataReader_Release(reader); + + hr = CoCreateInstance(&CLSID_WICPngTextMetadataWriter, NULL, CLSCTX_INPROC_SERVER, + &IID_IWICMetadataWriter, (void **)&writer); + todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if (FAILED(hr)) return; + + check_interface(writer, &IID_IWICMetadataWriter, TRUE); + check_interface(writer, &IID_IWICMetadataReader, TRUE); + check_interface(writer, &IID_IPersist, TRUE); + check_interface(writer, &IID_IPersistStream, TRUE); + check_interface(writer, &IID_IWICPersistStream, TRUE); + check_interface(writer, &IID_IWICStreamProvider, TRUE); + + IWICMetadataWriter_Release(writer); }
static void test_metadata_gAMA(void) @@ -605,6 +640,7 @@ static void test_metadata_gAMA(void) HRESULT hr; IWICMetadataReader *reader; PROPVARIANT schema, id, value; + IWICMetadataWriter *writer; UINT count; GUID format; static const WCHAR ImageGamma[] = {'I','m','a','g','e','G','a','m','m','a',0}; @@ -622,6 +658,8 @@ static void test_metadata_gAMA(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); + todo_wine + check_interface(reader, &IID_IWICStreamProvider, TRUE);
load_stream((IUnknown*)reader, metadata_gAMA, sizeof(metadata_gAMA), WICPersistOptionDefault);
@@ -648,6 +686,21 @@ static void test_metadata_gAMA(void) PropVariantClear(&value);
IWICMetadataReader_Release(reader); + + hr = CoCreateInstance(&CLSID_WICPngGamaMetadataWriter, NULL, CLSCTX_INPROC_SERVER, + &IID_IWICMetadataWriter, (void **)&writer); + todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if (FAILED(hr)) return; + + check_interface(writer, &IID_IWICMetadataWriter, TRUE); + check_interface(writer, &IID_IWICMetadataReader, TRUE); + check_interface(writer, &IID_IPersist, TRUE); + check_interface(writer, &IID_IPersistStream, TRUE); + check_interface(writer, &IID_IWICPersistStream, TRUE); + check_interface(writer, &IID_IWICStreamProvider, TRUE); + + IWICMetadataWriter_Release(writer); }
static void test_metadata_cHRM(void) @@ -655,6 +708,7 @@ static void test_metadata_cHRM(void) HRESULT hr; IWICMetadataReader *reader; PROPVARIANT schema, id, value; + IWICMetadataWriter *writer; UINT count; GUID format; int i; @@ -685,6 +739,8 @@ static void test_metadata_cHRM(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); + todo_wine + check_interface(reader, &IID_IWICStreamProvider, TRUE);
load_stream((IUnknown*)reader, metadata_cHRM, sizeof(metadata_cHRM), WICPersistOptionDefault);
@@ -714,6 +770,21 @@ static void test_metadata_cHRM(void) }
IWICMetadataReader_Release(reader); + + hr = CoCreateInstance(&CLSID_WICPngChrmMetadataWriter, NULL, CLSCTX_INPROC_SERVER, + &IID_IWICMetadataWriter, (void **)&writer); + todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if (FAILED(hr)) return; + + check_interface(writer, &IID_IWICMetadataWriter, TRUE); + check_interface(writer, &IID_IWICMetadataReader, TRUE); + check_interface(writer, &IID_IPersist, TRUE); + check_interface(writer, &IID_IPersistStream, TRUE); + check_interface(writer, &IID_IWICPersistStream, TRUE); + check_interface(writer, &IID_IWICStreamProvider, TRUE); + + IWICMetadataWriter_Release(writer); }
static void test_metadata_hIST(void) @@ -721,6 +792,7 @@ static void test_metadata_hIST(void) HRESULT hr; IWICMetadataReader *reader; PROPVARIANT schema, id, value; + IWICMetadataWriter *writer; UINT count, i; GUID format; static const WCHAR Frequencies[] = L"Frequencies"; @@ -738,6 +810,8 @@ static void test_metadata_hIST(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); + todo_wine + check_interface(reader, &IID_IWICStreamProvider, TRUE);
load_stream((IUnknown*)reader, metadata_hIST, sizeof(metadata_hIST), WICPersistOptionDefault);
@@ -766,12 +840,28 @@ static void test_metadata_hIST(void) PropVariantClear(&value);
IWICMetadataReader_Release(reader); + + hr = CoCreateInstance(&CLSID_WICPngHistMetadataWriter, NULL, CLSCTX_INPROC_SERVER, + &IID_IWICMetadataWriter, (void **)&writer); + todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if (FAILED(hr)) return; + + check_interface(writer, &IID_IWICMetadataWriter, TRUE); + check_interface(writer, &IID_IWICMetadataReader, TRUE); + check_interface(writer, &IID_IPersist, TRUE); + check_interface(writer, &IID_IPersistStream, TRUE); + check_interface(writer, &IID_IWICPersistStream, TRUE); + check_interface(writer, &IID_IWICStreamProvider, TRUE); + + IWICMetadataWriter_Release(writer); }
static void test_metadata_tIME(void) { HRESULT hr; IWICMetadataReader *reader; + IWICMetadataWriter *writer; UINT count; GUID format; static const struct test_data td[] = @@ -793,6 +883,8 @@ static void test_metadata_tIME(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); + todo_wine + check_interface(reader, &IID_IWICStreamProvider, TRUE);
load_stream((IUnknown*)reader, metadata_tIME, sizeof(metadata_tIME), WICPersistOptionDefault);
@@ -807,6 +899,21 @@ static void test_metadata_tIME(void) compare_metadata(reader, td, count);
IWICMetadataReader_Release(reader); + + hr = CoCreateInstance(&CLSID_WICPngTimeMetadataWriter, NULL, CLSCTX_INPROC_SERVER, + &IID_IWICMetadataWriter, (void **)&writer); + todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if (FAILED(hr)) return; + + check_interface(writer, &IID_IWICMetadataWriter, TRUE); + check_interface(writer, &IID_IWICMetadataReader, TRUE); + check_interface(writer, &IID_IPersist, TRUE); + check_interface(writer, &IID_IPersistStream, TRUE); + check_interface(writer, &IID_IWICPersistStream, TRUE); + check_interface(writer, &IID_IWICStreamProvider, TRUE); + + IWICMetadataWriter_Release(writer); }
static inline USHORT ushort_bswap(USHORT s) @@ -955,6 +1062,7 @@ static void test_metadata_IFD(void) }; HRESULT hr; IWICMetadataReader *reader; + IWICMetadataWriter *writer; PROPVARIANT schema, id, value; UINT count; GUID format; @@ -973,6 +1081,9 @@ static void test_metadata_IFD(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); + todo_wine + check_interface(reader, &IID_IWICStreamProvider, TRUE); + check_interface(reader, &IID_IWICMetadataBlockReader, FALSE);
hr = IWICMetadataReader_GetCount(reader, NULL); ok(hr == E_INVALIDARG, "GetCount error %#lx\n", hr); @@ -1084,15 +1195,29 @@ static void test_metadata_IFD(void) ok(!strcmp(value.pszVal, "Hello World!"), "unexpected value: %s\n", value.pszVal); PropVariantClear(&value);
- check_interface(reader, &IID_IWICMetadataBlockReader, FALSE); - IWICMetadataReader_Release(reader); + + hr = CoCreateInstance(&CLSID_WICIfdMetadataWriter, NULL, CLSCTX_INPROC_SERVER, + &IID_IWICMetadataWriter, (void **)&writer); + todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if (FAILED(hr)) return; + + check_interface(writer, &IID_IWICMetadataWriter, TRUE); + check_interface(writer, &IID_IWICMetadataReader, TRUE); + check_interface(writer, &IID_IPersist, TRUE); + check_interface(writer, &IID_IPersistStream, TRUE); + check_interface(writer, &IID_IWICPersistStream, TRUE); + check_interface(writer, &IID_IWICStreamProvider, TRUE); + + IWICMetadataWriter_Release(writer); }
static void test_metadata_Exif(void) { HRESULT hr; IWICMetadataReader *reader; + IWICMetadataWriter *writer; UINT count=0;
hr = CoCreateInstance(&CLSID_WICExifMetadataReader, NULL, CLSCTX_INPROC_SERVER, @@ -1104,6 +1229,8 @@ static void test_metadata_Exif(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); + check_interface(reader, &IID_IWICStreamProvider, TRUE); + check_interface(reader, &IID_IWICMetadataBlockReader, FALSE);
hr = IWICMetadataReader_GetCount(reader, NULL); ok(hr == E_INVALIDARG, "GetCount error %#lx\n", hr); @@ -1112,9 +1239,22 @@ static void test_metadata_Exif(void) ok(hr == S_OK, "GetCount error %#lx\n", hr); ok(count == 0, "unexpected count %u\n", count);
- check_interface(reader, &IID_IWICMetadataBlockReader, FALSE); - IWICMetadataReader_Release(reader); + + hr = CoCreateInstance(&CLSID_WICExifMetadataWriter, NULL, CLSCTX_INPROC_SERVER, + &IID_IWICMetadataWriter, (void **)&writer); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if (FAILED(hr)) return; + + check_interface(writer, &IID_IWICMetadataWriter, TRUE); + check_interface(writer, &IID_IWICMetadataReader, TRUE); + check_interface(writer, &IID_IPersist, TRUE); + check_interface(writer, &IID_IPersistStream, TRUE); + check_interface(writer, &IID_IWICPersistStream, TRUE); + todo_wine + check_interface(writer, &IID_IWICStreamProvider, TRUE); + + IWICMetadataWriter_Release(writer); }
static void test_create_reader(void) @@ -1156,6 +1296,8 @@ static void test_create_reader(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); + todo_wine + check_interface(reader, &IID_IWICStreamProvider, TRUE);
if (SUCCEEDED(hr)) { @@ -1953,6 +2095,7 @@ static void test_metadata_LSD(void) IStream *stream; IWICPersistStream *persist; IWICMetadataReader *reader; + IWICMetadataWriter *writer; IWICMetadataHandlerInfo *info; WCHAR name[64]; UINT count, dummy; @@ -1969,6 +2112,8 @@ static void test_metadata_LSD(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); + todo_wine + check_interface(reader, &IID_IWICStreamProvider, TRUE);
stream = create_stream(LSD_data, sizeof(LSD_data));
@@ -2009,6 +2154,21 @@ static void test_metadata_LSD(void) IWICMetadataReader_Release(reader);
IStream_Release(stream); + + hr = CoCreateInstance(&CLSID_WICLSDMetadataWriter, NULL, CLSCTX_INPROC_SERVER, + &IID_IWICMetadataWriter, (void **)&writer); + todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if (FAILED(hr)) return; + + check_interface(writer, &IID_IWICMetadataWriter, TRUE); + check_interface(writer, &IID_IWICMetadataReader, TRUE); + check_interface(writer, &IID_IPersist, TRUE); + check_interface(writer, &IID_IPersistStream, TRUE); + check_interface(writer, &IID_IWICPersistStream, TRUE); + check_interface(writer, &IID_IWICStreamProvider, TRUE); + + IWICMetadataWriter_Release(writer); }
static void test_metadata_IMD(void) @@ -2031,6 +2191,7 @@ static void test_metadata_IMD(void) IStream *stream; IWICPersistStream *persist; IWICMetadataReader *reader; + IWICMetadataWriter *writer; IWICMetadataHandlerInfo *info; WCHAR name[64]; UINT count, dummy; @@ -2047,6 +2208,8 @@ static void test_metadata_IMD(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); + todo_wine + check_interface(reader, &IID_IWICStreamProvider, TRUE);
stream = create_stream(IMD_data, sizeof(IMD_data));
@@ -2087,6 +2250,21 @@ static void test_metadata_IMD(void) IWICMetadataReader_Release(reader);
IStream_Release(stream); + + hr = CoCreateInstance(&CLSID_WICIMDMetadataWriter, NULL, CLSCTX_INPROC_SERVER, + &IID_IWICMetadataWriter, (void **)&writer); + todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if (FAILED(hr)) return; + + check_interface(writer, &IID_IWICMetadataWriter, TRUE); + check_interface(writer, &IID_IWICMetadataReader, TRUE); + check_interface(writer, &IID_IPersist, TRUE); + check_interface(writer, &IID_IPersistStream, TRUE); + check_interface(writer, &IID_IWICPersistStream, TRUE); + check_interface(writer, &IID_IWICStreamProvider, TRUE); + + IWICMetadataWriter_Release(writer); }
static void test_metadata_GCE(void) @@ -2106,6 +2284,7 @@ static void test_metadata_GCE(void) IStream *stream; IWICPersistStream *persist; IWICMetadataReader *reader; + IWICMetadataWriter *writer; IWICMetadataHandlerInfo *info; WCHAR name[64]; UINT count, dummy; @@ -2122,6 +2301,8 @@ static void test_metadata_GCE(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); + todo_wine + check_interface(reader, &IID_IWICStreamProvider, TRUE);
stream = create_stream(GCE_data, sizeof(GCE_data));
@@ -2162,6 +2343,21 @@ static void test_metadata_GCE(void) IWICMetadataReader_Release(reader);
IStream_Release(stream); + + hr = CoCreateInstance(&CLSID_WICGCEMetadataWriter, NULL, CLSCTX_INPROC_SERVER, + &IID_IWICMetadataWriter, (void **)&writer); + todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if (FAILED(hr)) return; + + check_interface(writer, &IID_IWICMetadataWriter, TRUE); + check_interface(writer, &IID_IWICMetadataReader, TRUE); + check_interface(writer, &IID_IPersist, TRUE); + check_interface(writer, &IID_IPersistStream, TRUE); + check_interface(writer, &IID_IWICPersistStream, TRUE); + check_interface(writer, &IID_IWICStreamProvider, TRUE); + + IWICMetadataWriter_Release(writer); }
static void test_metadata_APE(void) @@ -2182,6 +2378,7 @@ static void test_metadata_APE(void) IStream *stream; IWICPersistStream *persist; IWICMetadataReader *reader; + IWICMetadataWriter *writer; IWICMetadataHandlerInfo *info; WCHAR name[64]; UINT count, dummy, i; @@ -2199,6 +2396,8 @@ static void test_metadata_APE(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); + todo_wine + check_interface(reader, &IID_IWICStreamProvider, TRUE);
stream = create_stream(APE_data, sizeof(APE_data));
@@ -2247,6 +2446,21 @@ static void test_metadata_APE(void) IWICMetadataReader_Release(reader);
IStream_Release(stream); + + hr = CoCreateInstance(&CLSID_WICAPEMetadataWriter, NULL, CLSCTX_INPROC_SERVER, + &IID_IWICMetadataWriter, (void **)&writer); + todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if (FAILED(hr)) return; + + check_interface(writer, &IID_IWICMetadataWriter, TRUE); + check_interface(writer, &IID_IWICMetadataReader, TRUE); + check_interface(writer, &IID_IPersist, TRUE); + check_interface(writer, &IID_IPersistStream, TRUE); + check_interface(writer, &IID_IWICPersistStream, TRUE); + check_interface(writer, &IID_IWICStreamProvider, TRUE); + + IWICMetadataWriter_Release(writer); }
static void test_metadata_GIF_comment(void) @@ -2266,6 +2480,7 @@ static void test_metadata_GIF_comment(void) IStream *stream; IWICPersistStream *persist; IWICMetadataReader *reader; + IWICMetadataWriter *writer; IWICMetadataHandlerInfo *info; WCHAR name[64]; UINT count, dummy; @@ -2283,6 +2498,8 @@ static void test_metadata_GIF_comment(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); + todo_wine + check_interface(reader, &IID_IWICStreamProvider, TRUE);
stream = create_stream(GIF_comment_data, sizeof(GIF_comment_data));
@@ -2329,6 +2546,21 @@ static void test_metadata_GIF_comment(void) IWICMetadataReader_Release(reader);
IStream_Release(stream); + + hr = CoCreateInstance(&CLSID_WICGifCommentMetadataWriter, NULL, CLSCTX_INPROC_SERVER, + &IID_IWICMetadataWriter, (void **)&writer); + todo_wine + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + if (FAILED(hr)) return; + + check_interface(writer, &IID_IWICMetadataWriter, TRUE); + check_interface(writer, &IID_IWICMetadataReader, TRUE); + check_interface(writer, &IID_IPersist, TRUE); + check_interface(writer, &IID_IPersistStream, TRUE); + check_interface(writer, &IID_IWICPersistStream, TRUE); + check_interface(writer, &IID_IWICStreamProvider, TRUE); + + IWICMetadataWriter_Release(writer); }
static void test_WICMapGuidToShortName(void)
From: Nikolay Sivov nsivov@codeweavers.com
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/windowscodecs/metadatahandler.c | 68 ++++++++++++++++++++++++++++ dlls/windowscodecs/tests/metadata.c | 13 ------ 2 files changed, 68 insertions(+), 13 deletions(-)
diff --git a/dlls/windowscodecs/metadatahandler.c b/dlls/windowscodecs/metadatahandler.c index 0bc5c381757..28d52a91dd6 100644 --- a/dlls/windowscodecs/metadatahandler.c +++ b/dlls/windowscodecs/metadatahandler.c @@ -37,6 +37,7 @@ typedef struct MetadataHandler { IWICMetadataWriter IWICMetadataWriter_iface; LONG ref; IWICPersistStream IWICPersistStream_iface; + IWICStreamProvider IWICStreamProvider_iface; const MetadataHandlerVtbl *vtable; MetadataItem *items; DWORD item_count; @@ -53,6 +54,11 @@ static inline MetadataHandler *impl_from_IWICPersistStream(IWICPersistStream *if return CONTAINING_RECORD(iface, MetadataHandler, IWICPersistStream_iface); }
+static inline MetadataHandler *impl_from_IWICStreamProvider(IWICStreamProvider *iface) +{ + return CONTAINING_RECORD(iface, MetadataHandler, IWICStreamProvider_iface); +} + static void MetadataHandler_FreeItems(MetadataHandler *This) { DWORD i; @@ -90,6 +96,10 @@ static HRESULT WINAPI MetadataHandler_QueryInterface(IWICMetadataWriter *iface, { *ppv = &This->IWICPersistStream_iface; } + else if (IsEqualIID(&IID_IWICStreamProvider, iid)) + { + *ppv = &This->IWICStreamProvider_iface; + } else { *ppv = NULL; @@ -391,6 +401,63 @@ static const IWICPersistStreamVtbl MetadataHandler_PersistStream_Vtbl = { MetadataHandler_SaveEx };
+static HRESULT WINAPI metadatahandler_stream_provider_QueryInterface(IWICStreamProvider *iface, REFIID iid, void **ppv) +{ + MetadataHandler *handler = impl_from_IWICStreamProvider(iface); + return IWICMetadataWriter_QueryInterface(&handler->IWICMetadataWriter_iface, iid, ppv); +} + +static ULONG WINAPI metadatahandler_stream_provider_AddRef(IWICStreamProvider *iface) +{ + MetadataHandler *handler = impl_from_IWICStreamProvider(iface); + return IWICMetadataWriter_AddRef(&handler->IWICMetadataWriter_iface); +} + +static ULONG WINAPI metadatahandler_stream_provider_Release(IWICStreamProvider *iface) +{ + MetadataHandler *handler = impl_from_IWICStreamProvider(iface); + return IWICMetadataWriter_Release(&handler->IWICMetadataWriter_iface); +} + +static HRESULT WINAPI metadatahandler_stream_provider_GetStream(IWICStreamProvider *iface, IStream **stream) +{ + FIXME("%p, %p stub\n", iface, stream); + + return E_NOTIMPL; +} + +static HRESULT WINAPI metadatahandler_stream_provider_GetPersistOptions(IWICStreamProvider *iface, DWORD *options) +{ + FIXME("%p, %p stub\n", iface, options); + + return E_NOTIMPL; +} + +static HRESULT WINAPI metadatahandler_stream_provider_GetPreferredVendorGUID(IWICStreamProvider *iface, GUID *guid) +{ + FIXME("%p, %p stub\n", iface, guid); + + return E_NOTIMPL; +} + +static HRESULT WINAPI metadatahandler_stream_provider_RefreshStream(IWICStreamProvider *iface) +{ + FIXME("%p stub\n", iface); + + return E_NOTIMPL; +} + +static const IWICStreamProviderVtbl MetadataHandler_StreamProvider_Vtbl = +{ + metadatahandler_stream_provider_QueryInterface, + metadatahandler_stream_provider_AddRef, + metadatahandler_stream_provider_Release, + metadatahandler_stream_provider_GetStream, + metadatahandler_stream_provider_GetPersistOptions, + metadatahandler_stream_provider_GetPreferredVendorGUID, + metadatahandler_stream_provider_RefreshStream, +}; + HRESULT MetadataReader_Create(const MetadataHandlerVtbl *vtable, REFIID iid, void** ppv) { MetadataHandler *This; @@ -405,6 +472,7 @@ HRESULT MetadataReader_Create(const MetadataHandlerVtbl *vtable, REFIID iid, voi
This->IWICMetadataWriter_iface.lpVtbl = &MetadataHandler_Vtbl; This->IWICPersistStream_iface.lpVtbl = &MetadataHandler_PersistStream_Vtbl; + This->IWICStreamProvider_iface.lpVtbl = &MetadataHandler_StreamProvider_Vtbl; This->ref = 1; This->vtable = vtable; This->items = NULL; diff --git a/dlls/windowscodecs/tests/metadata.c b/dlls/windowscodecs/tests/metadata.c index 392e86beebd..b78ef9aa872 100644 --- a/dlls/windowscodecs/tests/metadata.c +++ b/dlls/windowscodecs/tests/metadata.c @@ -423,7 +423,6 @@ static void test_metadata_unknown(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); - todo_wine check_interface(reader, &IID_IWICStreamProvider, TRUE); check_interface(reader, &IID_IWICMetadataBlockReader, FALSE);
@@ -517,7 +516,6 @@ static void test_metadata_tEXt(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); - todo_wine check_interface(reader, &IID_IWICStreamProvider, TRUE);
hr = IWICMetadataReader_GetCount(reader, NULL); @@ -658,7 +656,6 @@ static void test_metadata_gAMA(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); - todo_wine check_interface(reader, &IID_IWICStreamProvider, TRUE);
load_stream((IUnknown*)reader, metadata_gAMA, sizeof(metadata_gAMA), WICPersistOptionDefault); @@ -739,7 +736,6 @@ static void test_metadata_cHRM(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); - todo_wine check_interface(reader, &IID_IWICStreamProvider, TRUE);
load_stream((IUnknown*)reader, metadata_cHRM, sizeof(metadata_cHRM), WICPersistOptionDefault); @@ -810,7 +806,6 @@ static void test_metadata_hIST(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); - todo_wine check_interface(reader, &IID_IWICStreamProvider, TRUE);
load_stream((IUnknown*)reader, metadata_hIST, sizeof(metadata_hIST), WICPersistOptionDefault); @@ -883,7 +878,6 @@ static void test_metadata_tIME(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); - todo_wine check_interface(reader, &IID_IWICStreamProvider, TRUE);
load_stream((IUnknown*)reader, metadata_tIME, sizeof(metadata_tIME), WICPersistOptionDefault); @@ -1081,7 +1075,6 @@ static void test_metadata_IFD(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); - todo_wine check_interface(reader, &IID_IWICStreamProvider, TRUE); check_interface(reader, &IID_IWICMetadataBlockReader, FALSE);
@@ -1296,7 +1289,6 @@ static void test_create_reader(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); - todo_wine check_interface(reader, &IID_IWICStreamProvider, TRUE);
if (SUCCEEDED(hr)) @@ -2112,7 +2104,6 @@ static void test_metadata_LSD(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); - todo_wine check_interface(reader, &IID_IWICStreamProvider, TRUE);
stream = create_stream(LSD_data, sizeof(LSD_data)); @@ -2208,7 +2199,6 @@ static void test_metadata_IMD(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); - todo_wine check_interface(reader, &IID_IWICStreamProvider, TRUE);
stream = create_stream(IMD_data, sizeof(IMD_data)); @@ -2301,7 +2291,6 @@ static void test_metadata_GCE(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); - todo_wine check_interface(reader, &IID_IWICStreamProvider, TRUE);
stream = create_stream(GCE_data, sizeof(GCE_data)); @@ -2396,7 +2385,6 @@ static void test_metadata_APE(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); - todo_wine check_interface(reader, &IID_IWICStreamProvider, TRUE);
stream = create_stream(APE_data, sizeof(APE_data)); @@ -2498,7 +2486,6 @@ static void test_metadata_GIF_comment(void) check_interface(reader, &IID_IPersist, TRUE); check_interface(reader, &IID_IPersistStream, TRUE); check_interface(reader, &IID_IWICPersistStream, TRUE); - todo_wine check_interface(reader, &IID_IWICStreamProvider, TRUE);
stream = create_stream(GIF_comment_data, sizeof(GIF_comment_data));
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=147687
Your paranoid android.
=== debian11b (64 bit WoW report) ===
dmime: dmime.c:1950: Test failed: got mtTime 25, expected 24 dmime.c:1962: Test failed: got mtTime 50, expected 49 dmime.c:1974: Test failed: got mtTime 75, expected 74 dmime.c:1986: Test failed: got mtTime 125, expected 124 dmime.c:1998: Test failed: got mtTime 650, expected 649
This merge request was approved by Esme Povirk.