[MSHTML_WINETEST]

* Sync with Wine 1.7.27.
CORE-8540

svn path=/trunk/; revision=64459
This commit is contained in:
Amine Khaldi 2014-10-02 09:51:45 +00:00
parent a197629da8
commit e81c7e8867
11 changed files with 1237 additions and 94 deletions

View file

@ -2702,12 +2702,6 @@ static BOOL check_ie(void)
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))

File diff suppressed because it is too large Load diff

View file

@ -88,7 +88,6 @@ DEFINE_EXPECT(iframe_onload);
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 @@ static void test_onclick(IHTMLDocument2 *doc)
CHECK_CALLED(invoke_onclick);
}
xy_todo = TRUE;
SET_EXPECT(div_onclick);
SET_EXPECT(div_onclick_attached);
SET_EXPECT(body_onclick);
@ -1847,7 +1844,7 @@ static void test_imgload(IHTMLDocument2 *doc)
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 @@ static void run_test(const char *str, testfunc_t test)
MSG msg;
HRESULT hres;
xy_todo = FALSE;
doc = create_document();
if (!doc)
return;

View file

@ -114,14 +114,16 @@ function test_handler_this() {
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();
test_handler_this();
@ -132,8 +134,18 @@ function runTests(t) {
external.reportSuccess();
}
</script>
<script>
var img = document.createElement("img");
img.src = "http://test.winehq.org/tests/winehq_snapshot/index_files/winehq_logo_glass.png";
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 @@ function runTests(t) {
cnt++;
})();
</script>
<script>
document.body.appendChild(img);
</script>
</body>
</html>

View file

@ -55,7 +55,7 @@ try {
testPutSrc();
testPutText();
}catch(e) {
ok(false, "Got an exception");
ok(false, "Got an exception " + e.message);
}
function testPutSrc2() {
@ -123,7 +123,7 @@ document.body.onload = function() {
testPutSrc2();
testPutText2();
}catch(e) {
ok(false, "got an exception");
ok(false, "got an exception " + e.message);
}
external.reportSuccess();

View file

@ -978,6 +978,7 @@ static HRESULT WINAPI PropertyNotifySink_OnChanged(IPropertyNotifySink *iface, D
case 3000029:
case 3000030:
case 3000031:
case 3000032:
/* TODO */
return S_OK;
}
@ -2855,6 +2856,7 @@ static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID
test_readyState(NULL);
return S_OK;
case OLECMDID_UPDATETRAVELENTRY_DATARECOVERY:
case OLECMDID_PAGEAVAILABLE:
case 6058:
return E_FAIL; /* FIXME */
default:
@ -2864,7 +2866,7 @@ static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID
}
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 @@ static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID
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 @@ static HRESULT WINAPI Dispatch_Invoke(IDispatch *iface, DISPID dispIdMember, REF
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 HRESULT WINAPI TravelLog_QueryInterface(ITravelLog *iface, REFIID riid, v
{
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 @@ static HRESULT WINAPI DocObjectService_FireBeforeNavigate2(IDocObjectService *i
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 @@ static void test_doscroll(IUnknown *unk)
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 @@ static void test_ConnectionPoint(IConnectionPointContainer *container, REFIID ri
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 @@ static void test_download(DWORD flags)
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 @@ static void test_download(DWORD flags)
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 @@ static void test_put_href(IHTMLDocument2 *doc, BOOL use_replace, const char *hre
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 @@ static void test_put_href(IHTMLDocument2 *doc, BOOL use_replace, const char *hre
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 @@ static void test_load_history(IHTMLDocument2 *doc)
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 @@ static void test_submit(void)
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);

View file

@ -165,6 +165,9 @@ function test_override_functions() {
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 @@ function runTest() {
try {
runTests();
}catch(e) {
ok(false, "got exception");
ok(false, "got exception " + e.message);
}
external.reportSuccess();

View file

@ -18,6 +18,7 @@ function nav_back_test() {
}
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 @@ function nav_back_test() {
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(); }
];

View file

@ -132,6 +132,8 @@ DEFINE_EXPECT(AXSetInterfaceSafetyOptions_IDispatchEx_caller_secmgr);
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_getopt_hres = S_OK, ax_setopt_dispex_hres = S_OK;
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];
@ -332,6 +337,19 @@ static HRESULT WINAPI ServiceProvider_QueryService(IServiceProvider *iface, REFG
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));
return E_NOINTERFACE;
}
@ -1280,9 +1298,6 @@ static void load_doc(IHTMLDocument2 *doc, const char *str)
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 @@ static void test_func(IDispatchEx *obj)
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,12 +2085,19 @@ static void test_default_arg_conv(IHTMLWindow2 *window)
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);
}

View file

@ -59,6 +59,22 @@ static BSTR a2bstr(const char *str)
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 @@ static void test_style2(IHTMLStyle2 *style2)
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 @@ static void test_style4(IHTMLStyle4 *style4)
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 @@ static void test_body_style(IHTMLStyle *style)
IHTMLStyle2 *style2;
IHTMLStyle3 *style3;
IHTMLStyle4 *style4;
IHTMLStyle5 *style5;
IHTMLStyle6 *style6;
VARIANT_BOOL b;
VARIANT v;
@ -742,6 +822,28 @@ static void test_body_style(IHTMLStyle *style)
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 @@ static void test_body_style(IHTMLStyle *style)
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 @@ static void test_body_style(IHTMLStyle *style)
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);
@ -889,6 +1001,14 @@ static void test_body_style(IHTMLStyle *style)
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);
ok(hres == S_OK, "get_width failed: %08x\n", hres);
@ -1062,6 +1182,9 @@ static void test_body_style(IHTMLStyle *style)
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 @@ static void test_body_style(IHTMLStyle *style)
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 @@ static void test_body_style(IHTMLStyle *style)
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 @@ static void test_body_style(IHTMLStyle *style)
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 @@ static void test_body_style(IHTMLStyle *style)
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 @@ static void test_body_style(IHTMLStyle *style)
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 @@ static void test_body_style(IHTMLStyle *style)
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 @@ static void test_body_style(IHTMLStyle *style)
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 @@ static void test_body_style(IHTMLStyle *style)
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 @@ static void test_body_style(IHTMLStyle *style)
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);
@ -1478,6 +1693,16 @@ static void test_body_style(IHTMLStyle *style)
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);
ok(hres == S_OK, "get_padding failed: %08x\n", hres);
@ -2106,8 +2331,35 @@ static void test_body_style(IHTMLStyle *style)
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));
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);
if(SUCCEEDED(hres)) {
@ -2129,6 +2381,14 @@ static void test_body_style(IHTMLStyle *style)
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);
if(SUCCEEDED(hres)) {
test_style6(style6);
@ -2490,6 +2750,10 @@ static void test_current_style(IHTMLCurrentStyle *current_style)
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;

View file

@ -24,7 +24,7 @@ try {
counter++;
incCounter(2);
}catch(e) {
ok(false, "got an exception");
ok(false, "got an exception " + e.message);
}
</script>
<script>