Jacek Caban : urlmon: Fixed misc. c tests on IE9 and make image_tiff_filter behave like IE9.

Alexandre Julliard julliard at winehq.org
Mon Nov 14 13:34:00 CST 2011


Module: wine
Branch: master
Commit: 75dd4123117e4e8ecfea5ade87a56b5c9de2d33e
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=75dd4123117e4e8ecfea5ade87a56b5c9de2d33e

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Nov 14 17:07:02 2011 +0100

urlmon: Fixed misc.c tests on IE9 and make image_tiff_filter behave like IE9.

---

 dlls/urlmon/tests/misc.c  |   17 ++++++++++++-----
 dlls/urlmon/urlmon_main.c |    5 ++++-
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/dlls/urlmon/tests/misc.c b/dlls/urlmon/tests/misc.c
index cc69c72..c45428c 100644
--- a/dlls/urlmon/tests/misc.c
+++ b/dlls/urlmon/tests/misc.c
@@ -515,7 +515,7 @@ static BYTE data35[] = {0x89,'P','N','G',0x0d,0x0a,0x1a,0x0a,'x','x','x','x',0};
 static BYTE data36[] = {0x89,'P','N','G',0x0d,0x0a,0x1a,'x','x'};
 static BYTE data37[] = {0x89,'P','N','G',0x0d,0x0a,0x1a,0x0a,'<','h','t','m','l','>'};
 static BYTE data38[] = {0x00,0x89,'P','N','G',0x0d,0x0a,0x1a,0x0a,'x'};
-static BYTE data39[] = {0x4d,0x4d,0x00,0x2a};
+static BYTE data39[] = {0x4d,0x4d,0x00,0x2a,0xff};
 static BYTE data40[] = {0x4d,0x4d,0x00,0x2a,'<','h','t','m','l','>',0};
 static BYTE data41[] = {0x4d,0x4d,0xff};
 static BYTE data42[] = {0x4d,0x4d};
@@ -562,11 +562,12 @@ static BYTE data82[] = {'.','s','n','d',0};
 static BYTE data83[] = {'.','s','n','d'};
 static BYTE data84[] = {'.','s','n','d',0,'<','h','t','m','l','>',1,1};
 static BYTE data85[] = {'.','S','N','D',0};
+static BYTE data86[] = {0x49,0x49,0x2a,0xff};
 
 static const struct {
     BYTE *data;
     DWORD size;
-    LPCWSTR mime, mime_alt;
+    LPCWSTR mime, mime_alt, broken_mime;
 } mime_tests2[] = {
     {data1, sizeof(data1), mimeTextPlain},
     {data2, sizeof(data2), mimeAppOctetStream},
@@ -608,7 +609,7 @@ static const struct {
     {data38, sizeof(data38), mimeAppOctetStream},
     {data39, sizeof(data39), mimeImageTiff},
     {data40, sizeof(data40), mimeTextHtml, mimeImageTiff /* IE8 */},
-    {data41, sizeof(data41), mimeImageTiff},
+    {data41, sizeof(data41), mimeTextPlain, NULL, mimeImageTiff},
     {data42, sizeof(data42), mimeTextPlain},
     {data43, sizeof(data43), mimeAppOctetStream},
     {data44, sizeof(data44), mimeVideoAvi},
@@ -652,13 +653,15 @@ static const struct {
     {data82, sizeof(data82), mimeAudioBasic},
     {data83, sizeof(data83), mimeTextPlain},
     {data84, sizeof(data84), mimeTextHtml, mimeAudioBasic /* IE8 */},
-    {data85, sizeof(data85), mimeTextPlain}
+    {data85, sizeof(data85), mimeTextPlain},
+    {data86, sizeof(data86), mimeImageTiff, NULL, mimeTextPlain}
 };
 
 static void test_FindMimeFromData(void)
 {
     HRESULT hres;
     LPWSTR mime;
+    BYTE b;
     int i;
 
     for(i=0; i<sizeof(mime_tests)/sizeof(mime_tests[0]); i++) {
@@ -692,8 +695,12 @@ static void test_FindMimeFromData(void)
         hres = pFindMimeFromData(NULL, NULL, mime_tests2[i].data, mime_tests2[i].size,
                 NULL, 0, &mime, 0);
         ok(hres == S_OK, "[%d] FindMimeFromData failed: %08x\n", i, hres);
-        ok(!lstrcmpW(mime, mime_tests2[i].mime), "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
+        b = !lstrcmpW(mime, mime_tests2[i].mime);
+        ok(b || broken(mime_tests2[i].broken_mime && !lstrcmpW(mime, mime_tests2[i].broken_mime)),
+            "[%d] wrong mime: %s\n", i, wine_dbgstr_w(mime));
         CoTaskMemFree(mime);
+        if(!b)
+            continue;
 
         hres = pFindMimeFromData(NULL, NULL, mime_tests2[i].data, mime_tests2[i].size,
                 mimeTextHtml, 0, &mime, 0);
diff --git a/dlls/urlmon/urlmon_main.c b/dlls/urlmon/urlmon_main.c
index 4d60977..0911127 100644
--- a/dlls/urlmon/urlmon_main.c
+++ b/dlls/urlmon/urlmon_main.c
@@ -602,7 +602,10 @@ static BOOL image_pjpeg_filter(const BYTE *b, DWORD size)
 
 static BOOL image_tiff_filter(const BYTE *b, DWORD size)
 {
-    return size > 2 && b[0] == 0x4d && b[1] == 0x4d;
+    static const BYTE magic1[] = {0x4d,0x4d,0x00,0x2a};
+    static const BYTE magic2[] = {0x49,0x49,0x2a,0xff};
+
+    return size >= 4 && (!memcmp(b, magic1, 4) || !memcmp(b, magic2, 4));
 }
 
 static BOOL image_xpng_filter(const BYTE *b, DWORD size)




More information about the wine-cvs mailing list