ReactOS.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
October 2014
----- 2025 -----
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
19 participants
730 discussions
Start a n
N
ew thread
[akhaldi] 64460: [MSIMG32] * Sync with Wine 1.7.27. CORE-8540
by akhaldi@svn.reactos.org
Author: akhaldi Date: Thu Oct 2 10:04:59 2014 New Revision: 64460 URL:
http://svn.reactos.org/svn/reactos?rev=64460&view=rev
Log: [MSIMG32] * Sync with Wine 1.7.27. CORE-8540 Modified: trunk/reactos/dll/win32/msimg32/msimg32_main.c trunk/reactos/media/doc/README.WINE Modified: trunk/reactos/dll/win32/msimg32/msimg32_main.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msimg32/msimg32_…
============================================================================== --- trunk/reactos/dll/win32/msimg32/msimg32_main.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msimg32/msimg32_main.c [iso-8859-1] Thu Oct 2 10:04:59 2014 @@ -28,18 +28,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(msimg32); -/*********************************************************************** - * DllInitialize (MSIMG32.@) - * - * MSIMG32 initialisation routine. - */ -BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, LPVOID reserved ) -{ - if (reason == DLL_PROCESS_ATTACH) DisableThreadLibraryCalls( inst ); - return TRUE; -} - - /****************************************************************************** * vSetDdrawflag (MSIMG32.@) */ Modified: trunk/reactos/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Thu Oct 2 10:04:59 2014 @@ -124,7 +124,7 @@ reactos/dll/win32/mshtml # Synced to Wine-1.7.27 reactos/dll/win32/mshtml.tlb # Synced to Wine-1.7.17 reactos/dll/win32/msi # Synced to Wine-1.7.27 -reactos/dll/win32/msimg32 # Synced to Wine-1.7.17 +reactos/dll/win32/msimg32 # Synced to Wine-1.7.27 reactos/dll/win32/msimtf # Synced to Wine-1.7.17 reactos/dll/win32/msisip # Synced to Wine-1.7.17 reactos/dll/win32/msisys.ocx # Synced to Wine-1.7.17
10 years, 3 months
1
0
0
0
[akhaldi] 64459: [MSHTML_WINETEST] * Sync with Wine 1.7.27. CORE-8540
by akhaldi@svn.reactos.org
Author: akhaldi Date: Thu Oct 2 09:51:45 2014 New Revision: 64459 URL:
http://svn.reactos.org/svn/reactos?rev=64459&view=rev
Log: [MSHTML_WINETEST] * Sync with Wine 1.7.27. CORE-8540 Modified: trunk/rostests/winetests/mshtml/activex.c trunk/rostests/winetests/mshtml/dom.c trunk/rostests/winetests/mshtml/events.c trunk/rostests/winetests/mshtml/events.html trunk/rostests/winetests/mshtml/exectest.html trunk/rostests/winetests/mshtml/htmldoc.c trunk/rostests/winetests/mshtml/jstest.html trunk/rostests/winetests/mshtml/nav_test.html trunk/rostests/winetests/mshtml/script.c trunk/rostests/winetests/mshtml/style.c trunk/rostests/winetests/mshtml/vbtest.html Modified: trunk/rostests/winetests/mshtml/activex.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/activex.…
============================================================================== --- trunk/rostests/winetests/mshtml/activex.c [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/activex.c [iso-8859-1] Thu Oct 2 09:51:45 2014 @@ -2702,12 +2702,6 @@ IHTMLDocument5 *doc; HRESULT hres; - static const WCHAR xW[] = {'x',0}; - static const WCHAR yW[] = {'y',0}; - - if(!lstrcmpW(xW, yW)) - return FALSE; - hres = CoCreateInstance(&CLSID_HTMLDocument, NULL, CLSCTX_INPROC_SERVER|CLSCTX_INPROC_HANDLER, &IID_IHTMLDocument5, (void**)&doc); if(FAILED(hres)) Modified: trunk/rostests/winetests/mshtml/dom.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/dom.c?re…
============================================================================== --- trunk/rostests/winetests/mshtml/dom.c [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/dom.c [iso-8859-1] Thu Oct 2 09:51:45 2014 @@ -56,7 +56,7 @@ "<button id=\"btnid\"></button>" "<select id=\"s\"><option id=\"x\" value=\"val1\">opt1</option><option id=\"y\">opt2</option></select>" "<textarea id=\"X\">text text</textarea>" - "<table id=\"tbl\"><tbody><tr></tr><tr id=\"row2\"><td>td1 text</td><td>td2 text</td></tr></tbody></table>" + "<table id=\"tbl\"><tbody><tr></tr><tr id=\"row2\"><td id=\"td1\">td1 text</td><td id=\"td2\">td2 text</td></tr></tbody></table>" "<script id=\"sc\" type=\"text/javascript\"><!--\nfunction Testing() {}\n// -->\n</script>" "<test /><object id=\"objid\" name=\"objname\" vspace=100></object><embed />" "<img id=\"imgid\" name=\"WineImg\"/>" @@ -1142,6 +1142,17 @@ IHTMLElement_Release(elem); } +#define test_elem_source_index(a,b) _test_elem_source_index(__LINE__,a,b) +static void _test_elem_source_index(unsigned line, IHTMLElement *elem, int index) +{ + LONG l = 0xdeadbeef; + HRESULT hres; + + hres = IHTMLElement_get_sourceIndex(elem, &l); + ok_(__FILE__,line)(hres == S_OK, "get_sourceIndex failed: %08x\n", hres); + ok_(__FILE__,line)(l == index, "sourceIndex = %d, expected %d\n", l, index); +} + #define get_doc_node(d) _get_doc_node(__LINE__,d) static IHTMLDocument2 *_get_doc_node(unsigned line, IHTMLDocument2 *doc) { @@ -1741,6 +1752,8 @@ IHTMLWindow2_Release(window); ok_(__FILE__,line) (hres == S_OK, "get_Option failed: %08x\n", hres); + test_disp((IUnknown*)factory, &IID_IHTMLOptionElementFactory, "[object]"); + V_VT(&text) = VT_BSTR; V_BSTR(&text) = a2bstr(txt); V_VT(&value) = VT_BSTR; @@ -2103,14 +2116,37 @@ IHTMLElement_Release(elem); } +#define get_elem_col_item_idx(a,b) _get_elem_col_item_idx(__LINE__,a,b) +static IHTMLElement *_get_elem_col_item_idx(unsigned line, IHTMLElementCollection *col, int i) +{ + VARIANT name, index; + IHTMLElement *elem; + IDispatch *disp; + HRESULT hres; + + V_VT(&index) = VT_EMPTY; + V_VT(&name) = VT_I4; + V_I4(&name) = i; + hres = IHTMLElementCollection_item(col, name, index, &disp); + ok_(__FILE__,line)(hres == S_OK, "item failed: %08x\n", hres); + ok_(__FILE__,line)(disp != NULL, "disp == NULL\n"); + + elem = _get_elem_iface(line, (IUnknown*)disp); + IDispatch_Release(disp); + return elem; +} + #define test_elem_collection(c,t,l) _test_elem_collection(__LINE__,c,t,l) static void _test_elem_collection(unsigned line, IUnknown *unk, const elem_type_t *elem_types, LONG exlen) { IHTMLElementCollection *col; + IEnumVARIANT *enum_var; + IUnknown *enum_unk; + ULONG fetched; LONG len; DWORD i; - VARIANT name, index; + VARIANT name, index, v, vs[5]; IDispatch *disp, *disp2; HRESULT hres; @@ -2127,6 +2163,13 @@ len = exlen; V_VT(&index) = VT_EMPTY; + + hres = IHTMLElementCollection_get__newEnum(col, &enum_unk); + ok_(__FILE__,line)(hres == S_OK, "_newEnum failed: %08x\n", hres); + + hres = IUnknown_QueryInterface(enum_unk, &IID_IEnumVARIANT, (void**)&enum_var); + IUnknown_Release(enum_unk); + ok_(__FILE__,line)(hres == S_OK, "Could not get IEnumVARIANT iface: %08x\n", hres); for(i=0; i<len; i++) { V_VT(&name) = VT_I4; @@ -2151,8 +2194,60 @@ IDispatch_Release(disp2); } + fetched = 0; + V_VT(&v) = VT_ERROR; + hres = IEnumVARIANT_Next(enum_var, 1, &v, i ? &fetched : NULL); + ok_(__FILE__,line)(hres == S_OK, "Next failed: %08x\n", hres); + if(i) + ok_(__FILE__,line)(fetched == 1, "fetched = %d\n", fetched); + ok_(__FILE__,line)(V_VT(&v) == VT_DISPATCH && V_DISPATCH(&v), "V_VT(v) = %d\n", V_VT(&v)); + ok_(__FILE__,line)(iface_cmp((IUnknown*)disp, (IUnknown*)V_DISPATCH(&v)), "disp != V_DISPATCH(v)\n"); + IDispatch_Release(V_DISPATCH(&v)); + IDispatch_Release(disp); } + + fetched = 0xdeadbeef; + V_VT(&v) = VT_BOOL; + hres = IEnumVARIANT_Next(enum_var, 1, &v, &fetched); + ok_(__FILE__,line)(hres == S_FALSE, "Next returned %08x, expected S_FALSE\n", hres); + ok_(__FILE__,line)(fetched == 0, "fetched = %d\n", fetched); + ok_(__FILE__,line)(V_VT(&v) == VT_BOOL, "V_VT(v) = %d\n", V_VT(&v)); + + hres = IEnumVARIANT_Reset(enum_var); + ok_(__FILE__,line)(hres == S_OK, "Reset failed: %08x\n", hres); + + fetched = 0xdeadbeef; + V_VT(&v) = VT_BOOL; + hres = IEnumVARIANT_Next(enum_var, 0, &v, &fetched); + ok_(__FILE__,line)(hres == S_OK, "Next returned %08x, expected S_FALSE\n", hres); + ok_(__FILE__,line)(fetched == 0, "fetched = %d\n", fetched); + ok_(__FILE__,line)(V_VT(&v) == VT_BOOL, "V_VT(v) = %d\n", V_VT(&v)); + + hres = IEnumVARIANT_Skip(enum_var, len > 2 ? len-2 : 0); + ok_(__FILE__,line)(hres == S_OK, "Skip failed: %08x\n", hres); + + memset(vs, 0, sizeof(vs)); + fetched = 0; + hres = IEnumVARIANT_Next(enum_var, sizeof(vs)/sizeof(*vs), vs, &fetched); + ok_(__FILE__,line)(hres == S_FALSE, "Next failed: %08x\n", hres); + ok_(__FILE__,line)(fetched == (len > 2 ? 2 : len), "fetched = %d\n", fetched); + if(len) { + ok_(__FILE__,line)(V_VT(vs) == VT_DISPATCH && V_DISPATCH(vs), "V_VT(vs[0]) = %d\n", V_VT(vs)); + IDispatch_Release(V_DISPATCH(vs)); + } + if(len > 1) { + ok_(__FILE__,line)(V_VT(vs+1) == VT_DISPATCH && V_DISPATCH(vs+1), "V_VT(vs[1]) = %d\n", V_VT(vs+1)); + IDispatch_Release(V_DISPATCH(vs+1)); + } + + hres = IEnumVARIANT_Reset(enum_var); + ok_(__FILE__,line)(hres == S_OK, "Reset failed: %08x\n", hres); + + hres = IEnumVARIANT_Skip(enum_var, len+1); + ok_(__FILE__,line)(hres == S_FALSE, "Skip failed: %08x\n", hres); + + IEnumVARIANT_Release(enum_var); V_VT(&name) = VT_I4; V_I4(&name) = len; @@ -2226,20 +2321,8 @@ HeapFree(GetProcessHeap(), 0, types); - if(ret) { - IDispatch *disp; - VARIANT v; - - V_VT(&v) = VT_I4; - V_I4(&v) = 0; - disp = NULL; - hres = IHTMLElementCollection_item(col, v, v, &disp); - ok(hres == S_OK, "item failed: %08x\n", hres); - ok(disp != NULL, "disp == NULL\n"); - *ret = _get_elem_iface(line, (IUnknown*)disp); - IDispatch_Release(disp); - } - + if(ret) + *ret = get_elem_col_item_idx(col, 0); IHTMLElementCollection_Release(col); } @@ -2497,6 +2580,24 @@ _test_elem3_get_disabled(line, (IUnknown*)select, exb); } +static void test_select_remove(IHTMLSelectElement *select) +{ + HRESULT hres; + + hres = IHTMLSelectElement_remove(select, 3); + ok(hres == S_OK, "remove failed: %08x, expected S_OK\n", hres); + test_select_length(select, 2); + + hres = IHTMLSelectElement_remove(select, -1); + todo_wine + ok(hres == E_INVALIDARG, "remove failed: %08x, expected E_INVALIDARG\n", hres); + test_select_length(select, 2); + + hres = IHTMLSelectElement_remove(select, 0); + ok(hres == S_OK, "remove failed:%08x\n", hres); + test_select_length(select, 1); +} + #define test_text_length(u,l) _test_text_length(__LINE__,u,l) static void _test_text_length(unsigned line, IUnknown *unk, LONG l) { @@ -2701,6 +2802,24 @@ _test_img_alt(line, unk, alt); } +#define test_img_align(u,a) _test_img_align(__LINE__,u,a) +static void _test_img_align(unsigned line, IUnknown *unk, const char *align) +{ + IHTMLImgElement *img = _get_img_iface(line, unk); + BSTR tmp; + HRESULT hres; + + tmp = a2bstr(align); + hres = IHTMLImgElement_put_align(img, tmp); + ok_(__FILE__,line) (hres == S_OK, "put_align failed: %08x\n", hres); + SysFreeString(tmp); + + hres = IHTMLImgElement_get_align(img, &tmp); + ok_(__FILE__,line) (hres == S_OK, "put_align failed: %08x\n", hres); + ok_(__FILE__,line) (!strcmp_wa(tmp, align), "Expect %s, got %s\n", align, wine_dbgstr_w(tmp)); + SysFreeString(tmp); +} + #define test_img_name(u, c) _test_img_name(__LINE__,u, c) static void _test_img_name(unsigned line, IUnknown *unk, const char *pValue) { @@ -2725,6 +2844,25 @@ hres = IHTMLImgElement_get_complete(img, &b); ok_(__FILE__,line) (hres == S_OK, "get_complete failed: %08x\n", hres); ok_(__FILE__,line) (b == exb, "complete = %x, expected %x\n", b, exb); + IHTMLImgElement_Release(img); +} + +#define test_img_isMap(u, c) _test_img_isMap(__LINE__,u, c) +static void _test_img_isMap(unsigned line, IUnknown *unk, VARIANT_BOOL v) +{ + IHTMLImgElement *img = _get_img_iface(line, unk); + VARIANT_BOOL b = 100; + HRESULT hres; + + hres = IHTMLImgElement_put_isMap(img, v); + ok_(__FILE__,line) (hres == S_OK, "put_isMap failed: %08x\n", hres); + + hres = IHTMLImgElement_get_isMap(img, &b); + ok_(__FILE__,line) (hres == S_OK, "get_isMap failed: %08x\n", hres); + ok_(__FILE__,line) (b == v, "isMap = %x, expected %x\n", b, v); + + hres = IHTMLImgElement_get_isMap(img, NULL); + ok_(__FILE__,line) (hres == E_INVALIDARG, "ret = %08x, expected E_INVALIDARG\n", hres); IHTMLImgElement_Release(img); } @@ -2950,6 +3088,65 @@ ok_(__FILE__,line)(specified == expected, "specified = %x, expected %x\n", specified, expected); } +#define test_elem_id(e,i) _test_elem_id(__LINE__,e,i) +static void _test_elem_id(unsigned line, IUnknown *unk, const char *exid) +{ + IHTMLElement *elem = _get_elem_iface(line, unk); + BSTR id = (void*)0xdeadbeef; + HRESULT hres; + + hres = IHTMLElement_get_id(elem, &id); + IHTMLElement_Release(elem); + ok_(__FILE__,line) (hres == S_OK, "get_id failed: %08x\n", hres); + + if(exid) + ok_(__FILE__,line) (!strcmp_wa(id, exid), "unexpected id %s\n", wine_dbgstr_w(id)); + else + ok_(__FILE__,line) (!id, "id=%s\n", wine_dbgstr_w(id)); + + SysFreeString(id); +} + +#define test_elem_put_id(u,i) _test_elem_put_id(__LINE__,u,i) +static void _test_elem_put_id(unsigned line, IUnknown *unk, const char *new_id) +{ + IHTMLElement *elem = _get_elem_iface(line, unk); + BSTR tmp = a2bstr(new_id); + HRESULT hres; + + hres = IHTMLElement_put_id(elem, tmp); + IHTMLElement_Release(elem); + SysFreeString(tmp); + ok_(__FILE__,line) (hres == S_OK, "put_id failed: %08x\n", hres); + + _test_elem_id(line, unk, new_id); +} + +static void test_contenteditable(IUnknown *unk) +{ + IHTMLElement3 *elem3 = get_elem3_iface(unk); + HRESULT hres; + BSTR str, strDefault; + + hres = IHTMLElement3_get_contentEditable(elem3, &strDefault); + ok(hres == S_OK, "get_contentEditable failed: 0x%08x\n", hres); + + str = a2bstr("true"); + hres = IHTMLElement3_put_contentEditable(elem3, str); + ok(hres == S_OK, "put_contentEditable(%s) failed: 0x%08x\n", wine_dbgstr_w(str), hres); + SysFreeString(str); + hres = IHTMLElement3_get_contentEditable(elem3, &str); + ok(hres == S_OK, "get_contentEditable failed: 0x%08x\n", hres); + ok(!strcmp_wa(str, "true"), "Got %s, expected %s\n", wine_dbgstr_w(str), "true"); + + /* Restore origin contentEditable */ + hres = IHTMLElement3_put_contentEditable(elem3, strDefault); + ok(hres == S_OK, "put_contentEditable(%s) failed: 0x%08x\n", wine_dbgstr_w(strDefault), hres); + SysFreeString(strDefault); + + IHTMLElement3_Release(elem3); +} + #define test_input_type(i,t) _test_input_type(__LINE__,i,t) static void _test_input_type(unsigned line, IHTMLInputElement *input, const char *extype) { @@ -3102,6 +3299,45 @@ IHTMLInputElement_Release(input); } +#define test_input_get_form(o, t) _test_input_get_form(__LINE__, o, t) +static void _test_input_get_form(unsigned line, IUnknown *unk, const char *id) +{ + IHTMLInputElement *input; + IHTMLFormElement *form; + IHTMLElement *elem; + HRESULT hres; + + ok_(__FILE__,line) (unk != NULL, "unk is NULL!\n"); + hres = IUnknown_QueryInterface(unk, &IID_IHTMLInputElement, (void**)&input); + ok_(__FILE__,line) (hres == S_OK, "Could not get IHTMLInputElement: %08x\n", hres); + ok_(__FILE__,line) (input != NULL, "input == NULL\n"); + if(FAILED(hres) || input == NULL) + return; + + hres = IHTMLInputElement_get_form(input, &form); + ok_(__FILE__, line) (hres == S_OK, "get_form failed: %08x\n", hres); + ok_(__FILE__, line) (form != NULL, "form == NULL\n"); + if(FAILED(hres) || form == NULL){ + IHTMLInputElement_Release(input); + return; + } + + hres = IHTMLFormElement_QueryInterface(form, &IID_IHTMLElement, (void **)&elem); + ok_(__FILE__, line) (hres == S_OK, "QueryInterface(IID_IHTMLElement) failed: %08x\n", hres); + ok_(__FILE__, line) (elem != NULL, "elem == NULL\n"); + if(FAILED(hres) || elem == NULL){ + IHTMLInputElement_Release(input); + IHTMLFormElement_Release(form); + return; + } + + _test_elem_id(line, (IUnknown*)elem, id); + + IHTMLInputElement_Release(input); + IHTMLFormElement_Release(form); + IHTMLElement_Release(elem); +} + #define test_input_put_value(o,v) _test_input_put_value(__LINE__,o,v) static void _test_input_put_value(unsigned line, IUnknown *unk, const char *val) { @@ -3195,6 +3431,43 @@ _test_input_src(line, input, src); } +#define test_input_set_size(u,s,r) _test_input_set_size(__LINE__,u,s,r) +static void _test_input_set_size(unsigned line, IHTMLInputElement *input, LONG size, HRESULT exret) +{ + HRESULT hres; + + hres = IHTMLInputElement_put_size(input, size); + ok_(__FILE__,line) (hres == exret, "Expect ret = %08x, got: %08x\n", exret, hres); +} + +#define test_input_get_size(u,s) _test_input_get_size(__LINE__,u,s) +static void _test_input_get_size(unsigned line, IHTMLInputElement *input, LONG exsize) +{ + HRESULT hres; + LONG size; + + hres = IHTMLInputElement_get_size(input, &size); + ok_(__FILE__,line) (hres == S_OK, "get_size failed: %08x\n", hres); + ok_(__FILE__,line) (size == exsize, "Expect %d, got %d\n", exsize, size); + + hres = IHTMLInputElement_get_size(input, NULL); + ok_(__FILE__,line) (hres == E_INVALIDARG, "Expect ret E_INVALIDARG, got: %08x\n", hres); +} + +#define test_input_readOnly(u,b) _test_input_readOnly(__LINE__,u,b) +static void _test_input_readOnly(unsigned line, IHTMLInputElement *input, VARIANT_BOOL v) +{ + HRESULT hres; + VARIANT_BOOL b = 100; + + hres = IHTMLInputElement_put_readOnly(input, v); + ok_(__FILE__,line)(hres == S_OK, "put readOnly failed: %08x\n", hres); + + hres = IHTMLInputElement_get_readOnly(input, &b); + ok_(__FILE__,line)(hres == S_OK, "get readOnly failed: %08x\n", hres); + ok_(__FILE__,line)(v == b, "Expect %x, got %x\n", v, b); +} + #define test_elem_class(u,c) _test_elem_class(__LINE__,u,c) static void _test_elem_class(unsigned line, IUnknown *unk, const char *exclass) { @@ -3355,40 +3628,6 @@ _test_elem_class(line, unk, class); } -#define test_elem_id(e,i) _test_elem_id(__LINE__,e,i) -static void _test_elem_id(unsigned line, IUnknown *unk, const char *exid) -{ - IHTMLElement *elem = _get_elem_iface(line, unk); - BSTR id = (void*)0xdeadbeef; - HRESULT hres; - - hres = IHTMLElement_get_id(elem, &id); - IHTMLElement_Release(elem); - ok_(__FILE__,line) (hres == S_OK, "get_id failed: %08x\n", hres); - - if(exid) - ok_(__FILE__,line) (!strcmp_wa(id, exid), "unexpected id %s\n", wine_dbgstr_w(id)); - else - ok_(__FILE__,line) (!id, "id=%s\n", wine_dbgstr_w(id)); - - SysFreeString(id); -} - -#define test_elem_put_id(u,i) _test_elem_put_id(__LINE__,u,i) -static void _test_elem_put_id(unsigned line, IUnknown *unk, const char *new_id) -{ - IHTMLElement *elem = _get_elem_iface(line, unk); - BSTR tmp = a2bstr(new_id); - HRESULT hres; - - hres = IHTMLElement_put_id(elem, tmp); - IHTMLElement_Release(elem); - SysFreeString(tmp); - ok_(__FILE__,line) (hres == S_OK, "put_id failed: %08x\n", hres); - - _test_elem_id(line, unk, new_id); -} - #define test_elem_title(u,t) _test_elem_title(__LINE__,u,t) static void _test_elem_title(unsigned line, IUnknown *unk, const char *extitle) { @@ -3657,13 +3896,44 @@ IHTMLFormElement_Release(form); } +#define test_form_reset(a) _test_form_reset(__LINE__,a) +static void _test_form_reset(unsigned line, IUnknown *unk) +{ + IHTMLFormElement *form = _get_form_iface(line, unk); + HRESULT hres; + + hres = IHTMLFormElement_reset(form); + ok_(__FILE__,line)(hres == S_OK, "reset failed: %08x\n", hres); + + IHTMLFormElement_Release(form); +} + +static void test_form_target(IUnknown *unk) +{ + IHTMLFormElement *form = get_form_iface(unk); + HRESULT hres; + BSTR str; + static const char target[] = "_blank"; + + str = a2bstr(target); + hres = IHTMLFormElement_put_target(form, str); + ok(hres == S_OK, "put_target(%s) failed: %08x\n", target, hres); + SysFreeString(str); + + hres = IHTMLFormElement_get_target(form, &str); + ok(hres == S_OK, "get_target failed: %08x\n", hres); + ok(!strcmp_wa(str, target), "Expected %s, got %s\n", target, wine_dbgstr_w(str)); + SysFreeString(str); + + IHTMLFormElement_Release(form); +} + #define test_meta_name(a,b) _test_meta_name(__LINE__,a,b) static void _test_meta_name(unsigned line, IUnknown *unk, const char *exname) { IHTMLMetaElement *meta; BSTR name = NULL; HRESULT hres; - meta = _get_metaelem_iface(line, unk); hres = IHTMLMetaElement_get_name(meta, &name); @@ -3680,7 +3950,6 @@ BSTR content = NULL; HRESULT hres; - meta = _get_metaelem_iface(line, unk); hres = IHTMLMetaElement_get_content(meta, &content); ok_(__FILE__,line)(hres == S_OK, "get_content failed: %08x\n", hres); @@ -3696,7 +3965,6 @@ BSTR val = NULL; HRESULT hres; - meta = _get_metaelem_iface(line, unk); hres = IHTMLMetaElement_get_httpEquiv(meta, &val); ok_(__FILE__,line)(hres == S_OK, "get_httpEquiv failed: %08x\n", hres); @@ -3705,6 +3973,59 @@ IHTMLMetaElement_Release(meta); } +#define test_meta_charset(a,b) _test_meta_charset(__LINE__,a,b) +static void _test_meta_charset(unsigned line, IUnknown *unk, const char *exval) +{ + IHTMLMetaElement *meta; + BSTR val = NULL; + HRESULT hres; + + meta = _get_metaelem_iface(line, unk); + hres = IHTMLMetaElement_get_charset(meta, &val); + ok_(__FILE__,line)(hres == S_OK, "get_charset failed: %08x\n", hres); + if(exval) + ok_(__FILE__,line)(!strcmp_wa(val, exval), "charset = %s, expected %s\n", wine_dbgstr_w(val), exval); + else + ok_(__FILE__,line)(!val, "charset = %s, expected NULL\n", wine_dbgstr_w(val)); + SysFreeString(val); + IHTMLMetaElement_Release(meta); +} + +#define set_meta_charset(a,b) _set_meta_charset(__LINE__,a,b) +static void _set_meta_charset(unsigned line, IUnknown *unk, const char *vala) +{ + BSTR val = a2bstr(vala); + IHTMLMetaElement *meta; + HRESULT hres; + + meta = _get_metaelem_iface(line, unk); + hres = IHTMLMetaElement_put_charset(meta, val); + ok_(__FILE__,line)(hres == S_OK, "put_charset failed: %08x\n", hres); + SysFreeString(val); + IHTMLMetaElement_Release(meta); + + _test_meta_charset(line, unk, vala); +} + +#define test_link_media(a,b) _test_link_media(__LINE__,a,b) +static void _test_link_media(unsigned line, IHTMLElement *elem, const char *exval) +{ + IHTMLLinkElement *link = _get_link_iface(line, (IUnknown*)elem); + HRESULT hres; + BSTR str; + + str = a2bstr(exval); + hres = IHTMLLinkElement_put_media(link, str); + ok_(__FILE__,line)(hres == S_OK, "put_media(%s) failed: %08x\n", exval, hres); + SysFreeString(str); + + hres = IHTMLLinkElement_get_media(link, &str); + ok_(__FILE__,line)(hres == S_OK, "get_media failed: %08x\n", hres); + ok_(__FILE__,line)(!strcmp_wa(str, exval), "got %s, expected %s\n", wine_dbgstr_w(str), exval); + SysFreeString(str); + IHTMLLinkElement_Release(link); +} + #define test_link_disabled(a,b) _test_link_disabled(__LINE__,a,b) static void _test_link_disabled(unsigned line, IHTMLElement *elem, VARIANT_BOOL v) { @@ -3760,6 +4081,37 @@ SysFreeString(str); IHTMLLinkElement_Release(link); _test_link_rel(line, elem, v); +} + +#define test_link_rev(a,b) _test_link_rev(__LINE__,a,b) +static void _test_link_rev(unsigned line, IHTMLElement *elem, const char *v) +{ + IHTMLLinkElement *link = _get_link_iface(line, (IUnknown*)elem); + BSTR rev; + HRESULT hres; + + hres = IHTMLLinkElement_get_rev(link, &rev); + ok_(__FILE__,line)(hres == S_OK, "get_rev failed: %08x\n", hres); + if(v) + ok_(__FILE__,line)(!strcmp_wa(rev, v), "rev = %s, expected %s\n", wine_dbgstr_w(rev), v); + else + ok_(__FILE__,line)(!rev, "rev = %s, expected NULL\n", wine_dbgstr_w(rev)); + + IHTMLLinkElement_Release(link); +} + +#define link_put_rev(a,b) _link_put_rev(__LINE__,a,b) +static void _link_put_rev(unsigned line, IHTMLElement *elem, const char *v) +{ + IHTMLLinkElement *link = _get_link_iface(line, (IUnknown*)elem); + BSTR str = a2bstr(v); + HRESULT hres; + + hres = IHTMLLinkElement_put_rev(link, str); + ok_(__FILE__,line)(hres == S_OK, "put_disabled failed: %08x\n", hres); + SysFreeString(str); + IHTMLLinkElement_Release(link); + _test_link_rev(line, elem, v); } #define test_link_type(a,b) _test_link_type(__LINE__,a,b) @@ -3884,8 +4236,17 @@ HRESULT hres; hres = IHTMLDOMAttribute_get_nodeValue(attr, v); - ok_(__FILE__,line) (hres == S_OK, "get_nodeValue failed: %08x, expected VT_BSTR\n", hres); + ok_(__FILE__,line) (hres == S_OK, "get_nodeValue failed: %08x\n", hres); ok_(__FILE__,line) (V_VT(v) == vt, "vt=%d, expected %d\n", V_VT(v), vt); +} + +#define put_attr_node_value(a,b) _put_attr_node_value(__LINE__,a,b) +static void _put_attr_node_value(unsigned line, IHTMLDOMAttribute *attr, VARIANT v) +{ + HRESULT hres; + + hres = IHTMLDOMAttribute_put_nodeValue(attr, v); + ok_(__FILE__,line) (hres == S_OK, "put_nodeValue failed: %08x\n", hres); } #define get_window_doc(e) _get_window_doc(__LINE__,e) @@ -4237,6 +4598,7 @@ test_select_multiple(select, VARIANT_FALSE); test_select_set_multiple(select, VARIANT_TRUE); + test_select_remove(select); } static void test_form_item(IHTMLElement *elem) @@ -4890,6 +5252,25 @@ } } +#define test_table_length(t,l) _test_table_length(__LINE__,t,l) +static void _test_table_length(unsigned line, IHTMLTable *table, LONG expect) +{ + IHTMLElementCollection *col; + HRESULT hres; + LONG len; + + hres = IHTMLTable_get_rows(table, &col); + ok_(__FILE__,line)(hres == S_OK, "get_rows failed: %08x\n", hres); + ok_(__FILE__,line)(col != NULL, "col = NULL\n"); + if (hres != S_OK || col == NULL) + return; + hres = IHTMLElementCollection_get_length(col, &len); + ok_(__FILE__,line)(hres == S_OK, "get_length failed: %08x\n", hres); + ok_(__FILE__,line)(len == expect, "Expect %d, got %d\n", expect, len); + + IHTMLElementCollection_Release(col); +} + static void test_navigator(IHTMLDocument2 *doc) { IHTMLWindow2 *window; @@ -5116,9 +5497,16 @@ IHTMLElement *elem; IHTMLDocument3 *doc3; HRESULT hres; + BSTR bstr; hres = IHTMLDocument2_QueryInterface(doc, &IID_IHTMLDocument3, (void**)&doc3); ok(hres == S_OK, "QueryInterface(IID_IHTMLDocument3) failed: %08x\n", hres); + + hres = IHTMLDocument2_toString(doc, &bstr); + ok(hres == S_OK, "toString failed: %08x\n", hres); + ok(!strcmp_wa(bstr, "[object]"), + "toString returned %s, expected [object]\n", wine_dbgstr_w(bstr)); + SysFreeString(bstr); hres = IHTMLDocument3_get_documentElement(doc3, &elem); IHTMLDocument3_Release(doc3); @@ -5239,7 +5627,7 @@ hres = IHTMLBodyElement_get_bgColor(body, &vbg); ok(hres == S_OK, "get_bgColor failed: %08x\n", hres); - ok(V_VT(&vDefaultbg) == VT_BSTR, "V_VT(&vDefaultbg) != VT_BSTR\n"); + ok(V_VT(&vbg) == VT_BSTR, "V_VT(&vbg) != VT_BSTR\n"); ok(!strcmp_wa(V_BSTR(&vbg), "#ff0000"), "Unexpected bgcolor %s\n", wine_dbgstr_w(V_BSTR(&vbg))); VariantClear(&vbg); @@ -5368,6 +5756,33 @@ IHTMLWindow2_Release(window); } +static void test_dom_implementation(IHTMLDocument2 *doc) +{ + IHTMLDocument5 *doc5 = get_htmldoc5_iface((IUnknown*)doc); + IHTMLDOMImplementation *dom_implementation; + VARIANT_BOOL b; + VARIANT v; + BSTR str; + HRESULT hres; + + hres = IHTMLDocument5_get_implementation(doc5, &dom_implementation); + IHTMLDocument5_Release(doc5); + ok(hres == S_OK, "get_implementation failed: %08x\n", hres); + ok(dom_implementation != NULL, "dom_implementation == NULL\n"); + + str = a2bstr("test"); + V_VT(&v) = VT_BSTR; + V_BSTR(&v) = a2bstr("1.0"); + b = 100; + hres = IHTMLDOMImplementation_hasFeature(dom_implementation, str, v, &b); + SysFreeString(str); + VariantClear(&v); + ok(hres == S_OK, "hasFeature failed: %08x\n", hres); + ok(!b, "hasFeature returned %x\n", b); + + IHTMLDOMImplementation_Release(dom_implementation); +} + static void test_defaults(IHTMLDocument2 *doc) { IHTMLStyleSheetsCollection *stylesheetcol; @@ -5502,6 +5917,7 @@ test_default_selection(doc); test_doc_title(doc, ""); + test_dom_implementation(doc); } #define test_button_name(a,b) _test_button_name(__LINE__,a,b) @@ -5571,6 +5987,57 @@ set_button_name(elem, "button name"); } +#define test_tr_possess(e,r,l,i) _test_tr_possess(__LINE__,e,r,l,i) +static void _test_tr_possess(unsigned line, IHTMLElement *elem, + IHTMLTableRow *row, LONG len, const char *id) +{ + IHTMLElementCollection *col; + IDispatch *disp; + HRESULT hres; + LONG lval; + VARIANT var; + + hres = IHTMLTableRow_get_cells(row, &col); + ok_(__FILE__, line)(hres == S_OK, "get_cells failed: %08x\n", hres); + ok_(__FILE__, line)(col != NULL, "get_cells returned NULL\n"); + + hres = IHTMLElementCollection_get_length(col, &lval); + ok_(__FILE__, line)(hres == S_OK, "get length failed: %08x\n", hres); + ok_(__FILE__, line)(lval == len, "expected len = %d, got %d\n", len, lval); + + V_VT(&var) = VT_BSTR; + V_BSTR(&var) = a2bstr(id); + hres = IHTMLElementCollection_tags(col, var, &disp); + ok_(__FILE__, line)(hres == S_OK, "search by tags(%s) failed: %08x\n", id, hres); + ok_(__FILE__, line)(disp != NULL, "disp == NULL\n"); + + VariantClear(&var); + IDispatch_Release(disp); + IHTMLElementCollection_Release(col); +} + +static void test_tr_modify(IHTMLElement *elem, IHTMLTableRow *row) +{ + HRESULT hres; + IDispatch *disp; + IHTMLTableCell *cell; + + hres = IHTMLTableRow_deleteCell(row, 0); + ok(hres == S_OK, "deleteCell failed: %08x\n", hres); + test_tr_possess(elem, row, 1, "td2"); + + hres = IHTMLTableRow_insertCell(row, 0, &disp); + ok(hres == S_OK, "insertCell failed: %08x\n", hres); + ok(disp != NULL, "disp == NULL\n"); + hres = IDispatch_QueryInterface(disp, &IID_IHTMLTableCell, (void **)&cell); + ok(hres == S_OK, "Could not get IID_IHTMLTableCell interface: %08x\n", hres); + ok(cell != NULL, "cell == NULL\n"); + if (SUCCEEDED(hres)) + IHTMLTableCell_Release(cell); + test_tr_possess(elem, row, 2, "td2"); + IDispatch_Release(disp); +} + static void test_tr_elem(IHTMLElement *elem) { IHTMLElementCollection *col; @@ -5642,7 +6109,7 @@ hres = IHTMLTableRow_get_bgColor(row, &vbg); ok(hres == S_OK, "get_bgColor failed: %08x\n", hres); - ok(V_VT(&vDefaultbg) == VT_BSTR, "V_VT(&vDefaultbg) != VT_BSTR\n"); + ok(V_VT(&vbg) == VT_BSTR, "V_VT(&vbg) != VT_BSTR\n"); ok(!strcmp_wa(V_BSTR(&vbg), "#ff0000"), "Unexpected bgcolor %s\n", wine_dbgstr_w(V_BSTR(&vbg))); VariantClear(&vbg); @@ -5654,7 +6121,7 @@ hres = IHTMLTableRow_get_bgColor(row, &vbg); ok(hres == S_OK, "get_bgColor failed: %08x\n", hres); - ok(V_VT(&vDefaultbg) == VT_BSTR, "V_VT(&vDefaultbg) != VT_BSTR\n"); + ok(V_VT(&vbg) == VT_BSTR, "V_VT(&vbg) != VT_BSTR\n"); ok(!strcmp_wa(V_BSTR(&vbg), "#ff0000"), "Unexpected bgcolor %s\n", wine_dbgstr_w(V_BSTR(&vbg))); VariantClear(&vbg); @@ -5663,7 +6130,78 @@ ok(hres == S_OK, "put_bgColor failed: %08x\n", hres); VariantClear(&vDefaultbg); + test_tr_modify(elem, row); + IHTMLTableRow_Release(row); +} + +static void test_td_elem(IHTMLElement *elem) +{ + IHTMLTableCell *cell; + HRESULT hres; + LONG lval; + BSTR str; + VARIANT vbg, vDefaultbg; + + hres = IHTMLElement_QueryInterface(elem, &IID_IHTMLTableCell, (void**)&cell); + ok(hres == S_OK, "Could not get IHTMLTableRow iface: %08x\n", hres); + if(FAILED(hres)) + return; + + lval = 0xdeadbeef; + hres = IHTMLTableCell_get_cellIndex(cell, &lval); + ok(hres == S_OK, "get cellIndex failed: %08x\n", hres); + ok(lval == 1, "Expected 1, got %d\n", lval); + + str = a2bstr("left"); + hres = IHTMLTableCell_put_align(cell, str); + ok(hres == S_OK, "put_align failed: %08x\n", hres); + SysFreeString(str); + + str = NULL; + hres = IHTMLTableCell_get_align(cell, &str); + ok(hres == S_OK, "get_align failed: %08x\n", hres); + ok(str != NULL, "str is NULL\n"); + if (str != NULL && hres == S_OK) { + ok(!strcmp_wa(str, "left"), "got %s\n", wine_dbgstr_w(str)); + SysFreeString(str); + } + + hres = IHTMLTableCell_get_bgColor(cell, &vDefaultbg); + ok(hres == S_OK, "get_bgColor failed: %08x\n", hres); + ok(V_VT(&vDefaultbg) == VT_BSTR, "bstr != NULL\n"); + ok(!V_BSTR(&vDefaultbg), "V_BSTR(bgColor) = %s\n", wine_dbgstr_w(V_BSTR(&vDefaultbg))); + + V_VT(&vbg) = VT_BSTR; + V_BSTR(&vbg) = a2bstr("red"); + hres = IHTMLTableCell_put_bgColor(cell, vbg); + ok(hres == S_OK, "put_bgColor failed: %08x\n", hres); + VariantClear(&vbg); + + hres = IHTMLTableCell_get_bgColor(cell, &vbg); + ok(hres == S_OK, "get_bgColor failed: %08x\n", hres); + ok(V_VT(&vbg) == VT_BSTR, "V_VT(&vbg) != VT_BSTR\n"); + ok(!strcmp_wa(V_BSTR(&vbg), "#ff0000"), "Unexpected bgcolor %s\n", wine_dbgstr_w(V_BSTR(&vbg))); + VariantClear(&vbg); + + V_VT(&vbg) = VT_I4; + V_I4(&vbg) = 0xff0000; + hres = IHTMLTableCell_put_bgColor(cell, vbg); + ok(hres == S_OK, "put_bgColor failed: %08x\n", hres); + VariantClear(&vbg); + + hres = IHTMLTableCell_get_bgColor(cell, &vbg); + ok(hres == S_OK, "get_bgColor failed: %08x\n", hres); + ok(V_VT(&vbg) == VT_BSTR, "V_VT(&vbg) != VT_BSTR\n"); + ok(!strcmp_wa(V_BSTR(&vbg), "#ff0000"), "Unexpected bgcolor %s\n", wine_dbgstr_w(V_BSTR(&vbg))); + VariantClear(&vbg); + + /* Restore Originial */ + hres = IHTMLTableCell_put_bgColor(cell, vDefaultbg); + ok(hres == S_OK, "put_bgColor failed: %08x\n", hres); + VariantClear(&vDefaultbg); + + IHTMLTableCell_Release(cell); } static void test_label_elem(IHTMLElement *elem) @@ -5721,10 +6259,45 @@ VariantClear(&v); } +static void test_table_modify(IHTMLTable *table) +{ + IDispatch *disp; + IHTMLTableRow *row; + HRESULT hres; + LONG index; + + test_table_length(table, 2); + + hres = IHTMLTable_insertRow(table, 0, &disp); + ok(hres == S_OK, "insertRow failed: %08x\n", hres); + ok(disp != NULL, "disp == NULL\n"); + test_table_length(table, 3); + if (hres != S_OK || disp == NULL) + return; + + hres = IDispatch_QueryInterface(disp, &IID_IHTMLTableRow, (void**)&row); + IDispatch_Release(disp); + + ok(hres == S_OK, "QueryInterface failed: %08x\n", hres); + ok(row != NULL, "row == NULL\n"); + + index = 0xdeadbeef; + hres = IHTMLTableRow_get_rowIndex(row, &index); + ok(hres == S_OK, "get_rowIndex failed: %08x\n", hres); + ok(index == 0, "index = %d, expected 0\n", index); + + IHTMLTableRow_Release(row); + + hres = IHTMLTable_deleteRow(table, 0); + ok(hres == S_OK, "deleteRow failed: %08x\n", hres); + test_table_length(table, 2); +} + static void test_table_elem(IHTMLElement *elem) { IHTMLElementCollection *col; IHTMLTable *table; + IHTMLTable3 *table3; IHTMLDOMNode *node; VARIANT v; HRESULT hres; @@ -5737,6 +6310,11 @@ hres = IHTMLElement_QueryInterface(elem, &IID_IHTMLTable, (void**)&table); ok(hres == S_OK, "Could not get IHTMLTable iface: %08x\n", hres); + if(FAILED(hres)) + return; + + hres = IHTMLElement_QueryInterface(elem, &IID_IHTMLTable3, (void**)&table3); + ok(hres == S_OK, "Could not get IHTMLTable3 iface: %08x\n", hres); if(FAILED(hres)) return; @@ -5808,7 +6386,7 @@ hres = IHTMLTable_get_bgColor(table, &vbg); ok(hres == S_OK, "get_bgColor failed: %08x\n", hres); - ok(V_VT(&vDefaultbg) == VT_BSTR, "V_VT(&vDefaultbg) != VT_BSTR\n"); + ok(V_VT(&vbg) == VT_BSTR, "V_VT(&vbg) != VT_BSTR\n"); ok(!strcmp_wa(V_BSTR(&vbg), "#ff0000"), "Unexpected bgcolor %s\n", wine_dbgstr_w(V_BSTR(&vbg))); VariantClear(&vbg); @@ -5820,7 +6398,7 @@ hres = IHTMLTable_get_bgColor(table, &vbg); ok(hres == S_OK, "get_bgColor failed: %08x\n", hres); - ok(V_VT(&vDefaultbg) == VT_BSTR, "V_VT(&vDefaultbg) != VT_BSTR\n"); + ok(V_VT(&vbg) == VT_BSTR, "V_VT(&vbg) != VT_BSTR\n"); ok(!strcmp_wa(V_BSTR(&vbg), "#ff0000"), "Unexpected bgcolor %s\n", wine_dbgstr_w(V_BSTR(&vbg))); VariantClear(&vbg); @@ -5829,6 +6407,76 @@ ok(hres == S_OK, "put_bgColor failed: %08x\n", hres); VariantClear(&vDefaultbg); + V_VT(&v) = VT_BSTR; + V_BSTR(&v) = a2bstr("11"); + hres = IHTMLTable_put_width(table, v); + ok(hres == S_OK, "put_width = %08x\n", hres); + VariantClear(&v); + IHTMLTable_get_width(table, &v); + ok(hres == S_OK, "get_width = %08x\n", hres); + ok(!strcmp_wa(V_BSTR(&v), "11"), "Expected 11, got %s\n", wine_dbgstr_w(V_BSTR(&v))); + VariantClear(&v); + + V_VT(&v) = VT_BSTR; + V_BSTR(&v) = a2bstr("11.9"); + hres = IHTMLTable_put_width(table, v); + ok(hres == S_OK, "put_width = %08x\n", hres); + VariantClear(&v); + IHTMLTable_get_width(table, &v); + ok(hres == S_OK, "get_width = %08x\n", hres); + ok(!strcmp_wa(V_BSTR(&v), "11"), "Expected 11, got %s\n", wine_dbgstr_w(V_BSTR(&v))); + VariantClear(&v); + + V_VT(&v) = VT_BSTR; + V_BSTR(&v) = a2bstr("40.2%"); + hres = IHTMLTable_put_width(table, v); + ok(hres == S_OK, "put_width = %08x\n", hres); + VariantClear(&v); + IHTMLTable_get_width(table, &v); + ok(hres == S_OK, "get_width = %08x\n", hres); + ok(!strcmp_wa(V_BSTR(&v), "40.2%"), "Expected 40.2%%, got %s\n", wine_dbgstr_w(V_BSTR(&v))); + VariantClear(&v); + + V_VT(&v) = VT_I4; + V_I4(&v) = 11; + hres = IHTMLTable_put_width(table, v); + ok(hres == S_OK, "put_width = %08x\n", hres); + IHTMLTable_get_width(table, &v); + ok(hres == S_OK, "get_width = %08x\n", hres); + ok(!strcmp_wa(V_BSTR(&v), "11"), "Expected 11, got %s\n", wine_dbgstr_w(V_BSTR(&v))); + VariantClear(&v); + + V_VT(&v) = VT_R8; + V_R8(&v) = 11.9; + hres = IHTMLTable_put_width(table, v); + ok(hres == S_OK, "put_width = %08x\n", hres); + IHTMLTable_get_width(table, &v); + ok(hres == S_OK, "get_width = %08x\n", hres); + ok(!strcmp_wa(V_BSTR(&v), "11"), "Expected 11, got %s\n", wine_dbgstr_w(V_BSTR(&v))); + VariantClear(&v); + + + bstr = a2bstr("box"); + hres = IHTMLTable_put_frame(table, bstr); + ok(hres == S_OK, "put_frame = %08x\n", hres); + SysFreeString(bstr); + hres = IHTMLTable_get_frame(table, &bstr); + ok(hres == S_OK, "get_frame = %08x\n", hres); + ok(!strcmp_wa(bstr, "box"), "Expected box, got %s\n", wine_dbgstr_w(bstr)); + SysFreeString(bstr); + + test_table_modify(table); + bstr = a2bstr("summary"); + hres = IHTMLTable3_put_summary(table3, bstr); + ok(hres == S_OK, "put_summary = %08x\n", hres); + SysFreeString(bstr); + + hres = IHTMLTable3_get_summary(table3, &bstr); + ok(hres == S_OK, "get_summary = %08x\n", hres); + ok(!strcmp_wa(bstr, "summary"), "Expected summary, got %s\n", wine_dbgstr_w(bstr)); + SysFreeString(bstr); + + IHTMLTable3_Release(table3); IHTMLTable_Release(table); } @@ -6087,6 +6735,8 @@ hres = IHTMLStyleSheet_get_rules(stylesheet, &col); ok(hres == S_OK, "get_rules failed: %08x\n", hres); ok(col != NULL, "col == NULL\n"); + + test_disp2((IUnknown*)col, &DIID_DispHTMLStyleSheetRulesCollection, &IID_IHTMLStyleSheetRulesCollection, "[object]"); IHTMLStyleSheetRulesCollection_Release(col); href = (void*)0xdeadbeef; @@ -6180,7 +6830,55 @@ IDispatchEx_Release(dispex); } - +static void test_enum_children(IUnknown *unk, unsigned len) +{ + IEnumVARIANT *enum_var; + ULONG i, fetched; + VARIANT v; + HRESULT hres; + + hres = IUnknown_QueryInterface(unk, &IID_IEnumVARIANT, (void**)&enum_var); + ok(hres == S_OK, "Could not get IEnumVARIANT iface: %08x\n", hres); + + for(i=0; i<len; i++) { + fetched = 0; + V_VT(&v) = VT_ERROR; + hres = IEnumVARIANT_Next(enum_var, 1, &v, i ? &fetched : NULL); + ok(hres == S_OK, "Next failed: %08x\n", hres); + if(i) + ok(fetched == 1, "fetched = %d\n", fetched); + ok(V_VT(&v) == VT_DISPATCH && V_DISPATCH(&v), "V_VT(v) = %d\n", V_VT(&v)); + IDispatch_Release(V_DISPATCH(&v)); + } + + fetched = 0xdeadbeef; + V_VT(&v) = VT_BOOL; + hres = IEnumVARIANT_Next(enum_var, 1, &v, &fetched); + ok(hres == S_FALSE, "Next returned %08x, expected S_FALSE\n", hres); + ok(fetched == 0, "fetched = %d\n", fetched); + ok(V_VT(&v) == VT_BOOL, "V_VT(v) = %d\n", V_VT(&v)); + + hres = IEnumVARIANT_Reset(enum_var); + ok(hres == S_OK, "Reset failed: %08x\n", hres); + + fetched = 0xdeadbeef; + V_VT(&v) = VT_BOOL; + hres = IEnumVARIANT_Next(enum_var, 0, &v, &fetched); + ok(hres == S_OK, "Next returned %08x, expected S_FALSE\n", hres); + ok(fetched == 0, "fetched = %d\n", fetched); + ok(V_VT(&v) == VT_BOOL, "V_VT(v) = %d\n", V_VT(&v)); + + hres = IEnumVARIANT_Skip(enum_var, len > 2 ? len-2 : 0); + ok(hres == S_OK, "Skip failed: %08x\n", hres); + + hres = IEnumVARIANT_Reset(enum_var); + ok(hres == S_OK, "Reset failed: %08x\n", hres); + + hres = IEnumVARIANT_Skip(enum_var, len+1); + ok(hres == S_FALSE, "Skip failed: %08x\n", hres); + + IEnumVARIANT_Release(enum_var); +} static void test_elems(IHTMLDocument2 *doc) { @@ -6239,6 +6937,15 @@ ok(hres == S_OK, "get_all failed: %08x\n", hres); test_elem_collection((IUnknown*)col, all_types, sizeof(all_types)/sizeof(all_types[0])); test_elem_col_item(col, "x", item_types, sizeof(item_types)/sizeof(item_types[0])); + + elem = get_elem_col_item_idx(col, 0); + test_elem_source_index(elem, 0); + IHTMLElement_Release(elem); + + elem = get_elem_col_item_idx(col, 3); + test_elem_source_index(elem, 3); + IHTMLElement_Release(elem); + IHTMLElementCollection_Release(col); hres = IHTMLDocument2_get_images(doc, &collection); @@ -6337,10 +7044,12 @@ test_elem_contains(elem, elem3, VARIANT_FALSE); test_elem_contains(elem, elem2, VARIANT_FALSE); test_elem_contains(elem, elem, VARIANT_TRUE); + test_elem_contains(elem, NULL, VARIANT_FALSE); IHTMLElement_Release(elem2); elem2 = test_elem_get_parent((IUnknown*)elem3); ok(elem2 == NULL, "elem2 != NULL\n"); + test_elem_source_index(elem3, 0); IHTMLElement_Release(elem3); test_elem_getelembytag((IUnknown*)elem, ET_OPTION, 2, NULL); @@ -6405,8 +7114,10 @@ ok(hres == S_OK, "get_type failed: %08x\n", hres); ok(type == NULL, "Unexpected type %s\n", wine_dbgstr_w(type)); - hres = IHTMLScriptElement_put_type (script, a2bstr ("text/javascript")); + type = a2bstr("text/javascript"); + hres = IHTMLScriptElement_put_type (script, type); ok(hres == S_OK, "put_type failed: %08x\n", hres); + SysFreeString(type); hres = IHTMLScriptElement_get_type(script, &type); ok(hres == S_OK, "get_type failed: %08x\n", hres); ok(!strcmp_wa(type, "text/javascript"), "Unexpected type %s\n", wine_dbgstr_w(type)); @@ -6482,12 +7193,24 @@ test_input_src(input, NULL); test_input_set_src(input, "about:blank"); + test_input_set_size(input, 15, S_OK); + test_input_get_size(input, 15); + test_input_set_size(input, -100, CTL_E_INVALIDPROPERTYVALUE); + test_input_get_size(input, 15); + test_input_set_size(input, 0, CTL_E_INVALIDPROPERTYVALUE); + test_input_get_size(input, 15); + + test_input_readOnly(input, VARIANT_TRUE); + test_input_readOnly(input, VARIANT_FALSE); + IHTMLInputElement_Release(input); IHTMLElement_Release(elem); } elem = get_elem_by_id(doc, "imgid", TRUE); if(elem) { + test_img_align((IUnknown*)elem, "left"); + test_img_name((IUnknown*)elem, "WineImg"); test_img_src((IUnknown*)elem, "", NULL); test_img_set_src((IUnknown*)elem, "about:blank"); test_img_src((IUnknown*)elem, "about:blank", NULL); @@ -6495,6 +7218,8 @@ test_img_set_alt((IUnknown*)elem, "alt test"); test_img_name((IUnknown*)elem, "WineImg"); test_img_complete(elem, VARIANT_FALSE); + test_img_isMap((IUnknown*)elem, VARIANT_TRUE); + test_img_isMap((IUnknown*)elem, VARIANT_FALSE); IHTMLElement_Release(elem); } @@ -6502,6 +7227,7 @@ if(elem) { test_dynamic_properties(elem); test_attr_collection(elem); + test_contenteditable((IUnknown*)elem); IHTMLElement_Release(elem); } @@ -6525,6 +7251,13 @@ ok(elem != NULL, "elem == NULL\n"); if(elem) { test_label_elem(elem); + IHTMLElement_Release(elem); + } + + elem = get_doc_elem_by_id(doc, "td2"); + ok(elem != NULL, "elem == NULL\n"); + if(elem) { + test_td_elem(elem); IHTMLElement_Release(elem); } @@ -6609,6 +7342,8 @@ test_meta_name((IUnknown*)elem, "meta name"); test_meta_content((IUnknown*)elem, "text/html; charset=utf-8"); test_meta_httpequiv((IUnknown*)elem, "Content-Type"); + test_meta_charset((IUnknown*)elem, NULL); + set_meta_charset((IUnknown*)elem, "utf-8"); IHTMLElement_Release(elem); } @@ -6640,6 +7375,7 @@ child_col = get_child_nodes((IUnknown*)elem); ok(child_col != NULL, "child_coll == NULL\n"); if(child_col) { + IUnknown *enum_unk; LONG length = 0; test_disp((IUnknown*)child_col, &DIID_DispDOMChildrenCollection, "[object]"); @@ -6690,6 +7426,13 @@ ok(hres == E_INVALIDARG, "item failed: %08x, expected E_INVALIDARG\n", hres); test_child_col_disp(child_col); + + hres = IHTMLDOMChildrenCollection_get__newEnum(child_col, &enum_unk); + ok(hres == S_OK, "get__newEnum failed: %08x\n", hres); + + test_enum_children(enum_unk, length); + + IUnknown_Release(enum_unk); IHTMLDOMChildrenCollection_Release(child_col); } @@ -6814,12 +7557,31 @@ ok(!strcmp_wa(V_BSTR(&v), "divid"), "V_BSTR(v) = %s\n", wine_dbgstr_w(V_BSTR(&v))); VariantClear(&v); + V_VT(&v) = VT_BSTR; + V_BSTR(&v) = a2bstr("divid2"); + put_attr_node_value(attr, v); + + get_attr_node_value(attr, &v, VT_BSTR); + ok(!strcmp_wa(V_BSTR(&v), "divid2"), "V_BSTR(v) = %s\n", wine_dbgstr_w(V_BSTR(&v))); + VariantClear(&v); + IHTMLDOMAttribute_Release(attr); attr = get_elem_attr_node((IUnknown*)elem, "emptyattr", TRUE); get_attr_node_value(attr, &v, VT_BSTR); ok(!V_BSTR(&v), "V_BSTR(v) = %s\n", wine_dbgstr_w(V_BSTR(&v))); VariantClear(&v); + + V_VT(&v) = VT_BSTR; + V_BSTR(&v) = a2bstr("newvalue"); + put_attr_node_value(attr, v); + VariantClear(&v); + + attr = get_elem_attr_node((IUnknown*)elem, "emptyattr", TRUE); + get_attr_node_value(attr, &v, VT_BSTR); + ok(!strcmp_wa(V_BSTR(&v), "newvalue"), "V_BSTR(v) = %s\n", wine_dbgstr_w(V_BSTR(&v))); + VariantClear(&v); + test_attr_specified(attr, VARIANT_TRUE); IHTMLDOMAttribute_Release(attr); @@ -6830,6 +7592,14 @@ get_attr_node_value(attr, &v, VT_I4); ok(V_I4(&v) == 100, "V_I4(v) = %d\n", V_I4(&v)); test_attr_specified(attr, VARIANT_TRUE); + + V_VT(&v) = VT_I4; + V_I4(&v) = 150; + put_attr_node_value(attr, v); + + get_attr_node_value(attr, &v, VT_I4); + ok(V_I4(&v) == 150, "V_I4(v) = %d\n", V_I4(&v)); + IHTMLDOMAttribute_Release(attr); attr = get_elem_attr_node((IUnknown*)elem, "tabIndex", TRUE); @@ -6925,10 +7695,13 @@ if(elem) { test_link_disabled(elem, VARIANT_FALSE); test_link_rel(elem, "stylesheet"); + test_link_rev(elem, NULL); test_link_type(elem, "text/css"); test_link_href(elem, "about:blank"); + test_link_media(elem, "all"); link_put_disabled(elem, VARIANT_TRUE); link_put_rel(elem, "prev"); + link_put_rev(elem, "next"); link_put_type(elem, "text/plain"); link_put_href(elem, "about:prev"); IHTMLElement_Release(elem); @@ -6974,7 +7747,7 @@ test_insert_adjacent_elems(doc, div); test_elem_set_innerhtml((IUnknown*)div, - "<form id=\"form\"><input type=\"button\" /><div><input type=\"text\" /></div></textarea>"); + "<form id=\"form\"><input type=\"button\" /><div><input type=\"text\" id=\"inputid\"/></div></textarea>"); elem = get_elem_by_id(doc, "form", TRUE); if(elem) { test_form_length((IUnknown*)elem, 2); @@ -6993,6 +7766,12 @@ test_form_put_encoding((IUnknown*)elem, E_INVALIDARG, "image/png"); test_form_encoding((IUnknown*)elem, "multipart/form-data"); test_form_elements((IUnknown*)elem); + test_form_reset((IUnknown*)elem); + test_form_target((IUnknown*)elem); + IHTMLElement_Release(elem); + + elem = get_elem_by_id(doc, "inputid", TRUE); + test_input_get_form((IUnknown*)elem, "form"); IHTMLElement_Release(elem); } @@ -7023,6 +7802,7 @@ ok(type == 1, "type=%d\n", type); test_ifaces((IUnknown*)elem, elem_iids); test_disp((IUnknown*)elem, &DIID_DispHTMLGenericElement, "[object]"); + test_elem_source_index(elem, -1); body = doc_get_body(doc); test_node_has_child((IUnknown*)body, VARIANT_FALSE); @@ -7619,7 +8399,9 @@ ok(location == (void*)0xdeadbeef, "location changed\n"); br = test_create_elem(doc, "BR"); + test_elem_source_index(br, -1); test_node_append_child((IUnknown*)frag, (IUnknown*)br); + test_elem_source_index(br, 0); IHTMLElement_Release(br); div = get_elem_by_id(doc, "divid", TRUE); Modified: trunk/rostests/winetests/mshtml/events.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/events.c…
============================================================================== --- trunk/rostests/winetests/mshtml/events.c [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/events.c [iso-8859-1] Thu Oct 2 09:51:45 2014 @@ -88,7 +88,6 @@ static HWND container_hwnd = NULL; static IHTMLWindow2 *window; static IOleDocumentView *view; -static BOOL xy_todo; static BOOL is_ie9plus; typedef struct { @@ -1638,8 +1637,6 @@ CHECK_CALLED(invoke_onclick); } - xy_todo = TRUE; - SET_EXPECT(div_onclick); SET_EXPECT(div_onclick_attached); SET_EXPECT(body_onclick); @@ -1847,7 +1844,7 @@ ok(V_DISPATCH(&v) == (IDispatch*)&img_onerror_obj, "V_DISPATCH(onerror) != onerrorFunc\n"); VariantClear(&v); - str = a2bstr("
http://www.winehq.org/images/winehq_logo_text.png
"); + str = a2bstr("
https://www.winehq.org/images/winehq_logo_text.png
"); hres = IHTMLImgElement_put_src(img, str); ok(hres == S_OK, "put_src failed: %08x\n", hres); SysFreeString(str); @@ -2757,7 +2754,6 @@ MSG msg; HRESULT hres; - xy_todo = FALSE; doc = create_document(); if (!doc) return; Modified: trunk/rostests/winetests/mshtml/events.html URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/events.h…
============================================================================== --- trunk/rostests/winetests/mshtml/events.html [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/events.html [iso-8859-1] Thu Oct 2 09:51:45 2014 @@ -114,13 +114,15 @@ ok(calls == "div2,div2*,div1,div1*,body,body*", "calls = " + calls); } -function runTests(t) { +window.onload = function() { try { ok(cnt == 1, "cnt=" + cnt + " exception during loading?"); - ok(t === window, "t !== window"); + ok(this === window, "this !== window"); ok(typeof(window.onload) === "function", "typeof(window.onload) = " + typeof(window.onload)); ok(document.body.onload === window.onload, "document.body.onload !== window.onload"); + + ok(img_onload_called, "img.onload not called before window.onload"); test_scriptfor(); ondataavailable_test(); @@ -132,8 +134,18 @@ external.reportSuccess(); } </script> +<script> +var img = document.createElement("img"); +img.src = "
http://test.winehq.org/tests/winehq_snapshot/index_files/winehq_logo_glass.…
"; + +var img_onload_called = false; +img.onload = function() { + external.trace("img.onload"); + img_onload_called = true; +} +</script> </head> -<body onload="runTests(this)"> +<body> <div id="divid"></div> <div id="divid2"></div> <script event="onclick" for="divid2"> @@ -152,5 +164,8 @@ cnt++; })(); </script> +<script> +document.body.appendChild(img); +</script> </body> </html> Modified: trunk/rostests/winetests/mshtml/exectest.html URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/exectest…
============================================================================== --- trunk/rostests/winetests/mshtml/exectest.html [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/exectest.html [iso-8859-1] Thu Oct 2 09:51:45 2014 @@ -55,7 +55,7 @@ testPutSrc(); testPutText(); }catch(e) { - ok(false, "Got an exception"); + ok(false, "Got an exception " + e.message); } function testPutSrc2() { @@ -123,7 +123,7 @@ testPutSrc2(); testPutText2(); }catch(e) { - ok(false, "got an exception"); + ok(false, "got an exception " + e.message); } external.reportSuccess(); Modified: trunk/rostests/winetests/mshtml/htmldoc.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/htmldoc.…
============================================================================== --- trunk/rostests/winetests/mshtml/htmldoc.c [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/htmldoc.c [iso-8859-1] Thu Oct 2 09:51:45 2014 @@ -978,6 +978,7 @@ case 3000029: case 3000030: case 3000031: + case 3000032: /* TODO */ return S_OK; } @@ -2855,6 +2856,7 @@ test_readyState(NULL); return S_OK; case OLECMDID_UPDATETRAVELENTRY_DATARECOVERY: + case OLECMDID_PAGEAVAILABLE: case 6058: return E_FAIL; /* FIXME */ default: @@ -2864,7 +2866,7 @@ } if(IsEqualGUID(&CGID_ShellDocView, pguidCmdGroup)) { - if(nCmdID != 63 && (!is_refresh || nCmdID != 37)) + if(nCmdID != 63 && nCmdID != 178 && (!is_refresh || nCmdID != 37)) test_readyState(NULL); ok(nCmdexecopt == 0, "nCmdexecopts=%08x\n", nCmdexecopt); @@ -2976,13 +2978,16 @@ case 83: case 102: + case 133: case 134: /* TODO */ case 135: case 136: /* TODO */ + case 137: case 139: /* TODO */ case 143: /* TODO */ case 144: /* TODO */ case 178: + case 179: return E_NOTIMPL; default: @@ -3162,7 +3167,9 @@ ok(puArgErr != NULL, "puArgErr == NULL\n"); ok(V_VT(pVarResult) == 0, "V_VT(pVarResult)=%d, expected 0\n", V_VT(pVarResult)); ok(wFlags == DISPATCH_PROPERTYGET, "wFlags=%08x, expected DISPATCH_PROPERTYGET\n", wFlags); - test_readyState(NULL); + + if(dispIdMember != DISPID_AMBIENT_SILENT && dispIdMember != DISPID_AMBIENT_OFFLINEIFNOTCONNECTED) + test_readyState(NULL); switch(dispIdMember) { case DISPID_AMBIENT_USERMODE: @@ -3290,13 +3297,15 @@ { static const IID IID_IIETravelLog2 = {0xb67cefd2,0xe3f1,0x478a,{0x9b,0xfa,0xd8,0x93,0x70,0x37,0x5e,0x94}}; static const IID IID_unk_travellog = {0x6afc8b7f,0xbc17,0x4a95,{0x90,0x2f,0x6f,0x5c,0xb5,0x54,0xc3,0xd8}}; + static const IID IID_unk_travellog2 = {0xf6d02767,0x9c80,0x428d,{0xb9,0x74,0x3f,0x17,0x29,0x45,0x3f,0xdb}}; if(IsEqualGUID(&IID_IUnknown, riid) || IsEqualGUID(&IID_ITravelLog, riid)) { *ppv = iface; return S_OK; } - if(!IsEqualGUID(&IID_IIETravelLog2, riid) && !IsEqualGUID(&IID_unk_travellog, riid)) + if(!IsEqualGUID(&IID_IIETravelLog2, riid) && !IsEqualGUID(&IID_unk_travellog, riid) + && !IsEqualGUID(&IID_unk_travellog2, riid)) ok(0, "unexpected call %s\n", wine_dbgstr_guid(riid)); *ppv = NULL; @@ -3430,7 +3439,7 @@ ok(!pDispatch, "pDispatch = %p\n", pDispatch); ok(!strcmp_wa(lpszUrl, nav_url), "lpszUrl = %s, expected %s\n", wine_dbgstr_w(lpszUrl), nav_url); - ok(dwFlags == 0x40 || !dwFlags || dwFlags == 0x50, "dwFlags = %x\n", dwFlags); + ok(dwFlags == 0x140 /* IE11*/ || dwFlags == 0x40 || !dwFlags || dwFlags == 0x50, "dwFlags = %x\n", dwFlags); ok(!lpszFrameName, "lpszFrameName = %s\n", wine_dbgstr_w(lpszFrameName)); if(!testing_submit) { ok(!pPostData, "pPostData = %p\n", pPostData); @@ -5291,7 +5300,7 @@ switch(load_state) { case LD_DOLOAD: case LD_NO: - if(!nav_url) + if(!nav_url && !editmode) ok(!elem, "elem != NULL\n"); default: break; @@ -5453,8 +5462,29 @@ hres = IConnectionPoint_Advise(cp, (IUnknown*)&PropertyNotifySink, NULL); ok(hres == S_OK, "Advise failed: %08x\n", hres); } else if(IsEqualGUID(&IID_IDispatch, riid)) { + IEnumConnections *enum_conn; + CONNECTDATA conn_data; + ULONG fetched; + hres = IConnectionPoint_Advise(cp, (IUnknown*)&EventDispatch, &cookie); ok(hres == S_OK, "Advise failed: %08x\n", hres); + + hres = IConnectionPoint_EnumConnections(cp, &enum_conn); + ok(hres == S_OK, "EnumConnections failed: %08x\n", hres); + + fetched = 0; + hres = IEnumConnections_Next(enum_conn, 1, &conn_data, &fetched); + ok(hres == S_OK, "Next failed: %08x\n", hres); + ok(conn_data.pUnk == (IUnknown*)&EventDispatch, "conn_data.pUnk == EventDispatch\n"); + ok(conn_data.dwCookie == cookie, "conn_data.dwCookie != cookie\n"); + IUnknown_Release(conn_data.pUnk); + + fetched = 0xdeadbeef; + hres = IEnumConnections_Next(enum_conn, 1, &conn_data, &fetched); + ok(hres == S_FALSE, "Next failed: %08x\n", hres); + ok(!fetched, "fetched = %d\n", fetched); + + IEnumConnections_Release(enum_conn); } IConnectionPoint_Release(cp); @@ -5722,6 +5752,8 @@ SET_EXPECT(NavigateWithBindCtx); SET_EXPECT(Exec_Explorer_38); /* todo_wine */ } + if(editmode || is_refresh) + SET_EXPECT(Exec_ShellDocView_138); expect_status_text = (LPWSTR)0xdeadbeef; /* TODO */ while(!*b && GetMessageW(&msg, NULL, 0, 0)) { @@ -5844,6 +5876,8 @@ CHECK_CALLED(NavigateWithBindCtx); todo_wine CHECK_NOT_CALLED(Exec_Explorer_38); } + if(editmode || is_refresh) + CLEAR_CALLED(Exec_ShellDocView_138); /* IE11 */ if(!is_extern) load_state = LD_COMPLETE; @@ -5949,7 +5983,7 @@ CHECK_CALLED(TranslateUrl); if(support_wbapp) { CHECK_CALLED(FireBeforeNavigate2); - CHECK_CALLED(Exec_ShellDocView_67); + CLEAR_CALLED(Exec_ShellDocView_67); /* Not called by IE11 */ if(!is_hash) { CHECK_CALLED(Invoke_AMBIENT_SILENT); CHECK_CALLED(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED); @@ -6015,7 +6049,7 @@ ok(hres == S_OK, "SuperNavigate failed: %08x\n", hres); CHECK_CALLED(TranslateUrl); - CHECK_CALLED(Exec_ShellDocView_67); + CLEAR_CALLED(Exec_ShellDocView_67); /* Not called by IE11 */ CHECK_CALLED(Invoke_AMBIENT_SILENT); CHECK_CALLED(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED); CHECK_CALLED(Exec_ShellDocView_63); @@ -6086,8 +6120,8 @@ hres = IPersistHistory_LoadHistory(per_hist, history_stream, NULL); ok(hres == S_OK, "LoadHistory failed: %08x\n", hres); - CHECK_CALLED_BROKEN(Exec_ShellDocView_138); - CHECK_CALLED(Exec_ShellDocView_67); + CLEAR_CALLED(Exec_ShellDocView_138); /* Not called by IE11 */ + CLEAR_CALLED(Exec_ShellDocView_67); /* Not called by IE11 */ CHECK_CALLED(FireBeforeNavigate2); CHECK_CALLED(Invoke_AMBIENT_SILENT); CHECK_CALLED(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED); @@ -7810,11 +7844,11 @@ CHECK_CALLED(TranslateUrl); CHECK_CALLED(FireBeforeNavigate2); - CHECK_CALLED(Exec_ShellDocView_67); + CLEAR_CALLED(Exec_ShellDocView_67); /* Not called by IE11 */ CHECK_CALLED(Invoke_AMBIENT_SILENT); CHECK_CALLED(Invoke_AMBIENT_OFFLINEIFNOTCONNECTED); CHECK_CALLED(Exec_ShellDocView_63); - todo_wine CHECK_CALLED(Exec_ShellDocView_84); + CLEAR_CALLED(Exec_ShellDocView_84); /* Not called by IE11 */ CHECK_CALLED(CreateInstance); CHECK_CALLED(Start); CHECK_CALLED(Protocol_Read); Modified: trunk/rostests/winetests/mshtml/jstest.html URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/jstest.h…
============================================================================== --- trunk/rostests/winetests/mshtml/jstest.html [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/jstest.html [iso-8859-1] Thu Oct 2 09:51:45 2014 @@ -165,6 +165,9 @@ var tmp = div.addBehavior(); ok(tmp === "test", "div.addBehavior() = " + tmp); + + tmp = String(div.attachEvent); + ok(tmp == "\nfunction attachEvent() {\n [native code]\n}\n", "String(div.attachEvent) = " + tmp); } function test_forin() { @@ -245,7 +248,7 @@ try { runTests(); }catch(e) { - ok(false, "got exception"); + ok(false, "got exception " + e.message); } external.reportSuccess(); Modified: trunk/rostests/winetests/mshtml/nav_test.html URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/nav_test…
============================================================================== --- trunk/rostests/winetests/mshtml/nav_test.html [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/nav_test.html [iso-8859-1] Thu Oct 2 09:51:45 2014 @@ -18,6 +18,7 @@ } iframe.onload = function() { + iframe.onload = null; var href = iframe.contentWindow.location.href; ok(/.*blank2.html/.test(href), "Unexpected href " + href); next_test(); @@ -27,8 +28,24 @@ subframe.src = "blank.html"; } +function window_navigate_test() { + external.trace("Runnint window.navigate() tests..."); + + var iframe = document.getElementById("testframe"); + + iframe.onload = function() { + iframe.onlod = null; + var href = iframe.contentWindow.location.href; + ok(href === "about:blank", "Unexpected href " + href); + next_test(); + } + + iframe.contentWindow.navigate("about:blank"); +} + var tests = [ nav_back_test, + window_navigate_test, function() { external.reportSuccess(); } ]; Modified: trunk/rostests/winetests/mshtml/script.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/script.c…
============================================================================== --- trunk/rostests/winetests/mshtml/script.c [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/script.c [iso-8859-1] Thu Oct 2 09:51:45 2014 @@ -132,6 +132,8 @@ DEFINE_EXPECT(AXSetInterfaceSafetyOptions_IDispatchEx_caller); DEFINE_EXPECT(external_success); DEFINE_EXPECT(QS_VariantConversion); +DEFINE_EXPECT(QS_IActiveScriptSite); +DEFINE_EXPECT(QS_GetCaller); DEFINE_EXPECT(ChangeType); #define TESTSCRIPT_CLSID "{178fc163-f585-4e24-9c13-4bb7faf80746}" @@ -162,6 +164,9 @@ static HRESULT ax_setopt_disp_caller_hres = S_OK, ax_setopt_disp_data_hres = S_OK; static BOOL skip_loadobject_tests; +static IActiveScriptSite *site; +static SCRIPTSTATE state; + static int strcmp_wa(LPCWSTR strw, const char *stra) { CHAR buf[512]; @@ -330,6 +335,19 @@ ok(IsEqualGUID(riid, &IID_IVariantChangeType), "uenxpected riid %s\n", wine_dbgstr_guid(riid)); *ppv = &VChangeType; return S_OK; + } + + if(IsEqualGUID(guidService, &IID_IActiveScriptSite)) { + CHECK_EXPECT(QS_IActiveScriptSite); + ok(IsEqualGUID(riid, &IID_IOleCommandTarget), "uenxpected riid %s\n", wine_dbgstr_guid(riid)); + return IActiveScriptSite_QueryInterface(site, riid, ppv); + } + + if(IsEqualGUID(guidService, &SID_GetCaller)) { + CHECK_EXPECT(QS_GetCaller); + ok(IsEqualGUID(riid, &IID_IServiceProvider), "uenxpected riid %s\n", wine_dbgstr_guid(riid)); + *ppv = NULL; + return E_NOINTERFACE; } ok(0, "unexpected service %s\n", wine_dbgstr_guid(guidService)); @@ -1280,9 +1298,6 @@ IHTMLElement_Release(body); } -static IActiveScriptSite *site; -static SCRIPTSTATE state; - static HRESULT WINAPI ObjectSafety_QueryInterface(IObjectSafety *iface, REFIID riid, void **ppv) { *ppv = NULL; @@ -1902,6 +1917,22 @@ hres = dispex_propput(obj, id, 0, &var, NULL); ok(hres == E_NOTIMPL, "InvokeEx failed: %08x\n", hres); + hres = dispex_propget(dispex, DISPID_VALUE, &var, NULL); + ok(hres == E_ACCESSDENIED, "InvokeEx returned: %08x, expected E_ACCESSDENIED\n", hres); + if(SUCCEEDED(hres)) + VariantClear(&var); + + SET_EXPECT(QS_IActiveScriptSite); + SET_EXPECT(QS_GetCaller); + hres = dispex_propget(dispex, DISPID_VALUE, &var, &caller_sp); + ok(hres == S_OK, "InvokeEx returned: %08x, expected S_OK\n", hres); + ok(V_VT(&var) == VT_BSTR, "V_VT(var) = %d\n", V_VT(&var)); + ok(!strcmp_wa(V_BSTR(&var), "\nfunction toString() {\n [native code]\n}\n"), + "V_BSTR(var) = %s\n", wine_dbgstr_w(V_BSTR(&var))); + VariantClear(&var); + todo_wine CHECK_CALLED(QS_IActiveScriptSite); + todo_wine CHECK_CALLED(QS_GetCaller); + IDispatchEx_Release(dispex); } @@ -2054,11 +2085,18 @@ test_elem_disabled(elem, VARIANT_TRUE); V_VT(&v) = VT_I4; - V_BSTR(&v) = 0; + V_I4(&v) = 0; hres = dispex_propput(dispex, DISPID_IHTMLELEMENT3_DISABLED, 0, &v, NULL); ok(hres == S_OK, "InvokeEx failed: %08x\n", hres); test_elem_disabled(elem, VARIANT_FALSE); + + V_VT(&v) = VT_I4; + V_I4(&v) = 1; + hres = dispex_propput(dispex, DISPID_IHTMLELEMENT3_DISABLED, DISPATCH_PROPERTYPUTREF, &v, NULL); + ok(hres == S_OK, "InvokeEx failed: %08x\n", hres); + + test_elem_disabled(elem, VARIANT_TRUE); IHTMLElement_Release(elem); IDispatchEx_Release(dispex); Modified: trunk/rostests/winetests/mshtml/style.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/style.c?…
============================================================================== --- trunk/rostests/winetests/mshtml/style.c [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/style.c [iso-8859-1] Thu Oct 2 09:51:45 2014 @@ -59,6 +59,22 @@ return ret; } +static const WCHAR *strstr_wa(const WCHAR *str, const char *suba) +{ + BSTR sub; + const WCHAR *ret = NULL; + sub = a2bstr(suba); + while (*str) + { + const WCHAR *p1 = str, *p2 = sub; + while (*p1 && *p2 && *p1 == *p2) { p1++; p2++; } + if (!*p2) {ret = str; break;} + str++; + } + SysFreeString(sub); + return ret; +} + #define test_var_bstr(a,b) _test_var_bstr(__LINE__,a,b) static void _test_var_bstr(unsigned line, const VARIANT *v, const char *expect) { @@ -421,6 +437,18 @@ hres = IHTMLStyle2_get_overflowY(style2, &str); ok(hres == S_OK, "get_overflowY failed: %08x\n", hres); ok(!strcmp_wa(str, "hidden"), "overflowX = %s\n", wine_dbgstr_w(str)); + + /* tableLayout */ + str = a2bstr("fixed"); + hres = IHTMLStyle2_put_tableLayout(style2, str); + ok(hres == S_OK, "put_tableLayout failed: %08x\n", hres); + SysFreeString(str); + + str = (void*)0xdeadbeef; + hres = IHTMLStyle2_get_tableLayout(style2, &str); + ok(hres == S_OK, "get_tableLayout failed: %08x\n", hres); + ok(!strcmp_wa(str, "fixed"), "tableLayout = %s\n", wine_dbgstr_w(str)); + SysFreeString(str); } static void test_style3(IHTMLStyle3 *style3) @@ -471,6 +499,57 @@ VariantClear(&vdefault); } +static void test_style5(IHTMLStyle5 *style5) +{ + HRESULT hres; + VARIANT v; + VARIANT vdefault; + + /* minWidth */ + hres = IHTMLStyle5_get_minWidth(style5, &vdefault); + ok(hres == S_OK, "get_minWidth failed: %08x\n", hres); + + V_VT(&v) = VT_BSTR; + V_BSTR(&v) = a2bstr("12px"); + hres = IHTMLStyle5_put_minWidth(style5, v); + ok(hres == S_OK, "put_minWidth failed: %08x\n", hres); + VariantClear(&v); + + hres = IHTMLStyle5_get_minWidth(style5, &v); + ok(hres == S_OK, "get_minWidth failed: %08x\n", hres); + ok(V_VT(&v) == VT_BSTR, "V_VT(v) = %d\n", V_VT(&v)); + ok(!strcmp_wa(V_BSTR(&v), "12px"), "expect 12px got (%s)\n", wine_dbgstr_w(V_BSTR(&v))); + VariantClear(&v); + + V_VT(&v) = VT_BSTR; + V_BSTR(&v) = a2bstr("10%"); + hres = IHTMLStyle5_put_minWidth(style5, v); + ok(hres == S_OK, "put_minWidth failed: %08x\n", hres); + VariantClear(&v); + + hres = IHTMLStyle5_get_minWidth(style5, &v); + ok(hres == S_OK, "get_minWidth failed: %08x\n", hres); + ok(V_VT(&v) == VT_BSTR, "V_VT(v) = %d\n", V_VT(&v)); + ok(!strcmp_wa(V_BSTR(&v), "10%"), "expect 10%% got (%s)\n", wine_dbgstr_w(V_BSTR(&v))); + VariantClear(&v); + + V_VT(&v) = VT_BSTR; + V_BSTR(&v) = a2bstr("10"); + hres = IHTMLStyle5_put_minWidth(style5, v); + ok(hres == S_OK, "put_minWidth failed: %08x\n", hres); + VariantClear(&v); + + hres = IHTMLStyle5_get_minWidth(style5, &v); + ok(hres == S_OK, "get_minWidth failed: %08x\n", hres); + ok(V_VT(&v) == VT_BSTR, "V_VT(v) = %d\n", V_VT(&v)); + ok(!strcmp_wa(V_BSTR(&v), "10px"), "expect 10px got (%s)\n", wine_dbgstr_w(V_BSTR(&v))); + VariantClear(&v); + + hres = IHTMLStyle5_put_minWidth(style5, vdefault); + ok(hres == S_OK, "put_minWidth failed: %08x\n", hres); + VariantClear(&vdefault); +} + static void test_style6(IHTMLStyle6 *style) { BSTR str; @@ -516,6 +595,7 @@ IHTMLStyle2 *style2; IHTMLStyle3 *style3; IHTMLStyle4 *style4; + IHTMLStyle5 *style5; IHTMLStyle6 *style6; VARIANT_BOOL b; VARIANT v; @@ -742,6 +822,28 @@ todo_wine ok(!strcmp_wa(V_BSTR(&v), "#00fdfd"), "V_BSTR(color) = %s\n", wine_dbgstr_w(V_BSTR(&v))); + V_VT(&v) = VT_I4; + V_I4(&v) = 3; + hres = IHTMLStyle_put_lineHeight(style, v); + ok(hres == S_OK, "put_lineHeight failed: %08x\n", hres); + + hres = IHTMLStyle_get_lineHeight(style, &v); + ok(hres == S_OK, "get_lineHeight failed: %08x\n", hres); + ok(V_VT(&v) == VT_BSTR, "V_VT(lineHeight) = %d, expect VT_BSTR\n", V_VT(&v)); + ok(!strcmp_wa(V_BSTR(&v), "3"), "V_BSTR(lineHeight) = %s\n", wine_dbgstr_w(V_BSTR(&v))); + + V_VT(&v) = VT_BSTR; + V_BSTR(&v) = a2bstr("300%"); + hres = IHTMLStyle_put_lineHeight(style, v); + ok(hres == S_OK, "put_lineHeight failed: %08x\n", hres); + VariantClear(&v); + + hres = IHTMLStyle_get_lineHeight(style, &v); + ok(hres == S_OK, "get_lineHeight failed: %08x\n", hres); + ok(V_VT(&v) == VT_BSTR, "V_VT(lineHeight) = %d, expect VT_BSTR\n", V_VT(&v)); + ok(!strcmp_wa(V_BSTR(&v), "300%"), "V_BSTR(lineHeight) = %s\n", wine_dbgstr_w(V_BSTR(&v))); + VariantClear(&v); + b = 0xfefe; hres = IHTMLStyle_get_textDecorationUnderline(style, &b); ok(hres == S_OK, "get_textDecorationUnderline failed: %08x\n", hres); @@ -861,6 +963,11 @@ f == 2.2f, /* IE8 */ "f = %f\n", f); + l = 0xdeadbeef; + hres = IHTMLStyle_get_pixelWidth(style, &l); + ok(hres == S_OK, "get_pixelWidth failed: %08x\n", hres); + ok(l == 2, "pixelWidth = %d\n", l); + V_VT(&v) = VT_BSTR; V_BSTR(&v) = a2bstr("auto"); hres = IHTMLStyle_put_width(style, v); @@ -879,6 +986,11 @@ hres = IHTMLStyle_put_width(style, v); ok(hres == S_OK, "put_width failed: %08x\n", hres); + l = 0xdeadbeef; + hres = IHTMLStyle_get_pixelWidth(style, &l); + ok(hres == S_OK, "get_pixelWidth failed: %08x\n", hres); + ok(l == 100, "pixelWidth = %d\n", l); + V_VT(&v) = VT_EMPTY; hres = IHTMLStyle_get_width(style, &v); ok(hres == S_OK, "get_width failed: %08x\n", hres); @@ -888,6 +1000,14 @@ hres = IHTMLStyle_put_pixelWidth(style, 50); ok(hres == S_OK, "put_pixelWidth failed: %08x\n", hres); + + l = 0xdeadbeef; + hres = IHTMLStyle_get_pixelWidth(style, &l); + ok(hres == S_OK, "get_pixelWidth failed: %08x\n", hres); + ok(l == 50, "pixelWidth = %d\n", l); + + hres = IHTMLStyle_get_pixelWidth(style, NULL); + ok(hres == E_POINTER, "get_pixelWidth failed: %08x\n", hres); V_VT(&v) = VT_EMPTY; hres = IHTMLStyle_get_width(style, &v); @@ -1062,6 +1182,9 @@ ok(hres == S_OK, "get_pixelLeft failed: %08x\n", hres); ok(l == 6, "pixelLeft = %d\n", l); + hres = IHTMLStyle_get_pixelLeft(style, NULL); + ok(hres == E_POINTER, "get_pixelLeft failed: %08x\n", hres); + V_VT(&v) = VT_EMPTY; hres = IHTMLStyle_get_left(style, &v); ok(hres == S_OK, "get_left failed: %08x\n", hres); @@ -1087,6 +1210,17 @@ f == 4.9f, /* IE8 */ "expected 4.0 or 4.9 (IE8) got %f\n", f); + hres = IHTMLStyle_put_pixelTop(style, 6); + ok(hres == S_OK, "put_pixelTop failed: %08x\n", hres); + + l = 0xdeadbeef; + hres = IHTMLStyle_get_pixelTop(style, &l); + ok(hres == S_OK, "get_pixelTop failed: %08x\n", hres); + ok(l == 6, "pixelTop = %d\n", l); + + hres = IHTMLStyle_get_pixelTop(style, NULL); + ok(hres == E_POINTER, "get_pixelTop failed: %08x\n", hres); + V_VT(&v) = VT_BSTR; V_BSTR(&v) = a2bstr("3px"); hres = IHTMLStyle_put_top(style, v); @@ -1104,6 +1238,11 @@ ok(hres == S_OK, "get_posTop failed: %08x\n", hres); ok(f == 3.0, "expected 3.0 got %f\n", f); + l = 0xdeadbeef; + hres = IHTMLStyle_get_pixelTop(style, &l); + ok(hres == S_OK, "get_pixelTop failed: %08x\n", hres); + ok(l == 3, "pixelTop = %d\n", l); + V_VT(&v) = VT_NULL; hres = IHTMLStyle_put_top(style, v); ok(hres == S_OK, "put_top failed: %08x\n", hres); @@ -1115,6 +1254,11 @@ ok(!V_BSTR(&v), "V_BSTR(v) != NULL\n"); VariantClear(&v); + l = 0xdeadbeef; + hres = IHTMLStyle_get_pixelTop(style, &l); + ok(hres == S_OK, "get_pixelTop failed: %08x\n", hres); + ok(!l, "pixelTop = %d\n", l); + /* Test posHeight */ hres = IHTMLStyle_get_posHeight(style, NULL); ok(hres == E_POINTER, "get_posHeight failed: %08x\n", hres); @@ -1131,6 +1275,11 @@ ok(hres == S_OK, "get_posHeight failed: %08x\n", hres); ok(f == 0.0, "expected 0.0 got %f\n", f); + l = 0xdeadbeef; + hres = IHTMLStyle_get_pixelHeight(style, &l); + ok(hres == S_OK, "get_pixelHeight failed: %08x\n", hres); + ok(!l, "pixelHeight = %d\n", l); + hres = IHTMLStyle_put_posHeight(style, 4.9f); ok(hres == S_OK, "put_posHeight failed: %08x\n", hres); @@ -1140,6 +1289,13 @@ f == 4.9f, /* IE8 */ "expected 4.0 or 4.9 (IE8) got %f\n", f); + l = 0xdeadbeef; + hres = IHTMLStyle_get_pixelHeight(style, &l); + ok(hres == S_OK, "get_pixelHeight failed: %08x\n", hres); + ok(l == 4 || + l == 5, /* IE8 */ + "pixelHeight = %d\n", l); + V_VT(&v) = VT_BSTR; V_BSTR(&v) = a2bstr("70px"); hres = IHTMLStyle_put_height(style, v); @@ -1153,6 +1309,11 @@ ok(!strcmp_wa(V_BSTR(&v), "70px"), "V_BSTR(v) = %s\n", wine_dbgstr_w(V_BSTR(&v))); VariantClear(&v); + l = 0xdeadbeef; + hres = IHTMLStyle_get_pixelHeight(style, &l); + ok(hres == S_OK, "get_pixelHeight failed: %08x\n", hres); + ok(l == 70, "pixelHeight = %d\n", l); + V_VT(&v) = VT_BSTR; V_BSTR(&v) = NULL; hres = IHTMLStyle_put_height(style, v); @@ -1166,6 +1327,22 @@ ok(!V_BSTR(&v), "V_BSTR(v) = %s, expected NULL\n", wine_dbgstr_w(V_BSTR(&v))); VariantClear(&v); + l = 0xdeadbeef; + hres = IHTMLStyle_get_pixelHeight(style, &l); + ok(hres == S_OK, "get_pixelHeight failed: %08x\n", hres); + ok(!l, "pixelHeight = %d\n", l); + + hres = IHTMLStyle_put_pixelHeight(style, 50); + ok(hres == S_OK, "put_pixelHeight failed: %08x\n", hres); + + l = 0xdeadbeef; + hres = IHTMLStyle_get_pixelHeight(style, &l); + ok(hres == S_OK, "get_pixelHeight failed: %08x\n", hres); + ok(l == 50, "pixelHeight = %d\n", l); + + hres = IHTMLStyle_get_pixelHeight(style, NULL); + ok(hres == E_POINTER, "get_pixelHeight failed: %08x\n", hres); + V_VT(&v) = VT_I4; V_I4(&v) = 64; hres = IHTMLStyle_put_height(style, v); @@ -1182,6 +1359,11 @@ ok(hres == S_OK, "get_posHeight failed: %08x\n", hres); ok(f == 64.0, "expected 64.0 got %f\n", f); + l = 0xdeadbeef; + hres = IHTMLStyle_get_pixelHeight(style, &l); + ok(hres == S_OK, "get_pixelHeight failed: %08x\n", hres); + ok(l == 64, "pixelHeight = %d\n", l); + str = (void*)0xdeadbeef; hres = IHTMLStyle_get_cursor(style, &str); ok(hres == S_OK, "get_cursor failed: %08x\n", hres); @@ -1248,6 +1430,39 @@ ok(!strcmp_wa(str, "center"), "textAlign = %s\n", wine_dbgstr_w(V_BSTR(&v))); SysFreeString(str); + V_VT(&v) = VT_NULL; + hres = IHTMLStyle_get_textIndent(style, &v); + ok(hres == S_OK, "get_textIndent failed: %08x\n", hres); + ok(V_VT(&v) == VT_BSTR, "V_VT(textIndent) = %d\n", V_VT(&v)); + ok(!V_BSTR(&v), "V_BSTR(textIndent) = %s\n", wine_dbgstr_w(V_BSTR(&v))); + + V_VT(&v) = VT_I4; + V_I4(&v) = 6; + hres = IHTMLStyle_put_textIndent(style, v); + ok(hres == S_OK, "put_textIndent failed: %08x\n", hres); + + V_VT(&v) = VT_NULL; + hres = IHTMLStyle_get_textIndent(style, &v); + ok(hres == S_OK, "get_textIndent failed: %08x\n", hres); + ok(V_VT(&v) == VT_BSTR, "V_VT(textIndent) = %d\n", V_VT(&v)); + ok(!strcmp_wa(V_BSTR(&v), "6px"), "V_BSTR(textIndent) = %s\n", wine_dbgstr_w(V_BSTR(&v))); + + str = (void*)0xdeadbeef; + hres = IHTMLStyle_get_textTransform(style, &str); + ok(hres == S_OK, "get_textTransform failed: %08x\n", hres); + ok(!str, "textTransform != NULL\n"); + + str = a2bstr("lowercase"); + hres = IHTMLStyle_put_textTransform(style, str); + ok(hres == S_OK, "put_textTransform failed: %08x\n", hres); + SysFreeString(str); + + str = NULL; + hres = IHTMLStyle_get_textTransform(style, &str); + ok(hres == S_OK, "get_textTransform failed: %08x\n", hres); + ok(!strcmp_wa(str, "lowercase"), "textTransform = %s\n", wine_dbgstr_w(V_BSTR(&v))); + SysFreeString(str); + str = (void*)0xdeadbeef; hres = IHTMLStyle_get_filter(style, &str); ok(hres == S_OK, "get_filter failed: %08x\n", hres); @@ -1477,6 +1692,16 @@ ok(V_VT(&v) == VT_BSTR, "type failed: %d\n", V_VT(&v)); ok(!strcmp_wa(V_BSTR(&v), "red"), "str=%s\n", wine_dbgstr_w(V_BSTR(&v))); VariantClear(&v); + + str = a2bstr("fixed"); + hres = IHTMLStyle_put_backgroundAttachment(style, str); + ok(hres == S_OK, "put_backgroundAttachment failed: %08x\n", hres); + SysFreeString(str); + + hres = IHTMLStyle_get_backgroundAttachment(style, &str); + ok(hres == S_OK, "get_backgroundAttachment failed: %08x\n", hres); + ok(!strcmp_wa(str, "fixed"), "ret = %s\n", wine_dbgstr_w(str)); + SysFreeString(str); /* padding */ hres = IHTMLStyle_get_padding(style, &str); @@ -2106,7 +2331,34 @@ hres = IHTMLStyle_get_listStyleType(style, &str); ok(hres == S_OK, "get_listStyleType failed: %08x\n", hres); ok(!strcmp_wa(str, "square"), "listStyleType = %s\n", wine_dbgstr_w(str)); - SysFreeString(str); + + str = a2bstr("inside"); + hres = IHTMLStyle_put_listStylePosition(style, str); + ok(hres == S_OK, "put_listStylePosition failed: %08x\n", hres); + SysFreeString(str); + + hres = IHTMLStyle_get_listStylePosition(style, &str); + ok(hres == S_OK, "get_listStylePosition failed: %08x\n", hres); + ok(!strcmp_wa(str, "inside"), "listStyleType = %s\n", wine_dbgstr_w(str)); + SysFreeString(str); + + str = a2bstr("decimal-leading-zero none inside"); + hres = IHTMLStyle_put_listStyle(style, str); + ok(hres == S_OK || broken(hres == E_INVALIDARG), /* win 2000 */ + "put_listStyle(%s) failed: %08x\n", wine_dbgstr_w(str), hres); + SysFreeString(str); + + if (hres != E_INVALIDARG) { + hres = IHTMLStyle_get_listStyle(style, &str); + ok(hres == S_OK, "get_listStyle failed: %08x\n", hres); + ok(strstr_wa(str, "decimal-leading-zero") && + strstr_wa(str, "none") != NULL && + strstr_wa(str, "inside") != NULL, + "listStyle = %s\n", wine_dbgstr_w(str)); + SysFreeString(str); + } else { + win_skip("IHTMLStyle_put_listStyle already failed\n"); + } hres = IHTMLStyle_QueryInterface(style, &IID_IHTMLStyle2, (void**)&style2); ok(hres == S_OK, "Could not get IHTMLStyle2 iface: %08x\n", hres); @@ -2127,6 +2379,14 @@ if(SUCCEEDED(hres)) { test_style4(style4); IHTMLStyle4_Release(style4); + } + + hres = IHTMLStyle_QueryInterface(style, &IID_IHTMLStyle5, (void**)&style5); + if(SUCCEEDED(hres)) { + test_style5(style5); + IHTMLStyle5_Release(style5); + }else { + win_skip("IHTMLStyle5 not available\n"); } hres = IHTMLStyle_QueryInterface(style, &IID_IHTMLStyle6, (void**)&style6); @@ -2490,6 +2750,10 @@ ok(V_VT(&v) == VT_BSTR, "V_VT(v) = %d\n", V_VT(&v)); VariantClear(&v); + hres = IHTMLCurrentStyle_get_textTransform(current_style, &str); + ok(hres == S_OK, "get_textTransform failed: %08x\n", hres); + SysFreeString(str); + current_style2 = get_current_style2_iface((IUnknown*)current_style); b = 100; Modified: trunk/rostests/winetests/mshtml/vbtest.html URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/mshtml/vbtest.h…
============================================================================== --- trunk/rostests/winetests/mshtml/vbtest.html [iso-8859-1] (original) +++ trunk/rostests/winetests/mshtml/vbtest.html [iso-8859-1] Thu Oct 2 09:51:45 2014 @@ -24,7 +24,7 @@ counter++; incCounter(2); }catch(e) { - ok(false, "got an exception"); + ok(false, "got an exception " + e.message); } </script> <script>
10 years, 3 months
1
0
0
0
[akhaldi] 64458: [MSHTML] * Sync with Wine 1.7.27. CORE-8540
by akhaldi@svn.reactos.org
Author: akhaldi Date: Thu Oct 2 09:51:19 2014 New Revision: 64458 URL:
http://svn.reactos.org/svn/reactos?rev=64458&view=rev
Log: [MSHTML] * Sync with Wine 1.7.27. CORE-8540 Modified: trunk/reactos/dll/win32/mshtml/binding.h trunk/reactos/dll/win32/mshtml/conpoint.c trunk/reactos/dll/win32/mshtml/dispex.c trunk/reactos/dll/win32/mshtml/editor.c trunk/reactos/dll/win32/mshtml/htmlanchor.c trunk/reactos/dll/win32/mshtml/htmlattr.c trunk/reactos/dll/win32/mshtml/htmlcurstyle.c trunk/reactos/dll/win32/mshtml/htmldoc.c trunk/reactos/dll/win32/mshtml/htmlelem.c trunk/reactos/dll/win32/mshtml/htmlelem2.c trunk/reactos/dll/win32/mshtml/htmlelem3.c trunk/reactos/dll/win32/mshtml/htmlelemcol.c trunk/reactos/dll/win32/mshtml/htmlevent.c trunk/reactos/dll/win32/mshtml/htmlevent.h trunk/reactos/dll/win32/mshtml/htmlform.c trunk/reactos/dll/win32/mshtml/htmlhead.c trunk/reactos/dll/win32/mshtml/htmlimg.c trunk/reactos/dll/win32/mshtml/htmlinput.c trunk/reactos/dll/win32/mshtml/htmllink.c trunk/reactos/dll/win32/mshtml/htmllocation.c trunk/reactos/dll/win32/mshtml/htmlmeta.c trunk/reactos/dll/win32/mshtml/htmlnode.c trunk/reactos/dll/win32/mshtml/htmloption.c trunk/reactos/dll/win32/mshtml/htmlscreen.c trunk/reactos/dll/win32/mshtml/htmlscript.h trunk/reactos/dll/win32/mshtml/htmlselect.c trunk/reactos/dll/win32/mshtml/htmlstorage.c trunk/reactos/dll/win32/mshtml/htmlstyle.c trunk/reactos/dll/win32/mshtml/htmlstyle.h trunk/reactos/dll/win32/mshtml/htmlstyle2.c trunk/reactos/dll/win32/mshtml/htmlstyle3.c trunk/reactos/dll/win32/mshtml/htmlstylesheet.c trunk/reactos/dll/win32/mshtml/htmltable.c trunk/reactos/dll/win32/mshtml/htmltablecell.c trunk/reactos/dll/win32/mshtml/htmltablerow.c trunk/reactos/dll/win32/mshtml/htmlwindow.c trunk/reactos/dll/win32/mshtml/ifacewrap.c trunk/reactos/dll/win32/mshtml/ipwindow.c trunk/reactos/dll/win32/mshtml/lang/Da.rc trunk/reactos/dll/win32/mshtml/lang/De.rc trunk/reactos/dll/win32/mshtml/lang/Es.rc trunk/reactos/dll/win32/mshtml/lang/Fr.rc trunk/reactos/dll/win32/mshtml/lang/He.rc trunk/reactos/dll/win32/mshtml/lang/Hu.rc trunk/reactos/dll/win32/mshtml/lang/It.rc trunk/reactos/dll/win32/mshtml/lang/Ja.rc trunk/reactos/dll/win32/mshtml/lang/Ko.rc trunk/reactos/dll/win32/mshtml/lang/Lt.rc trunk/reactos/dll/win32/mshtml/lang/Nl.rc trunk/reactos/dll/win32/mshtml/lang/No.rc trunk/reactos/dll/win32/mshtml/lang/Pl.rc trunk/reactos/dll/win32/mshtml/lang/Pt.rc trunk/reactos/dll/win32/mshtml/lang/Ro.rc trunk/reactos/dll/win32/mshtml/lang/Ru.rc trunk/reactos/dll/win32/mshtml/lang/Si.rc trunk/reactos/dll/win32/mshtml/lang/Sv.rc trunk/reactos/dll/win32/mshtml/lang/Uk.rc trunk/reactos/dll/win32/mshtml/lang/Zh.rc trunk/reactos/dll/win32/mshtml/loadopts.c trunk/reactos/dll/win32/mshtml/main.c trunk/reactos/dll/win32/mshtml/mshtml_private.h trunk/reactos/dll/win32/mshtml/mutation.c trunk/reactos/dll/win32/mshtml/navigate.c trunk/reactos/dll/win32/mshtml/npplugin.c trunk/reactos/dll/win32/mshtml/nsembed.c trunk/reactos/dll/win32/mshtml/nsiface.idl trunk/reactos/dll/win32/mshtml/nsio.c trunk/reactos/dll/win32/mshtml/oleobj.c trunk/reactos/dll/win32/mshtml/omnavigator.c trunk/reactos/dll/win32/mshtml/pluginhost.h trunk/reactos/dll/win32/mshtml/propbag.c trunk/reactos/dll/win32/mshtml/script.c trunk/reactos/media/doc/README.WINE [This mail would be too long, it was shortened to contain the URLs only.] Modified: trunk/reactos/dll/win32/mshtml/binding.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/binding.h…
Modified: trunk/reactos/dll/win32/mshtml/conpoint.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/conpoint.…
Modified: trunk/reactos/dll/win32/mshtml/dispex.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/dispex.c?…
Modified: trunk/reactos/dll/win32/mshtml/editor.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/editor.c?…
Modified: trunk/reactos/dll/win32/mshtml/htmlanchor.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlancho…
Modified: trunk/reactos/dll/win32/mshtml/htmlattr.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlattr.…
Modified: trunk/reactos/dll/win32/mshtml/htmlcurstyle.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlcurst…
Modified: trunk/reactos/dll/win32/mshtml/htmldoc.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmldoc.c…
Modified: trunk/reactos/dll/win32/mshtml/htmlelem.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlelem.…
Modified: trunk/reactos/dll/win32/mshtml/htmlelem2.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlelem2…
Modified: trunk/reactos/dll/win32/mshtml/htmlelem3.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlelem3…
Modified: trunk/reactos/dll/win32/mshtml/htmlelemcol.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlelemc…
Modified: trunk/reactos/dll/win32/mshtml/htmlevent.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlevent…
Modified: trunk/reactos/dll/win32/mshtml/htmlevent.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlevent…
Modified: trunk/reactos/dll/win32/mshtml/htmlform.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlform.…
Modified: trunk/reactos/dll/win32/mshtml/htmlhead.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlhead.…
Modified: trunk/reactos/dll/win32/mshtml/htmlimg.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlimg.c…
Modified: trunk/reactos/dll/win32/mshtml/htmlinput.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlinput…
Modified: trunk/reactos/dll/win32/mshtml/htmllink.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmllink.…
Modified: trunk/reactos/dll/win32/mshtml/htmllocation.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmllocat…
Modified: trunk/reactos/dll/win32/mshtml/htmlmeta.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlmeta.…
Modified: trunk/reactos/dll/win32/mshtml/htmlnode.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlnode.…
Modified: trunk/reactos/dll/win32/mshtml/htmloption.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmloptio…
Modified: trunk/reactos/dll/win32/mshtml/htmlscreen.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlscree…
Modified: trunk/reactos/dll/win32/mshtml/htmlscript.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlscrip…
Modified: trunk/reactos/dll/win32/mshtml/htmlselect.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlselec…
Modified: trunk/reactos/dll/win32/mshtml/htmlstorage.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlstora…
Modified: trunk/reactos/dll/win32/mshtml/htmlstyle.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlstyle…
Modified: trunk/reactos/dll/win32/mshtml/htmlstyle.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlstyle…
Modified: trunk/reactos/dll/win32/mshtml/htmlstyle2.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlstyle…
Modified: trunk/reactos/dll/win32/mshtml/htmlstyle3.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlstyle…
Modified: trunk/reactos/dll/win32/mshtml/htmlstylesheet.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlstyle…
Modified: trunk/reactos/dll/win32/mshtml/htmltable.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmltable…
Modified: trunk/reactos/dll/win32/mshtml/htmltablecell.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmltable…
Modified: trunk/reactos/dll/win32/mshtml/htmltablerow.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmltable…
Modified: trunk/reactos/dll/win32/mshtml/htmlwindow.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/htmlwindo…
Modified: trunk/reactos/dll/win32/mshtml/ifacewrap.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/ifacewrap…
Modified: trunk/reactos/dll/win32/mshtml/ipwindow.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/ipwindow.…
Modified: trunk/reactos/dll/win32/mshtml/lang/Da.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/Da.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/De.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/De.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/Es.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/Es.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/Fr.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/Fr.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/He.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/He.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/Hu.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/Hu.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/It.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/It.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/Ja.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/Ja.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/Ko.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/Ko.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/Lt.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/Lt.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/Nl.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/Nl.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/No.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/No.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/Pl.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/Pl.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/Pt.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/Pt.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/Ro.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/Ro.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/Ru.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/Ru.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/Si.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/Si.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/Sv.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/Sv.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/Uk.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/Uk.r…
Modified: trunk/reactos/dll/win32/mshtml/lang/Zh.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/lang/Zh.r…
Modified: trunk/reactos/dll/win32/mshtml/loadopts.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/loadopts.…
Modified: trunk/reactos/dll/win32/mshtml/main.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/main.c?re…
Modified: trunk/reactos/dll/win32/mshtml/mshtml_private.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/mshtml_pr…
Modified: trunk/reactos/dll/win32/mshtml/mutation.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/mutation.…
Modified: trunk/reactos/dll/win32/mshtml/navigate.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/navigate.…
Modified: trunk/reactos/dll/win32/mshtml/npplugin.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/npplugin.…
Modified: trunk/reactos/dll/win32/mshtml/nsembed.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/nsembed.c…
Modified: trunk/reactos/dll/win32/mshtml/nsiface.idl URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/nsiface.i…
Modified: trunk/reactos/dll/win32/mshtml/nsio.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/nsio.c?re…
Modified: trunk/reactos/dll/win32/mshtml/oleobj.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/oleobj.c?…
Modified: trunk/reactos/dll/win32/mshtml/omnavigator.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/omnavigat…
Modified: trunk/reactos/dll/win32/mshtml/pluginhost.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/pluginhos…
Modified: trunk/reactos/dll/win32/mshtml/propbag.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/propbag.c…
Modified: trunk/reactos/dll/win32/mshtml/script.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mshtml/script.c?…
Modified: trunk/reactos/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
10 years, 3 months
1
0
0
0
[akhaldi] 64457: [PSDK] * Update OLECMDID. CORE-8540
by akhaldi@svn.reactos.org
Author: akhaldi Date: Thu Oct 2 09:33:35 2014 New Revision: 64457 URL:
http://svn.reactos.org/svn/reactos?rev=64457&view=rev
Log: [PSDK] * Update OLECMDID. CORE-8540 Modified: trunk/reactos/include/psdk/docobj.idl Modified: trunk/reactos/include/psdk/docobj.idl URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/docobj.idl?re…
============================================================================== --- trunk/reactos/include/psdk/docobj.idl [iso-8859-1] (original) +++ trunk/reactos/include/psdk/docobj.idl [iso-8859-1] Thu Oct 2 09:33:35 2014 @@ -275,7 +275,18 @@ OLECMDID_OPTICAL_GETZOOMRANGE = 64, OLECMDID_WINDOWSTATECHANGED = 65, OLECMDID_ACTIVEXINSTALLSCOPE = 66, - OLECMDID_UPDATETRAVELENTRY_DATARECOVERY = 67 + OLECMDID_UPDATETRAVELENTRY_DATARECOVERY = 67, + OLECMDID_SHOWTASKDLG = 68, + OLECMDID_POPSTATEEVENT = 69, + OLECMDID_VIEWPORT_MODE = 70, + OLECMDID_LAYOUT_VIEWPORT_WIDTH = 71, + OLECMDID_VISUAL_VIEWPORT_EXCLUDE_BOTTOM = 72, + OLECMDID_USER_OPTICAL_ZOOM = 73, + OLECMDID_PAGEAVAILABLE = 74, + OLECMDID_GETUSERSCALABLE = 75, + OLECMDID_UPDATE_CARET = 76, + OLECMDID_ENABLE_VISIBILITY = 77, + OLECMDID_MEDIA_PLAYBACK = 78 } OLECMDID; HRESULT QueryStatus(
10 years, 3 months
1
0
0
0
[akhaldi] 64456: [MSCTF_WINETEST] * Sync with Wine 1.7.27. CORE-8540
by akhaldi@svn.reactos.org
Author: akhaldi Date: Thu Oct 2 08:44:32 2014 New Revision: 64456 URL:
http://svn.reactos.org/svn/reactos?rev=64456&view=rev
Log: [MSCTF_WINETEST] * Sync with Wine 1.7.27. CORE-8540 Modified: trunk/rostests/winetests/msctf/inputprocessor.c Modified: trunk/rostests/winetests/msctf/inputprocessor.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/msctf/inputproc…
============================================================================== --- trunk/rostests/winetests/msctf/inputprocessor.c [iso-8859-1] (original) +++ trunk/rostests/winetests/msctf/inputprocessor.c [iso-8859-1] Thu Oct 2 08:44:32 2014 @@ -2186,6 +2186,28 @@ sink_check_ok(&test_OnPopContext,"OnPopContext"); } +static void test_profile_mgr(void) +{ + IEnumTfInputProcessorProfiles *enum_profiles; + ITfInputProcessorProfileMgr *ipp_mgr; + HRESULT hres; + + hres = ITfInputProcessorProfiles_QueryInterface(g_ipp, &IID_ITfInputProcessorProfileMgr, (void**)&ipp_mgr); + if (hres != S_OK) + { + win_skip("ITfInputProcessorProfileMgr is not supported.\n"); + return; + } + ok(hres == S_OK, "Could not get ITfInputProcessorProfileMgr iface: %08x\n", hres); + + hres = ITfInputProcessorProfileMgr_EnumProfiles(ipp_mgr, 0, &enum_profiles); + ok(hres == S_OK, "EnumProfiles failed: %08x\n", hres); + + IEnumTfInputProcessorProfiles_Release(enum_profiles); + + ITfInputProcessorProfileMgr_Release(ipp_mgr); +} + START_TEST(inputprocessor) { if (SUCCEEDED(initialize())) @@ -2212,6 +2234,7 @@ test_ThreadMgrUnadviseSinks(); test_UnregisterCategory(); test_Unregister(); + test_profile_mgr(); } else skip("Unable to create InputProcessor\n");
10 years, 3 months
1
0
0
0
[akhaldi] 64455: [MSCTF] * Sync with Wine 1.7.27. CORE-8540
by akhaldi@svn.reactos.org
Author: akhaldi Date: Thu Oct 2 08:44:10 2014 New Revision: 64455 URL:
http://svn.reactos.org/svn/reactos?rev=64455&view=rev
Log: [MSCTF] * Sync with Wine 1.7.27. CORE-8540 Modified: trunk/reactos/dll/win32/msctf/inputprocessor.c trunk/reactos/media/doc/README.WINE Modified: trunk/reactos/dll/win32/msctf/inputprocessor.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msctf/inputproce…
============================================================================== --- trunk/reactos/dll/win32/msctf/inputprocessor.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/msctf/inputprocessor.c [iso-8859-1] Thu Oct 2 08:44:10 2014 @@ -42,7 +42,7 @@ typedef struct tagInputProcessorProfiles { ITfInputProcessorProfiles ITfInputProcessorProfiles_iface; ITfSource ITfSource_iface; - /* const ITfInputProcessorProfileMgrVtbl *InputProcessorProfileMgrVtbl; */ + ITfInputProcessorProfileMgr ITfInputProcessorProfileMgr_iface; /* const ITfInputProcessorProfilesExVtbl *InputProcessorProfilesExVtbl; */ /* const ITfInputProcessorProfileSubstituteLayoutVtbl *InputProcessorProfileSubstituteLayoutVtbl; */ LONG refCount; @@ -75,8 +75,106 @@ ITfCategoryMgr *catmgr; } EnumTfLanguageProfiles; +typedef struct { + IEnumTfInputProcessorProfiles IEnumTfInputProcessorProfiles_iface; + LONG ref; +} EnumTfInputProcessorProfiles; + static HRESULT ProfilesEnumGuid_Constructor(IEnumGUID **ppOut); static HRESULT EnumTfLanguageProfiles_Constructor(LANGID langid, IEnumTfLanguageProfiles **ppOut); + +static inline EnumTfInputProcessorProfiles *impl_from_IEnumTfInputProcessorProfiles(IEnumTfInputProcessorProfiles *iface) +{ + return CONTAINING_RECORD(iface, EnumTfInputProcessorProfiles, IEnumTfInputProcessorProfiles_iface); +} + +static HRESULT WINAPI EnumTfInputProcessorProfiles_QueryInterface(IEnumTfInputProcessorProfiles *iface, + REFIID riid, void **ppv) +{ + EnumTfInputProcessorProfiles *This = impl_from_IEnumTfInputProcessorProfiles(iface); + + if(IsEqualGUID(riid, &IID_IUnknown)) { + TRACE("(%p)->(IID_IUnknown %p)\n", This, ppv); + *ppv = &This->IEnumTfInputProcessorProfiles_iface; + }else if(IsEqualGUID(riid, &IID_IEnumTfInputProcessorProfiles)) { + TRACE("(%p)->(IID_IEnumTfInputProcessorProfiles %p)\n", This, ppv); + *ppv = &This->IEnumTfInputProcessorProfiles_iface; + }else { + *ppv = NULL; + WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv); + return E_NOINTERFACE; + } + + IUnknown_AddRef((IUnknown*)*ppv); + return S_OK; +} + +static ULONG WINAPI EnumTfInputProcessorProfiles_AddRef(IEnumTfInputProcessorProfiles *iface) +{ + EnumTfInputProcessorProfiles *This = impl_from_IEnumTfInputProcessorProfiles(iface); + LONG ref = InterlockedIncrement(&This->ref); + + TRACE("(%p) ref=%d\n", This, ref); + + return ref; +} + +static ULONG WINAPI EnumTfInputProcessorProfiles_Release(IEnumTfInputProcessorProfiles *iface) +{ + EnumTfInputProcessorProfiles *This = impl_from_IEnumTfInputProcessorProfiles(iface); + LONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p) ref=%d\n", This, ref); + + if(!ref) + HeapFree(GetProcessHeap(), 0, This); + + return ref; +} + +static HRESULT WINAPI EnumTfInputProcessorProfiles_Clone(IEnumTfInputProcessorProfiles *iface, + IEnumTfInputProcessorProfiles **ret) +{ + EnumTfInputProcessorProfiles *This = impl_from_IEnumTfInputProcessorProfiles(iface); + FIXME("(%p)->(%p)\n", This, ret); + return E_NOTIMPL; +} + +static HRESULT WINAPI EnumTfInputProcessorProfiles_Next(IEnumTfInputProcessorProfiles *iface, ULONG count, + TF_INPUTPROCESSORPROFILE *profile, ULONG *fetch) +{ + EnumTfInputProcessorProfiles *This = impl_from_IEnumTfInputProcessorProfiles(iface); + + FIXME("(%p)->(%u %p %p)\n", This, count, profile, fetch); + + if(fetch) + *fetch = 0; + return S_FALSE; +} + +static HRESULT WINAPI EnumTfInputProcessorProfiles_Reset(IEnumTfInputProcessorProfiles *iface) +{ + EnumTfInputProcessorProfiles *This = impl_from_IEnumTfInputProcessorProfiles(iface); + FIXME("(%p)\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI EnumTfInputProcessorProfiles_Skip(IEnumTfInputProcessorProfiles *iface, ULONG count) +{ + EnumTfInputProcessorProfiles *This = impl_from_IEnumTfInputProcessorProfiles(iface); + FIXME("(%p)->(%u)\n", This, count); + return E_NOTIMPL; +} + +static const IEnumTfInputProcessorProfilesVtbl EnumTfInputProcessorProfilesVtbl = { + EnumTfInputProcessorProfiles_QueryInterface, + EnumTfInputProcessorProfiles_AddRef, + EnumTfInputProcessorProfiles_Release, + EnumTfInputProcessorProfiles_Clone, + EnumTfInputProcessorProfiles_Next, + EnumTfInputProcessorProfiles_Reset, + EnumTfInputProcessorProfiles_Skip +}; static inline InputProcessorProfiles *impl_from_ITfInputProcessorProfiles(ITfInputProcessorProfiles *iface) { @@ -149,28 +247,31 @@ RegCloseKey(key); } -static HRESULT WINAPI InputProcessorProfiles_QueryInterface(ITfInputProcessorProfiles *iface, REFIID iid, LPVOID *ppvOut) -{ - InputProcessorProfiles *This = impl_from_ITfInputProcessorProfiles(iface); - *ppvOut = NULL; +static HRESULT WINAPI InputProcessorProfiles_QueryInterface(ITfInputProcessorProfiles *iface, REFIID iid, void **ppv) +{ + InputProcessorProfiles *This = impl_from_ITfInputProcessorProfiles(iface); if (IsEqualIID(iid, &IID_IUnknown) || IsEqualIID(iid, &IID_ITfInputProcessorProfiles)) { - *ppvOut = &This->ITfInputProcessorProfiles_iface; + *ppv = &This->ITfInputProcessorProfiles_iface; + } + else if (IsEqualIID(iid, &IID_ITfInputProcessorProfileMgr)) + { + *ppv = &This->ITfInputProcessorProfileMgr_iface; } else if (IsEqualIID(iid, &IID_ITfSource)) { - *ppvOut = &This->ITfSource_iface; - } - - if (*ppvOut) - { - ITfInputProcessorProfiles_AddRef(iface); - return S_OK; - } - - WARN("unsupported interface: %s\n", debugstr_guid(iid)); - return E_NOINTERFACE; + *ppv = &This->ITfSource_iface; + } + else + { + *ppv = NULL; + WARN("unsupported interface: %s\n", debugstr_guid(iid)); + return E_NOINTERFACE; + } + + ITfInputProcessorProfiles_AddRef(iface); + return S_OK; } static ULONG WINAPI InputProcessorProfiles_AddRef(ITfInputProcessorProfiles *iface) @@ -663,6 +764,125 @@ InputProcessorProfiles_SubstituteKeyboardLayout }; +static inline InputProcessorProfiles *impl_from_ITfInputProcessorProfileMgr(ITfInputProcessorProfileMgr *iface) +{ + return CONTAINING_RECORD(iface, InputProcessorProfiles, ITfInputProcessorProfileMgr_iface); +} + +static HRESULT WINAPI InputProcessorProfileMgr_QueryInterface(ITfInputProcessorProfileMgr *iface, REFIID riid, void **ppv) +{ + InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface); + return ITfInputProcessorProfiles_QueryInterface(&This->ITfInputProcessorProfiles_iface, riid, ppv); +} + +static ULONG WINAPI InputProcessorProfileMgr_AddRef(ITfInputProcessorProfileMgr *iface) +{ + InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface); + return ITfInputProcessorProfiles_AddRef(&This->ITfInputProcessorProfiles_iface); +} + +static ULONG WINAPI InputProcessorProfileMgr_Release(ITfInputProcessorProfileMgr *iface) +{ + InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface); + return ITfInputProcessorProfiles_Release(&This->ITfInputProcessorProfiles_iface); +} + +static HRESULT WINAPI InputProcessorProfileMgr_ActivateProfile(ITfInputProcessorProfileMgr *iface, DWORD dwProfileType, + LANGID langid, REFCLSID clsid, REFGUID guidProfile, HKL hkl, DWORD dwFlags) +{ + InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface); + FIXME("(%p)->(%d %x %s %s %p %x)\n", This, dwProfileType, langid, debugstr_guid(clsid), + debugstr_guid(guidProfile), hkl, dwFlags); + return E_NOTIMPL; +} + +static HRESULT WINAPI InputProcessorProfileMgr_DeactivateProfile(ITfInputProcessorProfileMgr *iface, DWORD dwProfileType, + LANGID langid, REFCLSID clsid, REFGUID guidProfile, HKL hkl, DWORD dwFlags) +{ + InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface); + FIXME("(%p)->(%d %x %s %s %p %x)\n", This, dwProfileType, langid, debugstr_guid(clsid), + debugstr_guid(guidProfile), hkl, dwFlags); + return E_NOTIMPL; +} + +static HRESULT WINAPI InputProcessorProfileMgr_GetProfile(ITfInputProcessorProfileMgr *iface, DWORD dwProfileType, + LANGID langid, REFCLSID clsid, REFGUID guidProfile, HKL hkl, TF_INPUTPROCESSORPROFILE *pProfile) +{ + InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface); + FIXME("(%p)->(%d %x %s %s %p %p)\n", This, dwProfileType, langid, debugstr_guid(clsid), + debugstr_guid(guidProfile), hkl, pProfile); + return E_NOTIMPL; +} + +static HRESULT WINAPI InputProcessorProfileMgr_EnumProfiles(ITfInputProcessorProfileMgr *iface, LANGID langid, + IEnumTfInputProcessorProfiles **ppEnum) +{ + InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface); + EnumTfInputProcessorProfiles *enum_profiles; + + TRACE("(%p)->(%x %p)\n", This, langid, ppEnum); + + enum_profiles = HeapAlloc(GetProcessHeap(), 0, sizeof(*enum_profiles)); + if(!enum_profiles) + return E_OUTOFMEMORY; + + enum_profiles->IEnumTfInputProcessorProfiles_iface.lpVtbl = &EnumTfInputProcessorProfilesVtbl; + enum_profiles->ref = 1; + + *ppEnum = &enum_profiles->IEnumTfInputProcessorProfiles_iface; + return S_OK; +} + +static HRESULT WINAPI InputProcessorProfileMgr_ReleaseInputProcessor(ITfInputProcessorProfileMgr *iface, REFCLSID rclsid, + DWORD dwFlags) +{ + InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface); + FIXME("(%p)->(%s %x)\n", This, debugstr_guid(rclsid), dwFlags); + return E_NOTIMPL; +} + +static HRESULT WINAPI InputProcessorProfileMgr_RegisterProfile(ITfInputProcessorProfileMgr *iface, REFCLSID rclsid, + LANGID langid, REFGUID guidProfile, const WCHAR *pchDesc, ULONG cchDesc, const WCHAR *pchIconFile, + ULONG cchFile, ULONG uIconIndex, HKL hklsubstitute, DWORD dwPreferredLayout, BOOL bEnabledByDefault, + DWORD dwFlags) +{ + InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface); + FIXME("(%p)->(%s %x %s %s %d %s %u %u %p %x %x %x)\n", This, debugstr_guid(rclsid), langid, debugstr_guid(guidProfile), + debugstr_w(pchDesc), cchDesc, debugstr_w(pchIconFile), cchFile, uIconIndex, hklsubstitute, dwPreferredLayout, + bEnabledByDefault, dwFlags); + return E_NOTIMPL; +} + +static HRESULT WINAPI InputProcessorProfileMgr_UnregisterProfile(ITfInputProcessorProfileMgr *iface, REFCLSID rclsid, + LANGID langid, REFGUID guidProfile, DWORD dwFlags) +{ + InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface); + FIXME("(%p)->(%s %x %s %x)\n", This, debugstr_guid(rclsid), langid, debugstr_guid(guidProfile), dwFlags); + return E_NOTIMPL; +} + +static HRESULT WINAPI InputProcessorProfileMgr_GetActiveProfile(ITfInputProcessorProfileMgr *iface, REFGUID catid, + TF_INPUTPROCESSORPROFILE *pProfile) +{ + InputProcessorProfiles *This = impl_from_ITfInputProcessorProfileMgr(iface); + FIXME("(%p)->(%s %p)\n", This, debugstr_guid(catid), pProfile); + return E_NOTIMPL; +} + +static const ITfInputProcessorProfileMgrVtbl InputProcessorProfileMgrVtbl = { + InputProcessorProfileMgr_QueryInterface, + InputProcessorProfileMgr_AddRef, + InputProcessorProfileMgr_Release, + InputProcessorProfileMgr_ActivateProfile, + InputProcessorProfileMgr_DeactivateProfile, + InputProcessorProfileMgr_GetProfile, + InputProcessorProfileMgr_EnumProfiles, + InputProcessorProfileMgr_ReleaseInputProcessor, + InputProcessorProfileMgr_RegisterProfile, + InputProcessorProfileMgr_UnregisterProfile, + InputProcessorProfileMgr_GetActiveProfile +}; + /***************************************************** * ITfSource functions *****************************************************/ @@ -760,6 +980,7 @@ This->ITfInputProcessorProfiles_iface.lpVtbl= &InputProcessorProfilesVtbl; This->ITfSource_iface.lpVtbl = &InputProcessorProfilesSourceVtbl; + This->ITfInputProcessorProfileMgr_iface.lpVtbl = &InputProcessorProfileMgrVtbl; This->refCount = 1; This->currentLanguage = GetUserDefaultLCID(); Modified: trunk/reactos/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Thu Oct 2 08:44:10 2014 @@ -117,7 +117,7 @@ reactos/dll/win32/mscat32 # Synced to Wine-1.7.17 reactos/dll/win32/mscms # Synced to Wine-1.7.27 reactos/dll/win32/mscoree # Synced to Wine-1.5.4 -reactos/dll/win32/msctf # Synced to Wine-1.7.17 +reactos/dll/win32/msctf # Synced to Wine-1.7.27 reactos/dll/win32/msftedit # Synced to Wine-1.7.17 reactos/dll/win32/msg711.acm # Synced to Wine-1.7.17 reactos/dll/win32/msgsm32.acm # Synced to Wine-1.7.17
10 years, 3 months
1
0
0
0
[akhaldi] 64454: [PSDK] * Update msctf.idl. CORE-8540
by akhaldi@svn.reactos.org
Author: akhaldi Date: Thu Oct 2 08:36:52 2014 New Revision: 64454 URL:
http://svn.reactos.org/svn/reactos?rev=64454&view=rev
Log: [PSDK] * Update msctf.idl. CORE-8540 Modified: trunk/reactos/include/psdk/msctf.idl Modified: trunk/reactos/include/psdk/msctf.idl URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/msctf.idl?rev…
============================================================================== --- trunk/reactos/include/psdk/msctf.idl [iso-8859-1] (original) +++ trunk/reactos/include/psdk/msctf.idl [iso-8859-1] Thu Oct 2 08:36:52 2014 @@ -33,6 +33,8 @@ cpp_quote("HRESULT WINAPI TF_GetThreadMgr(ITfThreadMgr **pptim);") cpp_quote("HRESULT WINAPI TF_CreateInputProcessorProfiles(ITfInputProcessorProfiles **ppipr);") cpp_quote("HRESULT WINAPI TF_CreateLangBarMgr(ITfLangBarMgr **pppbm);") +cpp_quote("HRESULT WINAPI TF_CreateLangBarItemMgr(ITfLangBarItemMgr **pplbim);") +cpp_quote("HRESULT WINAPI TF_InvalidAssemblyListCacheIfExist(void);") cpp_quote("EXTERN_C const GUID GUID_PROP_TEXTOWNER;") cpp_quote("DEFINE_GUID(GUID_PROP_ATTRIBUTE,0x34b45670,0x7526,0x11d2,0xa1,0x47,0x00,0x10,0x5a,0x27,0x99,0xb5);") @@ -78,6 +80,11 @@ cpp_quote("#define TF_MOD_LSHIFT 0x0100") cpp_quote("#define TF_MOD_ON_KEYUP 0x0200") cpp_quote("#define TF_MOD_IGNORE_ALL_MODIFIER 0x0400") + +cpp_quote("#define TF_PROFILETYPE_INPUTPROCESSOR 0x0001") +cpp_quote("#define TF_PROFILETYPE_KEYBOARDLAYOUT 0x0002") + +cpp_quote("#define TF_IPSINK_FLAG_ACTIVE 0x0001") interface ITfDocumentMgr; interface ITfContext; @@ -99,6 +106,20 @@ interface ITfCompositionView; interface ITfKeyEventSink; +cpp_quote("#if 0") +typedef [uuid(4f5d560f-5ab5-4dde-8c4d-404592857ab0)] UINT_PTR HKL; +cpp_quote("#endif") + +typedef [uuid(e26d9e1d-691e-4f29-90d7-338dcf1f8cef)] struct TF_PERSISTENT_PROPERTY_HEADER_ACP +{ + GUID guidType; + LONG ichStart; + LONG cch; + ULONG cb; + DWORD dwPrivate; + CLSID clsidTIP; +} TF_PERSISTENT_PROPERTY_HEADER_ACP; + typedef [uuid(e1b5808d-1e46-4c19-84dc-68c5f5978cc8)] struct TF_LANGUAGEPROFILE { CLSID clsid; @@ -307,6 +328,8 @@ }; +const DWORD TF_INVALID_COOKIE = 0xffffffff; + [ object, uuid(4ea48a35-60ae-446f-8fd6-e6a8d82459f7), @@ -420,6 +443,105 @@ [in] REFGUID guidProfile, [in] HKL hKL); }; + +typedef [uuid(44d2825a-10e5-43b2-877f-6cb2f43b7e7e)] +struct TF_INPUTPROCESSORPROFILE { + DWORD dwProfileType; + LANGID langid; + CLSID clsid; + GUID guidProfile; + GUID catid; + HKL hklSubstitute; + DWORD dwCaps; + HKL hkl; + DWORD dwFlags; +} TF_INPUTPROCESSORPROFILE; + +[ + object, + uuid(71c6e74d-0f28-11d8-a82a-00065b84435c), + pointer_default(unique) +] +interface IEnumTfInputProcessorProfiles : IUnknown +{ + HRESULT Clone( + [out] IEnumTfInputProcessorProfiles **ppEnum); + + HRESULT Next( + [in] ULONG ulCount, + [out, size_is(ulCount), length_is(*pcFetch)] TF_INPUTPROCESSORPROFILE *pProfile, + [out] ULONG *pcFetch); + + HRESULT Reset(); + + HRESULT Skip( + [in] ULONG ulCount); +} + +[ + object, + uuid(71c6e74c-0f28-11d8-a82a-00065b84435c), + pointer_default(unique) +] +interface ITfInputProcessorProfileMgr : IUnknown +{ + HRESULT ActivateProfile( + [in] DWORD dwProfileType, + [in] LANGID langid, + [in] REFCLSID clsid, + [in] REFGUID guidProfile, + [in] HKL hkl, + [in] DWORD dwFlags); + + HRESULT DeactivateProfile( + [in] DWORD dwProfileType, + [in] LANGID langid, + [in] REFCLSID clsid, + [in] REFGUID guidProfile, + [in] HKL hkl, + [in] DWORD dwFlags); + + HRESULT GetProfile( + [in] DWORD dwProfileType, + [in] LANGID langid, + [in] REFCLSID clsid, + [in] REFGUID guidProfile, + [in] HKL hkl, + [out] TF_INPUTPROCESSORPROFILE *pProfile); + + + HRESULT EnumProfiles( + [in] LANGID langid, + [out] IEnumTfInputProcessorProfiles **ppEnum); + + HRESULT ReleaseInputProcessor( + [in] REFCLSID rclsid, + [in] DWORD dwFlags); + + HRESULT RegisterProfile( + [in] REFCLSID rclsid, + [in] LANGID langid, + [in] REFGUID guidProfile, + [in, size_is(cchDesc)] const WCHAR *pchDesc, + [in] ULONG cchDesc, + [in, size_is(cchFile)] const WCHAR *pchIconFile, + [in] ULONG cchFile, + [in] ULONG uIconIndex, + [in] HKL hklsubstitute, + [in] DWORD dwPreferredLayout, + [in] BOOL bEnabledByDefault, + [in] DWORD dwFlags); + + HRESULT UnregisterProfile( + [in] REFCLSID rclsid, + [in] LANGID langid, + [in] REFGUID guidProfile, + [in] DWORD dwFlags); + + HRESULT GetActiveProfile( + [in] REFGUID catid, + [out] TF_INPUTPROCESSORPROFILE *pProfile); +} typedef [uuid(c4cc07f1-80cc-4a7b-bc54-98512782cbe3)] enum { @@ -616,6 +738,19 @@ }; [ + object, + uuid(b246cb75-a93e-4652-bf8c-b3fe0cfd7e57), + pointer_default(unique) +] +interface ITfActiveLanguageProfileNotifySink : IUnknown +{ + HRESULT OnActivated( + [in] REFCLSID clsid, + [in] REFGUID guidProfile, + [in] BOOL fActivated); +} + +[ object, uuid(3d61bf11-ac5f-42c8-a4cb-931bcc28c744), pointer_default(unique) @@ -1195,6 +1330,51 @@ [ object, + uuid(4ef89150-0807-11d3-8df0-00105a2799b5), + pointer_default(unique) +] +interface ITfPersistentPropertyLoaderACP : IUnknown +{ + HRESULT LoadProperty( + [in] const TF_PERSISTENT_PROPERTY_HEADER_ACP *pHdr, + [out] IStream **ppStream); +} + +[ + object, + uuid(b23eb630-3e1c-11d3-a745-0050040ab407), + pointer_default(unique) +] +interface ITfContextOwnerServices : IUnknown +{ + HRESULT OnLayoutChange(); + + HRESULT OnStatusChange([in] DWORD dwFlags); + + HRESULT OnAttributeChange([in] REFGUID rguidAttribute); + + HRESULT Serialize( + [in] ITfProperty *pProp, + [in] ITfRange *pRange, + [out] TF_PERSISTENT_PROPERTY_HEADER_ACP *pHdr, + [in] IStream *pStream); + + HRESULT Unserialize( + [in] ITfProperty *pProp, + [in] const TF_PERSISTENT_PROPERTY_HEADER_ACP *pHdr, + [in] IStream *pStream, + [in] ITfPersistentPropertyLoaderACP *pLoader); + + HRESULT ForceLoadProperty([in] ITfProperty *pProp); + + HRESULT CreateRange( + [in] LONG acpStart, + [in] LONG acpEnd, + [out] ITfRangeACP **ppRange); +} + +[ + object, uuid(17d49a3d-f8b8-4b2f-b254-52319dd64c53), pointer_default(unique) ] @@ -1362,139 +1542,62 @@ [ object, - uuid(101d6610-0990-11d3-8df0-00105a2799b5), - pointer_default(unique) -] -interface ITfFunctionProvider : IUnknown -{ - HRESULT GetType( - [out] GUID *pguid); - - HRESULT GetDescription( - [out] BSTR *pbstrDesc); - - HRESULT GetFunction( - [in] REFGUID rguid, - [in] REFIID riid, - [out, iid_is(riid)] IUnknown **ppunk); -} - -[ - object, - uuid(e4b24db0-0990-11d3-8df0-00105a2799b5), - pointer_default(unique) -] -interface IEnumTfFunctionProviders : IUnknown -{ - HRESULT Clone( - [out] IEnumTfFunctionProviders **ppEnum); - - HRESULT Next( - [in] ULONG ulCount, - [out, size_is(ulCount), length_is(*pcFetch)] ITfFunctionProvider **ppCmdobj, - [out] ULONG *pcFetch); - - HRESULT Reset(); - - HRESULT Skip( - [in] ULONG ulCount); -}; - -[ - object, - uuid(2433bf8e-0f9b-435c-ba2c-180611978c30), - pointer_default(unique) -] -interface ITfContextView : IUnknown -{ - HRESULT GetRangeFromPoint( - [in] TfEditCookie ec, - [in] const POINT *ppt, - [in] DWORD dwFlags, - [out] ITfRange **ppRange); - - HRESULT GetTextExt( - [in] TfEditCookie ec, - [in] ITfRange *pRange, - [out] RECT *prc, - [out] BOOL *pfClipped); - - HRESULT GetScreenExt( - [out] RECT *prc); - - HRESULT GetWnd( - [out] HWND *phwnd); -}; - -[ - object, - uuid(f0c0f8dd-cf38-44e1-bb0f-68cf0d551c78), - pointer_default(unique) -] -interface IEnumTfContextViews : IUnknown -{ - HRESULT Clone( - [out] IEnumTfContextViews **ppEnum); - - HRESULT Next( - [in] ULONG ulCount, - [out, size_is(ulCount), length_is(*pcFetched)] ITfContextView **rgViews, - [out] ULONG *pcFetched); - - HRESULT Reset(); - - HRESULT Skip( - [in] ULONG ulCount); -}; - -[ - object, - uuid(19188cb0-aca9-11d2-afc5-00105a2799b5), - pointer_default(unique) -] -interface IEnumTfProperties : IUnknown -{ - HRESULT Clone( - [out] IEnumTfProperties **ppEnum); - - HRESULT Next( - [in] ULONG ulCount, - [out, size_is(ulCount), length_is(*pcFetched)] ITfProperty **ppProp, - [out] ULONG *pcFetched); - - HRESULT Reset(); - - HRESULT Skip( - [in] ULONG ulCount); -} - -[ - object, - uuid(463a506d-6992-49d2-9b88-93d55e70bb16), - pointer_default(unique) -] -interface ITfRangeBackup : IUnknown -{ - HRESULT Restore( - [in] TfEditCookie ec, - [in] ITfRange *pRange); -}; - -[ - object, - uuid(42d4d099-7c1a-4a89-b836-6c6f22160df0), - pointer_default(unique) -] -interface ITfEditRecord : IUnknown -{ - const DWORD TF_GTP_INCL_TEXT = 0x1; - - HRESULT GetSelectionStatus( - [out] BOOL *pfChanged); - - HRESULT GetTextAndPropertyUpdates( - [in] DWORD dwFlags, - [in, size_is(cProperties)] const GUID **prgProperties, - [in] ULONG cProperties, - [out] IEnumTfRanges **ppEnum); -}; + uuid(71c6e74e-0f28-11d8-a82a-00065b84435c), + pointer_default(unique) +] +interface ITfInputProcessorProfileActivationSink : IUnknown +{ + HRESULT OnActivated( + [in] DWORD dwProfileType, + [in] LANGID langid, + [in] REFCLSID clsid, + [in] REFGUID catid, + [in] REFGUID guidProfile, + [in] HKL hkl, + [in] DWORD dwFlags); +} + +[ + object, + local, + uuid(a1adaaa2-3a24-449d-ac96-5183e7f5c217), + pointer_default(unique) +] +interface ITfMouseSink : IUnknown +{ + HRESULT OnMouseEvent( + [in] ULONG uEdge, + [in] ULONG uQuadrant, + [in] DWORD dwBtnStatus, + [out] BOOL *pfEaten); +} + +[ + object, + uuid(09d146cd-a544-4132-925b-7afa8ef322d0), + pointer_default(unique) +] +interface ITfMouseTracker : IUnknown +{ + HRESULT AdviseMouseSink( + [in] ITfRange *range, + [in] ITfMouseSink *pSink, + [out] DWORD *pdwCookie); + + HRESULT UnadviseMouseSink([in] DWORD dwCookie); +} + +[ + object, + uuid(3bdd78e2-c16e-47fd-b883-ce6facc1a208), + pointer_default(unique) +] +interface ITfMouseTrackerACP : IUnknown +{ + HRESULT AdviseMouseSink( + [in] ITfRangeACP *range, + [in] ITfMouseSink *pSink, + [out] DWORD *pdwCookie); + + HRESULT UnadviseMouseSink([in] DWORD dwCookie); +}
10 years, 3 months
1
0
0
0
[akhaldi] 64453: [MSCMS] * Sync with Wine 1.7.27. CORE-8540
by akhaldi@svn.reactos.org
Author: akhaldi Date: Thu Oct 2 08:25:15 2014 New Revision: 64453 URL:
http://svn.reactos.org/svn/reactos?rev=64453&view=rev
Log: [MSCMS] * Sync with Wine 1.7.27. CORE-8540 Modified: trunk/reactos/dll/win32/mscms/profile.c trunk/reactos/media/doc/README.WINE Modified: trunk/reactos/dll/win32/mscms/profile.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/mscms/profile.c?…
============================================================================== --- trunk/reactos/dll/win32/mscms/profile.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/mscms/profile.c [iso-8859-1] Thu Oct 2 08:25:15 2014 @@ -357,8 +357,6 @@ ret = get_tag_data( profile, type, offset, buffer, size ); *ref = cmsTagLinkedTo( profile->cmsprofile, type ) != 0; release_profile( profile ); - return ret; - #endif /* HAVE_LCMS2 */ return ret; } @@ -1235,8 +1233,6 @@ } ret = set_tag_data( profile, type, offset, buffer, size ); release_profile( profile ); - return ret; - #endif /* HAVE_LCMS2 */ return ret; } Modified: trunk/reactos/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Thu Oct 2 08:25:15 2014 @@ -115,7 +115,7 @@ reactos/dll/win32/msacm32/msacm32.drv # Synced to Wine-1.7.17 reactos/dll/win32/msadp32.acm # Synced to Wine-1.7.17 reactos/dll/win32/mscat32 # Synced to Wine-1.7.17 -reactos/dll/win32/mscms # Synced to Wine-1.7.17 +reactos/dll/win32/mscms # Synced to Wine-1.7.27 reactos/dll/win32/mscoree # Synced to Wine-1.5.4 reactos/dll/win32/msctf # Synced to Wine-1.7.17 reactos/dll/win32/msftedit # Synced to Wine-1.7.17
10 years, 3 months
1
0
0
0
[tkreuzer] 64452: [DLLEXPORT_TEST] Rename main() to test()
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Thu Oct 2 08:23:38 2014 New Revision: 64452 URL:
http://svn.reactos.org/svn/reactos?rev=64452&view=rev
Log: [DLLEXPORT_TEST] Rename main() to test() Modified: trunk/rostests/tests/dllexport/CMakeLists.txt trunk/rostests/tests/dllexport/dllimport_framedyn.cpp Modified: trunk/rostests/tests/dllexport/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/tests/dllexport/CMakeList…
============================================================================== --- trunk/rostests/tests/dllexport/CMakeLists.txt [iso-8859-1] (original) +++ trunk/rostests/tests/dllexport/CMakeLists.txt [iso-8859-1] Thu Oct 2 08:23:38 2014 @@ -28,5 +28,5 @@ add_library(dllimport_test SHARED dllimport_framedyn.cpp) set_module_type(dllimport_test win32dll ENTRYPOINT 0) -add_importlibs(dllimport_test msvcrt framedyn) +add_importlibs(dllimport_test framedyn) target_link_libraries(dllimport_test framedynex) Modified: trunk/rostests/tests/dllexport/dllimport_framedyn.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/tests/dllexport/dllimport…
============================================================================== --- trunk/rostests/tests/dllexport/dllimport_framedyn.cpp [iso-8859-1] (original) +++ trunk/rostests/tests/dllexport/dllimport_framedyn.cpp [iso-8859-1] Thu Oct 2 08:23:38 2014 @@ -88,7 +88,7 @@ }; int -main() +test() { CHString2 String;
10 years, 3 months
1
0
0
0
[akhaldi] 64451: [IMAADP32.ACM] * Delete this duplicate.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Thu Oct 2 08:11:02 2014 New Revision: 64451 URL:
http://svn.reactos.org/svn/reactos?rev=64451&view=rev
Log: [IMAADP32.ACM] * Delete this duplicate. Removed: trunk/reactos/dll/win32/msacm32/imaadp32/
10 years, 3 months
1
0
0
0
← Newer
1
...
68
69
70
71
72
73
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Results per page:
10
25
50
100
200