ReactOS 0.4.15-dev-8413-gc1c91f2
httpreq.c
Go to the documentation of this file.
1/*
2 * XML test
3 *
4 * Copyright 2010-2012 Nikolay Sivov for CodeWeavers
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 */
20
21
22#define COBJMACROS
23#define CONST_VTABLE
24
25#include <stdio.h>
26#include <assert.h>
27
28#include "windows.h"
29
30#include "msxml2.h"
31#include "msxml2did.h"
32#include "dispex.h"
33
34#include "initguid.h"
35#include "objsafe.h"
36#include "mshtml.h"
37
38#include "wine/heap.h"
39#include "wine/test.h"
40
41#define EXPECT_HR(hr,hr_exp) \
42 ok(hr == hr_exp, "got 0x%08x, expected 0x%08x\n", hr, hr_exp)
43
44#define EXPECT_REF(node,ref) _expect_ref((IUnknown*)node, ref, __LINE__)
45static void _expect_ref(IUnknown* obj, ULONG ref, int line)
46{
47 ULONG rc;
48 IUnknown_AddRef(obj);
49 rc = IUnknown_Release(obj);
50 ok_(__FILE__, line)(rc == ref, "expected refcount %d, got %d\n", ref, rc);
51}
52
53static const char xmltestA[] = "http://test.winehq.org/tests/xmltest.xml";
54static const CHAR xmltestbodyA[] = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<a>TEST</a>\n";
55
56DEFINE_GUID(SID_SContainerDispatch, 0xb722be00, 0x4e68, 0x101b, 0xa2, 0xbc, 0x00, 0xaa, 0x00, 0x40, 0x47, 0x70);
57DEFINE_GUID(SID_UnknownSID, 0x75dd09cb, 0x6c40, 0x11d5, 0x85, 0x43, 0x00, 0xc0, 0x4f, 0xa0, 0xfb, 0xa3);
58
60
61#define DEFINE_EXPECT(func) \
62 static BOOL expect_ ## func = FALSE, called_ ## func = FALSE
63
64#define SET_EXPECT(func) \
65 expect_ ## func = TRUE
66
67#define CHECK_EXPECT2(func) \
68 do { \
69 if (g_enablecallchecks) \
70 ok(expect_ ##func, "unexpected call " #func "\n"); \
71 called_ ## func = TRUE; \
72 }while(0)
73
74#define CHECK_CALLED(func) \
75 do { \
76 ok(called_ ## func, "expected " #func "\n"); \
77 expect_ ## func = called_ ## func = FALSE; \
78 }while(0)
79
80/* object site */
81DEFINE_EXPECT(site_qi_IServiceProvider);
82DEFINE_EXPECT(site_qi_IXMLDOMDocument);
83DEFINE_EXPECT(site_qi_IOleClientSite);
84
85DEFINE_EXPECT(sp_queryservice_SID_SBindHost);
86DEFINE_EXPECT(sp_queryservice_SID_SContainerDispatch_htmldoc2);
87DEFINE_EXPECT(sp_queryservice_SID_secmgr_htmldoc2);
88DEFINE_EXPECT(sp_queryservice_SID_secmgr_xmldomdoc);
89DEFINE_EXPECT(sp_queryservice_SID_secmgr_secmgr);
90
92DEFINE_EXPECT(htmldoc2_get_url);
93DEFINE_EXPECT(collection_get_length);
94
96
97static int strcmp_wa(const WCHAR *strw, const char *stra)
98{
99 WCHAR buf[512];
101 return lstrcmpW(strw, buf);
102}
103
104static BSTR alloc_str_from_narrow(const char *str)
105{
106 int len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
107 BSTR ret = SysAllocStringLen(NULL, len - 1); /* NUL character added automatically */
108 MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len-1);
109 return ret;
110}
111
112static BSTR alloced_bstrs[256];
114
115static BSTR _bstr_(const char *str)
116{
117 if(!str)
118 return NULL;
119
123}
124
125static void free_bstrs(void)
126{
127 int i;
128 for (i = 0; i < alloced_bstrs_count; i++)
131}
132
133static BSTR a2bstr(const char *str)
134{
135 BSTR ret;
136 int len;
137
138 if(!str)
139 return NULL;
140
141 len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
144
145 return ret;
146}
147
148
149/* test IHTMLElementCollection */
150static HRESULT WINAPI htmlecoll_QueryInterface(IHTMLElementCollection *iface, REFIID riid, void **ppvObject)
151{
152 ok(0, "unexpected call\n");
153 *ppvObject = NULL;
154 return E_NOINTERFACE;
155}
156
157static ULONG WINAPI htmlecoll_AddRef(IHTMLElementCollection *iface)
158{
159 return 2;
160}
161
162static ULONG WINAPI htmlecoll_Release(IHTMLElementCollection *iface)
163{
164 return 1;
165}
166
167static HRESULT WINAPI htmlecoll_GetTypeInfoCount(IHTMLElementCollection *iface, UINT *pctinfo)
168{
169 ok(0, "unexpected call\n");
170 return E_NOTIMPL;
171}
172
173static HRESULT WINAPI htmlecoll_GetTypeInfo(IHTMLElementCollection *iface, UINT iTInfo,
174 LCID lcid, ITypeInfo **ppTInfo)
175{
176 ok(0, "unexpected call\n");
177 return E_NOTIMPL;
178}
179
180static HRESULT WINAPI htmlecoll_GetIDsOfNames(IHTMLElementCollection *iface, REFIID riid,
181 LPOLESTR *rgszNames, UINT cNames,
182 LCID lcid, DISPID *rgDispId)
183{
184 ok(0, "unexpected call\n");
185 return E_NOTIMPL;
186}
187
188static HRESULT WINAPI htmlecoll_Invoke(IHTMLElementCollection *iface, DISPID dispIdMember,
189 REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
190 VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
191{
192 ok(0, "unexpected call\n");
193 return E_NOTIMPL;
194}
195
196static HRESULT WINAPI htmlecoll_toString(IHTMLElementCollection *iface, BSTR *String)
197{
198 ok(0, "unexpected call\n");
199 return E_NOTIMPL;
200}
201
202static HRESULT WINAPI htmlecoll_put_length(IHTMLElementCollection *iface, LONG v)
203{
204 ok(0, "unexpected call\n");
205 return E_NOTIMPL;
206}
207
208static HRESULT WINAPI htmlecoll_get_length(IHTMLElementCollection *iface, LONG *v)
209{
210 CHECK_EXPECT2(collection_get_length);
211 return E_NOTIMPL;
212}
213
214static HRESULT WINAPI htmlecoll_get__newEnum(IHTMLElementCollection *iface, IUnknown **p)
215{
216 ok(0, "unexpected call\n");
217 return E_NOTIMPL;
218}
219
220static HRESULT WINAPI htmlecoll_item(IHTMLElementCollection *iface, VARIANT name, VARIANT index, IDispatch **pdisp)
221{
222 ok(0, "unexpected call\n");
223 return E_NOTIMPL;
224}
225
226static HRESULT WINAPI htmlecoll_tags(IHTMLElementCollection *iface, VARIANT tagName, IDispatch **pdisp)
227{
228 ok(0, "unexpected call\n");
229 return E_NOTIMPL;
230}
231
232static const IHTMLElementCollectionVtbl TestHTMLECollectionVtbl = {
246};
247
248static IHTMLElementCollection htmlecoll = { &TestHTMLECollectionVtbl };
249
250/* test IHTMLDocument2 */
251static HRESULT WINAPI htmldoc2_QueryInterface(IHTMLDocument2 *iface, REFIID riid, void **ppvObject)
252{
253 trace("\n");
254 *ppvObject = NULL;
255 return E_NOINTERFACE;
256}
257
258static ULONG WINAPI htmldoc2_AddRef(IHTMLDocument2 *iface)
259{
260 return 2;
261}
262
263static ULONG WINAPI htmldoc2_Release(IHTMLDocument2 *iface)
264{
265 return 1;
266}
267
268static HRESULT WINAPI htmldoc2_GetTypeInfoCount(IHTMLDocument2 *iface, UINT *pctinfo)
269{
270 ok(0, "unexpected call\n");
271 return E_NOTIMPL;
272}
273
274static HRESULT WINAPI htmldoc2_GetTypeInfo(IHTMLDocument2 *iface, UINT iTInfo,
275 LCID lcid, ITypeInfo **ppTInfo)
276{
277 ok(0, "unexpected call\n");
278 return E_NOTIMPL;
279}
280
281static HRESULT WINAPI htmldoc2_GetIDsOfNames(IHTMLDocument2 *iface, REFIID riid,
282 LPOLESTR *rgszNames, UINT cNames,
283 LCID lcid, DISPID *rgDispId)
284{
285 ok(0, "unexpected call\n");
286 return E_NOTIMPL;
287}
288
289static HRESULT WINAPI htmldoc2_Invoke(IHTMLDocument2 *iface, DISPID dispIdMember,
290 REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
291 VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
292{
293 ok(0, "unexpected call\n");
294 return E_NOTIMPL;
295}
296
297static HRESULT WINAPI htmldoc2_get_Script(IHTMLDocument2 *iface, IDispatch **p)
298{
299 ok(0, "unexpected call\n");
300 return E_NOTIMPL;
301}
302
303static HRESULT WINAPI htmldoc2_get_all(IHTMLDocument2 *iface, IHTMLElementCollection **p)
304{
306 *p = &htmlecoll;
307 return S_OK;
308}
309
310static HRESULT WINAPI htmldoc2_get_body(IHTMLDocument2 *iface, IHTMLElement **p)
311{
312 ok(0, "unexpected call\n");
313 return E_NOTIMPL;
314}
315
316static HRESULT WINAPI htmldoc2_get_activeElement(IHTMLDocument2 *iface, IHTMLElement **p)
317{
318 ok(0, "unexpected call\n");
319 return E_NOTIMPL;
320}
321
322static HRESULT WINAPI htmldoc2_get_images(IHTMLDocument2 *iface, IHTMLElementCollection **p)
323{
324 ok(0, "unexpected call\n");
325 return E_NOTIMPL;
326}
327
328static HRESULT WINAPI htmldoc2_get_applets(IHTMLDocument2 *iface, IHTMLElementCollection **p)
329{
330 ok(0, "unexpected call\n");
331 return E_NOTIMPL;
332}
333
334static HRESULT WINAPI htmldoc2_get_links(IHTMLDocument2 *iface, IHTMLElementCollection **p)
335{
336 ok(0, "unexpected call\n");
337 return E_NOTIMPL;
338}
339
340static HRESULT WINAPI htmldoc2_get_forms(IHTMLDocument2 *iface, IHTMLElementCollection **p)
341{
342 ok(0, "unexpected call\n");
343 return E_NOTIMPL;
344}
345
346static HRESULT WINAPI htmldoc2_get_anchors(IHTMLDocument2 *iface, IHTMLElementCollection **p)
347{
348 ok(0, "unexpected call\n");
349 return E_NOTIMPL;
350}
351
352static HRESULT WINAPI htmldoc2_put_title(IHTMLDocument2 *iface, BSTR v)
353{
354 ok(0, "unexpected call\n");
355 return E_NOTIMPL;
356}
357
358static HRESULT WINAPI htmldoc2_get_title(IHTMLDocument2 *iface, BSTR *p)
359{
360 ok(0, "unexpected call\n");
361 return E_NOTIMPL;
362}
363
364static HRESULT WINAPI htmldoc2_get_scripts(IHTMLDocument2 *iface, IHTMLElementCollection **p)
365{
366 ok(0, "unexpected call\n");
367 return E_NOTIMPL;
368}
369
370static HRESULT WINAPI htmldoc2_put_designMode(IHTMLDocument2 *iface, BSTR v)
371{
372 ok(0, "unexpected call\n");
373 return E_NOTIMPL;
374}
375
376static HRESULT WINAPI htmldoc2_get_designMode(IHTMLDocument2 *iface, BSTR *p)
377{
378 ok(0, "unexpected call\n");
379 return E_NOTIMPL;
380}
381
382static HRESULT WINAPI htmldoc2_get_selection(IHTMLDocument2 *iface, IHTMLSelectionObject **p)
383{
384 ok(0, "unexpected call\n");
385 return E_NOTIMPL;
386}
387
388static HRESULT WINAPI htmldoc2_get_readyState(IHTMLDocument2 *iface, BSTR *p)
389{
390 ok(0, "unexpected call\n");
391 return E_NOTIMPL;
392}
393
394static HRESULT WINAPI htmldoc2_get_frames(IHTMLDocument2 *iface, IHTMLFramesCollection2 **p)
395{
396 ok(0, "unexpected call\n");
397 return E_NOTIMPL;
398}
399
400static HRESULT WINAPI htmldoc2_get_embeds(IHTMLDocument2 *iface, IHTMLElementCollection **p)
401{
402 ok(0, "unexpected call\n");
403 return E_NOTIMPL;
404}
405
406static HRESULT WINAPI htmldoc2_get_plugins(IHTMLDocument2 *iface, IHTMLElementCollection **p)
407{
408 ok(0, "unexpected call\n");
409 return E_NOTIMPL;
410}
411
412static HRESULT WINAPI htmldoc2_put_alinkColor(IHTMLDocument2 *iface, VARIANT v)
413{
414 ok(0, "unexpected call\n");
415 return E_NOTIMPL;
416}
417
418static HRESULT WINAPI htmldoc2_get_alinkColor(IHTMLDocument2 *iface, VARIANT *p)
419{
420 ok(0, "unexpected call\n");
421 return E_NOTIMPL;
422}
423
424static HRESULT WINAPI htmldoc2_put_bgColor(IHTMLDocument2 *iface, VARIANT v)
425{
426 ok(0, "unexpected call\n");
427 return E_NOTIMPL;
428}
429
430static HRESULT WINAPI htmldoc2_get_bgColor(IHTMLDocument2 *iface, VARIANT *p)
431{
432 ok(0, "unexpected call\n");
433 return E_NOTIMPL;
434}
435
436static HRESULT WINAPI htmldoc2_put_fgColor(IHTMLDocument2 *iface, VARIANT v)
437{
438 ok(0, "unexpected call\n");
439 return E_NOTIMPL;
440}
441
442static HRESULT WINAPI htmldoc2_get_fgColor(IHTMLDocument2 *iface, VARIANT *p)
443{
444 ok(0, "unexpected call\n");
445 return E_NOTIMPL;
446}
447
448static HRESULT WINAPI htmldoc2_put_linkColor(IHTMLDocument2 *iface, VARIANT v)
449{
450 ok(0, "unexpected call\n");
451 return E_NOTIMPL;
452}
453
454static HRESULT WINAPI htmldoc2_get_linkColor(IHTMLDocument2 *iface, VARIANT *p)
455{
456 ok(0, "unexpected call\n");
457 return E_NOTIMPL;
458}
459
460static HRESULT WINAPI htmldoc2_put_vlinkColor(IHTMLDocument2 *iface, VARIANT v)
461{
462 ok(0, "unexpected call\n");
463 return E_NOTIMPL;
464}
465
466static HRESULT WINAPI htmldoc2_get_vlinkColor(IHTMLDocument2 *iface, VARIANT *p)
467{
468 ok(0, "unexpected call\n");
469 return E_NOTIMPL;
470}
471
472static HRESULT WINAPI htmldoc2_get_referrer(IHTMLDocument2 *iface, BSTR *p)
473{
474 ok(0, "unexpected call\n");
475 return E_NOTIMPL;
476}
477
478static HRESULT WINAPI htmldoc2_get_location(IHTMLDocument2 *iface, IHTMLLocation **p)
479{
480 ok(0, "unexpected call\n");
481 return E_NOTIMPL;
482}
483
484static HRESULT WINAPI htmldoc2_get_lastModified(IHTMLDocument2 *iface, BSTR *p)
485{
486 ok(0, "unexpected call\n");
487 return E_NOTIMPL;
488}
489
490static HRESULT WINAPI htmldoc2_put_URL(IHTMLDocument2 *iface, BSTR v)
491{
492 ok(0, "unexpected call\n");
493 return E_NOTIMPL;
494}
495
496static HRESULT WINAPI htmldoc2_get_URL(IHTMLDocument2 *iface, BSTR *p)
497{
498 CHECK_EXPECT2(htmldoc2_get_url);
499 *p = a2bstr("http://test.winehq.org/");
500 return S_OK;
501}
502
503static HRESULT WINAPI htmldoc2_put_domain(IHTMLDocument2 *iface, BSTR v)
504{
505 ok(0, "unexpected call\n");
506 return E_NOTIMPL;
507}
508
509static HRESULT WINAPI htmldoc2_get_domain(IHTMLDocument2 *iface, BSTR *p)
510{
511 ok(0, "unexpected call\n");
512 return E_NOTIMPL;
513}
514
515static HRESULT WINAPI htmldoc2_put_cookie(IHTMLDocument2 *iface, BSTR v)
516{
517 ok(0, "unexpected call\n");
518 return E_NOTIMPL;
519}
520
521static HRESULT WINAPI htmldoc2_get_cookie(IHTMLDocument2 *iface, BSTR *p)
522{
523 ok(0, "unexpected call\n");
524 return E_NOTIMPL;
525}
526
527static HRESULT WINAPI htmldoc2_put_expando(IHTMLDocument2 *iface, VARIANT_BOOL v)
528{
529 ok(0, "unexpected call\n");
530 return E_NOTIMPL;
531}
532
533static HRESULT WINAPI htmldoc2_get_expando(IHTMLDocument2 *iface, VARIANT_BOOL *p)
534{
535 ok(0, "unexpected call\n");
536 return E_NOTIMPL;
537}
538
539static HRESULT WINAPI htmldoc2_put_charset(IHTMLDocument2 *iface, BSTR v)
540{
541 ok(0, "unexpected call\n");
542 return E_NOTIMPL;
543}
544
545static HRESULT WINAPI htmldoc2_get_charset(IHTMLDocument2 *iface, BSTR *p)
546{
547 ok(0, "unexpected call\n");
548 return E_NOTIMPL;
549}
550
551static HRESULT WINAPI htmldoc2_put_defaultCharset(IHTMLDocument2 *iface, BSTR v)
552{
553 ok(0, "unexpected call\n");
554 return E_NOTIMPL;
555}
556
557static HRESULT WINAPI htmldoc2_get_defaultCharset(IHTMLDocument2 *iface, BSTR *p)
558{
559 ok(0, "unexpected call\n");
560 return E_NOTIMPL;
561}
562
563static HRESULT WINAPI htmldoc2_get_mimeType(IHTMLDocument2 *iface, BSTR *p)
564{
565 ok(0, "unexpected call\n");
566 return E_NOTIMPL;
567}
568
569static HRESULT WINAPI htmldoc2_get_fileSize(IHTMLDocument2 *iface, BSTR *p)
570{
571 ok(0, "unexpected call\n");
572 return E_NOTIMPL;
573}
574
575static HRESULT WINAPI htmldoc2_get_fileCreatedDate(IHTMLDocument2 *iface, BSTR *p)
576{
577 ok(0, "unexpected call\n");
578 return E_NOTIMPL;
579}
580
581static HRESULT WINAPI htmldoc2_get_fileModifiedDate(IHTMLDocument2 *iface, BSTR *p)
582{
583 ok(0, "unexpected call\n");
584 return E_NOTIMPL;
585}
586
587static HRESULT WINAPI htmldoc2_get_fileUpdatedDate(IHTMLDocument2 *iface, BSTR *p)
588{
589 ok(0, "unexpected call\n");
590 return E_NOTIMPL;
591}
592
593static HRESULT WINAPI htmldoc2_get_security(IHTMLDocument2 *iface, BSTR *p)
594{
595 ok(0, "unexpected call\n");
596 return E_NOTIMPL;
597}
598
599static HRESULT WINAPI htmldoc2_get_protocol(IHTMLDocument2 *iface, BSTR *p)
600{
601 ok(0, "unexpected call\n");
602 return E_NOTIMPL;
603}
604
605static HRESULT WINAPI htmldoc2_get_nameProp(IHTMLDocument2 *iface, BSTR *p)
606{
607 ok(0, "unexpected call\n");
608 return E_NOTIMPL;
609}
610
611static HRESULT WINAPI htmldoc2_write(IHTMLDocument2 *iface, SAFEARRAY *psarray)
612{
613 ok(0, "unexpected call\n");
614 return E_NOTIMPL;
615}
616
617static HRESULT WINAPI htmldoc2_writeln(IHTMLDocument2 *iface, SAFEARRAY *psarray)
618{
619 ok(0, "unexpected call\n");
620 return E_NOTIMPL;
621}
622
623static HRESULT WINAPI htmldoc2_open(IHTMLDocument2 *iface, BSTR url, VARIANT name,
624 VARIANT features, VARIANT replace, IDispatch **pomWindowResult)
625{
626 ok(0, "unexpected call\n");
627 return E_NOTIMPL;
628}
629
630static HRESULT WINAPI htmldoc2_close(IHTMLDocument2 *iface)
631{
632 ok(0, "unexpected call\n");
633 return E_NOTIMPL;
634}
635
636static HRESULT WINAPI htmldoc2_clear(IHTMLDocument2 *iface)
637{
638 ok(0, "unexpected call\n");
639 return E_NOTIMPL;
640}
641
642static HRESULT WINAPI htmldoc2_queryCommandSupported(IHTMLDocument2 *iface, BSTR cmdID,
643 VARIANT_BOOL *pfRet)
644{
645 ok(0, "unexpected call\n");
646 return E_NOTIMPL;
647}
648
649static HRESULT WINAPI htmldoc2_queryCommandEnabled(IHTMLDocument2 *iface, BSTR cmdID,
650 VARIANT_BOOL *pfRet)
651{
652 ok(0, "unexpected call\n");
653 return E_NOTIMPL;
654}
655
656static HRESULT WINAPI htmldoc2_queryCommandState(IHTMLDocument2 *iface, BSTR cmdID,
657 VARIANT_BOOL *pfRet)
658{
659 ok(0, "unexpected call\n");
660 return E_NOTIMPL;
661}
662
663static HRESULT WINAPI htmldoc2_queryCommandIndeterm(IHTMLDocument2 *iface, BSTR cmdID,
664 VARIANT_BOOL *pfRet)
665{
666 ok(0, "unexpected call\n");
667 return E_NOTIMPL;
668}
669
670static HRESULT WINAPI htmldoc2_queryCommandText(IHTMLDocument2 *iface, BSTR cmdID,
671 BSTR *pfRet)
672{
673 ok(0, "unexpected call\n");
674 return E_NOTIMPL;
675}
676
677static HRESULT WINAPI htmldoc2_queryCommandValue(IHTMLDocument2 *iface, BSTR cmdID,
678 VARIANT *pfRet)
679{
680 ok(0, "unexpected call\n");
681 return E_NOTIMPL;
682}
683
684static HRESULT WINAPI htmldoc2_execCommand(IHTMLDocument2 *iface, BSTR cmdID,
685 VARIANT_BOOL showUI, VARIANT value, VARIANT_BOOL *pfRet)
686{
687 ok(0, "unexpected call\n");
688 return E_NOTIMPL;
689}
690
691static HRESULT WINAPI htmldoc2_execCommandShowHelp(IHTMLDocument2 *iface, BSTR cmdID,
692 VARIANT_BOOL *pfRet)
693{
694 ok(0, "unexpected call\n");
695 return E_NOTIMPL;
696}
697
698static HRESULT WINAPI htmldoc2_createElement(IHTMLDocument2 *iface, BSTR eTag,
699 IHTMLElement **newElem)
700{
701 ok(0, "unexpected call\n");
702 return E_NOTIMPL;
703}
704
705static HRESULT WINAPI htmldoc2_put_onhelp(IHTMLDocument2 *iface, VARIANT v)
706{
707 ok(0, "unexpected call\n");
708 return E_NOTIMPL;
709}
710
711static HRESULT WINAPI htmldoc2_get_onhelp(IHTMLDocument2 *iface, VARIANT *p)
712{
713 ok(0, "unexpected call\n");
714 return E_NOTIMPL;
715}
716
717static HRESULT WINAPI htmldoc2_put_onclick(IHTMLDocument2 *iface, VARIANT v)
718{
719 ok(0, "unexpected call\n");
720 return E_NOTIMPL;
721}
722
723static HRESULT WINAPI htmldoc2_get_onclick(IHTMLDocument2 *iface, VARIANT *p)
724{
725 ok(0, "unexpected call\n");
726 return E_NOTIMPL;
727}
728
729static HRESULT WINAPI htmldoc2_put_ondblclick(IHTMLDocument2 *iface, VARIANT v)
730{
731 ok(0, "unexpected call\n");
732 return E_NOTIMPL;
733}
734
735static HRESULT WINAPI htmldoc2_get_ondblclick(IHTMLDocument2 *iface, VARIANT *p)
736{
737 ok(0, "unexpected call\n");
738 return E_NOTIMPL;
739}
740
741static HRESULT WINAPI htmldoc2_put_onkeyup(IHTMLDocument2 *iface, VARIANT v)
742{
743 ok(0, "unexpected call\n");
744 return E_NOTIMPL;
745}
746
747static HRESULT WINAPI htmldoc2_get_onkeyup(IHTMLDocument2 *iface, VARIANT *p)
748{
749 ok(0, "unexpected call\n");
750 return E_NOTIMPL;
751}
752
753static HRESULT WINAPI htmldoc2_put_onkeydown(IHTMLDocument2 *iface, VARIANT v)
754{
755 ok(0, "unexpected call\n");
756 return E_NOTIMPL;
757}
758
759static HRESULT WINAPI htmldoc2_get_onkeydown(IHTMLDocument2 *iface, VARIANT *p)
760{
761 ok(0, "unexpected call\n");
762 return E_NOTIMPL;
763}
764
765static HRESULT WINAPI htmldoc2_put_onkeypress(IHTMLDocument2 *iface, VARIANT v)
766{
767 ok(0, "unexpected call\n");
768 return E_NOTIMPL;
769}
770
771static HRESULT WINAPI htmldoc2_get_onkeypress(IHTMLDocument2 *iface, VARIANT *p)
772{
773 ok(0, "unexpected call\n");
774 return E_NOTIMPL;
775}
776
777static HRESULT WINAPI htmldoc2_put_onmouseup(IHTMLDocument2 *iface, VARIANT v)
778{
779 ok(0, "unexpected call\n");
780 return E_NOTIMPL;
781}
782
783static HRESULT WINAPI htmldoc2_get_onmouseup(IHTMLDocument2 *iface, VARIANT *p)
784{
785 ok(0, "unexpected call\n");
786 return E_NOTIMPL;
787}
788
789static HRESULT WINAPI htmldoc2_put_onmousedown(IHTMLDocument2 *iface, VARIANT v)
790{
791 ok(0, "unexpected call\n");
792 return E_NOTIMPL;
793}
794
795static HRESULT WINAPI htmldoc2_get_onmousedown(IHTMLDocument2 *iface, VARIANT *p)
796{
797 ok(0, "unexpected call\n");
798 return E_NOTIMPL;
799}
800
801static HRESULT WINAPI htmldoc2_put_onmousemove(IHTMLDocument2 *iface, VARIANT v)
802{
803 ok(0, "unexpected call\n");
804 return E_NOTIMPL;
805}
806
807static HRESULT WINAPI htmldoc2_get_onmousemove(IHTMLDocument2 *iface, VARIANT *p)
808{
809 ok(0, "unexpected call\n");
810 return E_NOTIMPL;
811}
812
813static HRESULT WINAPI htmldoc2_put_onmouseout(IHTMLDocument2 *iface, VARIANT v)
814{
815 ok(0, "unexpected call\n");
816 return E_NOTIMPL;
817}
818
819static HRESULT WINAPI htmldoc2_get_onmouseout(IHTMLDocument2 *iface, VARIANT *p)
820{
821 ok(0, "unexpected call\n");
822 return E_NOTIMPL;
823}
824
825static HRESULT WINAPI htmldoc2_put_onmouseover(IHTMLDocument2 *iface, VARIANT v)
826{
827 ok(0, "unexpected call\n");
828 return E_NOTIMPL;
829}
830
831static HRESULT WINAPI htmldoc2_get_onmouseover(IHTMLDocument2 *iface, VARIANT *p)
832{
833 ok(0, "unexpected call\n");
834 return E_NOTIMPL;
835}
836
838{
839 ok(0, "unexpected call\n");
840 return E_NOTIMPL;
841}
842
844{
845 ok(0, "unexpected call\n");
846 return E_NOTIMPL;
847}
848
849static HRESULT WINAPI htmldoc2_put_onafterupdate(IHTMLDocument2 *iface, VARIANT v)
850{
851 ok(0, "unexpected call\n");
852 return E_NOTIMPL;
853}
854
855static HRESULT WINAPI htmldoc2_get_onafterupdate(IHTMLDocument2 *iface, VARIANT *p)
856{
857 ok(0, "unexpected call\n");
858 return E_NOTIMPL;
859}
860
861static HRESULT WINAPI htmldoc2_put_onrowexit(IHTMLDocument2 *iface, VARIANT v)
862{
863 ok(0, "unexpected call\n");
864 return E_NOTIMPL;
865}
866
867static HRESULT WINAPI htmldoc2_get_onrowexit(IHTMLDocument2 *iface, VARIANT *p)
868{
869 ok(0, "unexpected call\n");
870 return E_NOTIMPL;
871}
872
873static HRESULT WINAPI htmldoc2_put_onrowenter(IHTMLDocument2 *iface, VARIANT v)
874{
875 ok(0, "unexpected call\n");
876 return E_NOTIMPL;
877}
878
879static HRESULT WINAPI htmldoc2_get_onrowenter(IHTMLDocument2 *iface, VARIANT *p)
880{
881 ok(0, "unexpected call\n");
882 return E_NOTIMPL;
883}
884
885static HRESULT WINAPI htmldoc2_put_ondragstart(IHTMLDocument2 *iface, VARIANT v)
886{
887 ok(0, "unexpected call\n");
888 return E_NOTIMPL;
889}
890
891static HRESULT WINAPI htmldoc2_get_ondragstart(IHTMLDocument2 *iface, VARIANT *p)
892{
893 ok(0, "unexpected call\n");
894 return E_NOTIMPL;
895}
896
897static HRESULT WINAPI htmldoc2_put_onselectstart(IHTMLDocument2 *iface, VARIANT v)
898{
899 ok(0, "unexpected call\n");
900 return E_NOTIMPL;
901}
902
903static HRESULT WINAPI htmldoc2_get_onselectstart(IHTMLDocument2 *iface, VARIANT *p)
904{
905 ok(0, "unexpected call\n");
906 return E_NOTIMPL;
907}
908
909static HRESULT WINAPI htmldoc2_elementFromPoint(IHTMLDocument2 *iface, LONG x, LONG y,
910 IHTMLElement **elementHit)
911{
912 ok(0, "unexpected call\n");
913 return E_NOTIMPL;
914}
915
916static HRESULT WINAPI htmldoc2_get_parentWindow(IHTMLDocument2 *iface, IHTMLWindow2 **p)
917{
918 ok(0, "unexpected call\n");
919 return E_NOTIMPL;
920}
921
922static HRESULT WINAPI htmldoc2_get_styleSheets(IHTMLDocument2 *iface,
923 IHTMLStyleSheetsCollection **p)
924{
925 ok(0, "unexpected call\n");
926 return E_NOTIMPL;
927}
928
929static HRESULT WINAPI htmldoc2_put_onbeforeupdate(IHTMLDocument2 *iface, VARIANT v)
930{
931 ok(0, "unexpected call\n");
932 return E_NOTIMPL;
933}
934
935static HRESULT WINAPI htmldoc2_get_onbeforeupdate(IHTMLDocument2 *iface, VARIANT *p)
936{
937 ok(0, "unexpected call\n");
938 return E_NOTIMPL;
939}
940
941static HRESULT WINAPI htmldoc2_put_onerrorupdate(IHTMLDocument2 *iface, VARIANT v)
942{
943 ok(0, "unexpected call\n");
944 return E_NOTIMPL;
945}
946
947static HRESULT WINAPI htmldoc2_get_onerrorupdate(IHTMLDocument2 *iface, VARIANT *p)
948{
949 ok(0, "unexpected call\n");
950 return E_NOTIMPL;
951}
952
953static HRESULT WINAPI htmldoc2_toString(IHTMLDocument2 *iface, BSTR *String)
954{
955 ok(0, "unexpected call\n");
956 return E_NOTIMPL;
957}
958
959static HRESULT WINAPI htmldoc2_createStyleSheet(IHTMLDocument2 *iface, BSTR bstrHref,
960 LONG lIndex, IHTMLStyleSheet **ppnewStyleSheet)
961{
962 ok(0, "unexpected call\n");
963 return E_NOTIMPL;
964}
965
966static const IHTMLDocument2Vtbl TestHTMLDocumentVtbl = {
1083};
1084
1085static IHTMLDocument2 htmldoc2 = { &TestHTMLDocumentVtbl };
1086
1088{
1089 *ppvObject = NULL;
1090
1091 if (IsEqualGUID(riid, &IID_IUnknown) ||
1092 IsEqualGUID(riid, &IID_IServiceProvider))
1093 {
1094 *ppvObject = iface;
1095 IServiceProvider_AddRef(iface);
1096 return S_OK;
1097 }
1098
1099 ok(0, "unexpected query interface: %s\n", wine_dbgstr_guid(riid));
1100
1101 return E_NOINTERFACE;
1102}
1103
1105{
1106 return 2;
1107}
1108
1110{
1111 return 1;
1112}
1113
1115{
1116 *obj = NULL;
1117
1118 if (IsEqualGUID(service, &SID_SBindHost) &&
1119 IsEqualGUID(riid, &IID_IBindHost))
1120 {
1121 CHECK_EXPECT2(sp_queryservice_SID_SBindHost);
1122 }
1123 else if (IsEqualGUID(service, &SID_SContainerDispatch) &&
1124 IsEqualGUID(riid, &IID_IHTMLDocument2))
1125 {
1126 CHECK_EXPECT2(sp_queryservice_SID_SContainerDispatch_htmldoc2);
1127 }
1128 else if (IsEqualGUID(service, &SID_SInternetHostSecurityManager) &&
1129 IsEqualGUID(riid, &IID_IHTMLDocument2))
1130 {
1131 CHECK_EXPECT2(sp_queryservice_SID_secmgr_htmldoc2);
1132 *obj = &htmldoc2;
1133 return S_OK;
1134 }
1135 else if (IsEqualGUID(service, &SID_SInternetHostSecurityManager) &&
1136 IsEqualGUID(riid, &IID_IXMLDOMDocument))
1137 {
1138 CHECK_EXPECT2(sp_queryservice_SID_secmgr_xmldomdoc);
1139 }
1140 else if (IsEqualGUID(service, &SID_SInternetHostSecurityManager) &&
1141 IsEqualGUID(riid, &IID_IInternetHostSecurityManager))
1142 {
1143 CHECK_EXPECT2(sp_queryservice_SID_secmgr_secmgr);
1144 }
1145 else if (IsEqualGUID(service, &SID_UnknownSID) &&
1146 IsEqualGUID(riid, &IID_IStream))
1147 {
1148 /* FIXME: unidentified service id */
1149 }
1150 else if ((IsEqualGUID(service, &IID_IInternetProtocol) && IsEqualGUID(riid, &IID_IInternetProtocol)) ||
1151 (IsEqualGUID(service, &IID_IHttpNegotiate2) && IsEqualGUID(riid, &IID_IHttpNegotiate2)) ||
1152 (IsEqualGUID(service, &IID_IGetBindHandle) && IsEqualGUID(riid, &IID_IGetBindHandle)) ||
1153 (IsEqualGUID(service, &IID_IBindStatusCallback) && IsEqualGUID(riid, &IID_IBindStatusCallback)) ||
1154 (IsEqualGUID(service, &IID_IWindowForBindingUI) && IsEqualGUID(riid, &IID_IWindowForBindingUI)))
1155 {
1156 }
1157 else
1158 ok(0, "unexpected request: sid %s, riid %s\n", wine_dbgstr_guid(service), wine_dbgstr_guid(riid));
1159
1160 return E_NOTIMPL;
1161}
1162
1163static const IServiceProviderVtbl testprovVtbl =
1164{
1166 sp_AddRef,
1167 sp_Release,
1169};
1170
1172
1174{
1175 *ppvObject = NULL;
1176
1177 if (IsEqualGUID(riid, &IID_IServiceProvider))
1178 CHECK_EXPECT2(site_qi_IServiceProvider);
1179
1180 if (IsEqualGUID(riid, &IID_IXMLDOMDocument))
1181 CHECK_EXPECT2(site_qi_IXMLDOMDocument);
1182
1184 CHECK_EXPECT2(site_qi_IOleClientSite);
1185
1187 *ppvObject = iface;
1188 else if (IsEqualGUID(riid, &IID_IServiceProvider))
1189 *ppvObject = &testprov;
1190
1191 if (*ppvObject) IUnknown_AddRef(iface);
1192
1193 return *ppvObject ? S_OK : E_NOINTERFACE;
1194}
1195
1197{
1198 return 2;
1199}
1200
1202{
1203 return 1;
1204}
1205
1206static const IUnknownVtbl testsiteVtbl =
1207{
1211};
1212
1214
1215typedef struct
1216{
1217 IDispatch IDispatch_iface;
1218 LONG ref;
1219} dispevent;
1220
1222
1224{
1225 return CONTAINING_RECORD(iface, dispevent, IDispatch_iface);
1226}
1227
1229{
1230 *ppvObject = NULL;
1231
1232 if ( IsEqualGUID( riid, &IID_IDispatch) ||
1234 {
1235 *ppvObject = iface;
1236 }
1237 else
1238 return E_NOINTERFACE;
1239
1240 IDispatch_AddRef( iface );
1241
1242 return S_OK;
1243}
1244
1246{
1248 return InterlockedIncrement( &This->ref );
1249}
1250
1252{
1255
1256 if (ref == 0)
1257 heap_free(This);
1258
1259 return ref;
1260}
1261
1263{
1265 *pctinfo = 0;
1266 return S_OK;
1267}
1268
1270 LCID lcid, ITypeInfo **ppTInfo)
1271{
1273 return S_OK;
1274}
1275
1277 LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
1278{
1280 return S_OK;
1281}
1282
1284 LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result,
1285 EXCEPINFO *excepInfo, UINT *argErr)
1286{
1287 LONG state;
1288 HRESULT hr;
1289
1290 ok(member == 0, "expected 0 member, got %d\n", member);
1291 ok(lcid == LOCALE_SYSTEM_DEFAULT, "expected LOCALE_SYSTEM_DEFAULT, got lcid %x\n", lcid);
1292 ok(flags == DISPATCH_METHOD, "expected DISPATCH_METHOD, got %d\n", flags);
1293
1294 ok(params->cArgs == 0, "got %d\n", params->cArgs);
1295 ok(params->cNamedArgs == 0, "got %d\n", params->cNamedArgs);
1296 ok(params->rgvarg == NULL, "got %p\n", params->rgvarg);
1297 ok(params->rgdispidNamedArgs == NULL, "got %p\n", params->rgdispidNamedArgs);
1298
1299 ok(result == NULL, "got %p\n", result);
1300 ok(excepInfo == NULL, "got %p\n", excepInfo);
1301 ok(argErr == NULL, "got %p\n", argErr);
1302
1304
1305 state = READYSTATE_UNINITIALIZED;
1306 hr = IXMLHttpRequest_get_readyState(httpreq, &state);
1307 ok(hr == S_OK, "got 0x%08x\n", hr);
1308 if (state == READYSTATE_COMPLETE)
1309 {
1310 BSTR text = NULL;
1311
1312 hr = IXMLHttpRequest_get_responseText(httpreq, &text);
1313 ok(hr == S_OK, "got 0x%08x\n", hr);
1314 ok(*text != 0, "got %s\n", wine_dbgstr_w(text));
1316 }
1317
1318 return E_FAIL;
1319}
1320
1321static const IDispatchVtbl dispeventVtbl =
1322{
1330};
1331
1333{
1334 dispevent *event = heap_alloc(sizeof(*event));
1335
1336 event->IDispatch_iface.lpVtbl = &dispeventVtbl;
1337 event->ref = 1;
1338
1339 return &event->IDispatch_iface;
1340}
1341
1343{
1345 HRESULT hr;
1346
1347 hr = CoCreateInstance(&CLSID_XMLHTTPRequest, NULL, CLSCTX_INPROC_SERVER,
1348 &IID_IXMLHttpRequest, (void**)&ret);
1349
1350 return SUCCEEDED(hr) ? ret : NULL;
1351}
1352
1353static IServerXMLHTTPRequest *create_server_xhr(void)
1354{
1355 IServerXMLHTTPRequest *ret;
1356 HRESULT hr;
1357
1358 hr = CoCreateInstance(&CLSID_ServerXMLHTTP30, NULL, CLSCTX_INPROC_SERVER, &IID_IServerXMLHTTPRequest, (void **)&ret);
1359
1360 return SUCCEEDED(hr) ? ret : NULL;
1361}
1362
1363static void set_safety_opt(IUnknown *unk, DWORD mask, DWORD opts)
1364{
1365 IObjectSafety *obj_safety;
1366 HRESULT hr;
1367
1368 hr = IUnknown_QueryInterface(unk, &IID_IObjectSafety, (void**)&obj_safety);
1369 ok(hr == S_OK, "Could not get IObjectSafety iface: %08x\n", hr);
1370
1371 hr = IObjectSafety_SetInterfaceSafetyOptions(obj_safety, &IID_IDispatch, mask, mask&opts);
1372 ok(hr == S_OK, "SetInterfaceSafetyOptions failed: %08x\n", hr);
1373
1374 IObjectSafety_Release(obj_safety);
1375}
1376
1378{
1379 IObjectWithSite *obj_site;
1380 HRESULT hr;
1381
1382 hr = IXMLHttpRequest_QueryInterface(xhr, &IID_IObjectWithSite, (void**)&obj_site);
1383 ok(hr == S_OK, "Could not get IObjectWithSite iface: %08x\n", hr);
1384
1386
1387 SET_EXPECT(site_qi_IServiceProvider);
1388 SET_EXPECT(sp_queryservice_SID_SBindHost);
1389 SET_EXPECT(sp_queryservice_SID_SContainerDispatch_htmldoc2);
1390 SET_EXPECT(sp_queryservice_SID_secmgr_htmldoc2);
1391 SET_EXPECT(sp_queryservice_SID_secmgr_xmldomdoc);
1392 SET_EXPECT(sp_queryservice_SID_secmgr_secmgr);
1393
1394 /* calls to IHTMLDocument2 */
1396 SET_EXPECT(collection_get_length);
1397 SET_EXPECT(htmldoc2_get_url);
1398
1399 SET_EXPECT(site_qi_IXMLDOMDocument);
1400 SET_EXPECT(site_qi_IOleClientSite);
1401
1402 hr = IObjectWithSite_SetSite(obj_site, &testsite);
1403 EXPECT_HR(hr, S_OK);
1404
1405 CHECK_CALLED(site_qi_IServiceProvider);
1407 CHECK_CALLED(sp_queryservice_SID_SBindHost);
1408 CHECK_CALLED(sp_queryservice_SID_SContainerDispatch_htmldoc2);
1409 CHECK_CALLED(sp_queryservice_SID_secmgr_htmldoc2);
1411 CHECK_CALLED(sp_queryservice_SID_secmgr_xmldomdoc);
1412 /* this one isn't very reliable
1413 CHECK_CALLED(sp_queryservice_SID_secmgr_secmgr); */
1414todo_wine {
1416 CHECK_CALLED(collection_get_length);
1417}
1418 CHECK_CALLED(htmldoc2_get_url);
1419
1420todo_wine {
1421 CHECK_CALLED(site_qi_IXMLDOMDocument);
1422 CHECK_CALLED(site_qi_IOleClientSite);
1423}
1424
1426
1427 IObjectWithSite_Release(obj_site);
1428}
1429
1430#define test_open(a,b,c,d) _test_open(__LINE__,a,b,c,d)
1431static void _test_open(unsigned line, IXMLHttpRequest *xhr, const char *method, const char *url, HRESULT exhres)
1432{
1433 VARIANT empty, vfalse;
1434 HRESULT hr;
1435
1436 V_VT(&empty) = VT_EMPTY;
1437 V_VT(&vfalse) = VT_BOOL;
1438 V_BOOL(&vfalse) = VARIANT_FALSE;
1439
1440 hr = IXMLHttpRequest_open(xhr, _bstr_(method), _bstr_(url), vfalse, empty, empty);
1441 ok_(__FILE__,line)(hr == exhres, "open(%s %s) failed: %08x, expected %08x\n", method, url, hr, exhres);
1442}
1443
1444#define test_server_open(a,b,c,d) _test_server_open(__LINE__,a,b,c,d)
1445static void _test_server_open(unsigned line, IServerXMLHTTPRequest *xhr, const char *method, const char *url, HRESULT exhres)
1446{
1447 VARIANT empty, vfalse;
1448 HRESULT hr;
1449
1450 V_VT(&empty) = VT_EMPTY;
1451 V_VT(&vfalse) = VT_BOOL;
1452 V_BOOL(&vfalse) = VARIANT_FALSE;
1453
1454 hr = IServerXMLHTTPRequest_open(xhr, _bstr_(method), _bstr_(url), vfalse, empty, empty);
1455 ok_(__FILE__,line)(hr == exhres, "open(%s %s) failed: %08x, expected %08x\n", method, url, hr, exhres);
1456}
1457
1458static void test_XMLHTTP(void)
1459{
1460 static const char bodyA[] = "mode=Test";
1461 static const char urlA[] = "http://test.winehq.org/tests/post.php";
1462 static const char referertesturl[] = "http://test.winehq.org/tests/referer.php";
1463 static const WCHAR wszExpectedResponse[] = {'F','A','I','L','E','D',0};
1464 static const WCHAR norefererW[] = {'n','o',' ','r','e','f','e','r','e','r',' ','s','e','t',0};
1465
1467 IObjectWithSite *obj_site, *obj_site2;
1468 BSTR bstrResponse, str, str1;
1469 VARIANT varbody;
1470 VARIANT dummy;
1471 LONG state, status, bound;
1473 void *ptr;
1474 HRESULT hr;
1475 HGLOBAL g;
1476
1477 xhr = create_xhr();
1478
1480 V_VT(&dummy) = VT_ERROR;
1482
1483 hr = IXMLHttpRequest_put_onreadystatechange(xhr, NULL);
1484 EXPECT_HR(hr, S_OK);
1485
1486 hr = IXMLHttpRequest_abort(xhr);
1487 EXPECT_HR(hr, S_OK);
1488
1489 V_VT(&varbody) = VT_I2;
1490 V_I2(&varbody) = 1;
1491 hr = IXMLHttpRequest_get_responseBody(xhr, &varbody);
1493 ok(V_VT(&varbody) == VT_EMPTY, "got type %d\n", V_VT(&varbody));
1494
1495 V_VT(&varbody) = VT_I2;
1496 V_I2(&varbody) = 1;
1497 hr = IXMLHttpRequest_get_responseStream(xhr, &varbody);
1499 ok(V_VT(&varbody) == VT_EMPTY, "got type %d\n", V_VT(&varbody));
1500
1501 /* send before open */
1502 hr = IXMLHttpRequest_send(xhr, dummy);
1503 ok(hr == E_FAIL || broken(hr == E_UNEXPECTED) /* win2k */, "got 0x%08x\n", hr);
1504
1505 /* initial status code */
1506 hr = IXMLHttpRequest_get_status(xhr, NULL);
1507 ok(hr == E_POINTER || broken(hr == E_INVALIDARG) /* <win8 */, "got 0x%08x\n", hr);
1508
1509 status = 0xdeadbeef;
1510 hr = IXMLHttpRequest_get_status(xhr, &status);
1511 ok(hr == E_FAIL || broken(hr == E_UNEXPECTED) /* win2k */, "got 0x%08x\n", hr);
1512 ok(status == READYSTATE_UNINITIALIZED || broken(status == 0xdeadbeef) /* <win8 */, "got %d\n", status);
1513
1514 hr = IXMLHttpRequest_get_statusText(xhr, &str);
1515 ok(hr == E_FAIL, "got 0x%08x\n", hr);
1516
1517 /* invalid parameters */
1519 test_open(xhr, "POST", NULL, E_INVALIDARG);
1520 test_open(xhr, NULL, urlA, E_INVALIDARG);
1521
1522 hr = IXMLHttpRequest_setRequestHeader(xhr, NULL, NULL);
1524
1525 hr = IXMLHttpRequest_setRequestHeader(xhr, _bstr_("header1"), NULL);
1526 ok(hr == E_FAIL || broken(hr == E_UNEXPECTED) /* win2k */, "got 0x%08x\n", hr);
1527
1528 hr = IXMLHttpRequest_setRequestHeader(xhr, NULL, _bstr_("value1"));
1530
1531 hr = IXMLHttpRequest_setRequestHeader(xhr, _bstr_("header1"), _bstr_("value1"));
1532 ok(hr == E_FAIL || broken(hr == E_UNEXPECTED) /* win2k */, "got 0x%08x\n", hr);
1533
1534 hr = IXMLHttpRequest_get_readyState(xhr, NULL);
1535 ok(hr == E_POINTER || broken(hr == E_INVALIDARG) /* <win8 */, "got 0x%08x\n", hr);
1536
1537 state = -1;
1538 hr = IXMLHttpRequest_get_readyState(xhr, &state);
1539 EXPECT_HR(hr, S_OK);
1540 ok(state == READYSTATE_UNINITIALIZED, "got %d, expected READYSTATE_UNINITIALIZED\n", state);
1541
1542 httpreq = xhr;
1543 event = create_dispevent();
1544
1545 EXPECT_REF(event, 1);
1546 hr = IXMLHttpRequest_put_onreadystatechange(xhr, event);
1547 EXPECT_HR(hr, S_OK);
1548 EXPECT_REF(event, 2);
1549
1551
1552 test_open(xhr, "POST", urlA, S_OK);
1553
1554 ok(g_unexpectedcall == 0, "unexpected disp event call\n");
1555 ok(g_expectedcall == 1 || broken(g_expectedcall == 0) /* win2k */, "no expected disp event call\n");
1556
1557 /* status code after ::open() */
1558 status = 0xdeadbeef;
1559 hr = IXMLHttpRequest_get_status(xhr, &status);
1560 ok(hr == E_FAIL || broken(hr == E_UNEXPECTED) /* win2k */, "got 0x%08x\n", hr);
1561 ok(status == READYSTATE_UNINITIALIZED || broken(status == 0xdeadbeef) /* <win8 */, "got %d\n", status);
1562
1563 state = -1;
1564 hr = IXMLHttpRequest_get_readyState(xhr, &state);
1565 EXPECT_HR(hr, S_OK);
1566 ok(state == READYSTATE_LOADING, "got %d, expected READYSTATE_LOADING\n", state);
1567
1568 hr = IXMLHttpRequest_abort(xhr);
1569 EXPECT_HR(hr, S_OK);
1570
1571 state = -1;
1572 hr = IXMLHttpRequest_get_readyState(xhr, &state);
1573 EXPECT_HR(hr, S_OK);
1574 ok(state == READYSTATE_UNINITIALIZED || broken(state == READYSTATE_LOADING) /* win2k */,
1575 "got %d, expected READYSTATE_UNINITIALIZED\n", state);
1576
1577 test_open(xhr, "POST", urlA, S_OK);
1578
1579 hr = IXMLHttpRequest_setRequestHeader(xhr, _bstr_("header1"), _bstr_("value1"));
1580 EXPECT_HR(hr, S_OK);
1581
1582 hr = IXMLHttpRequest_setRequestHeader(xhr, NULL, _bstr_("value1"));
1584
1585 hr = IXMLHttpRequest_setRequestHeader(xhr, _bstr_(""), _bstr_("value1"));
1587
1588 V_VT(&varbody) = VT_BSTR;
1589 V_BSTR(&varbody) = _bstr_(bodyA);
1590
1591 hr = IXMLHttpRequest_send(xhr, varbody);
1592 if (hr == INET_E_RESOURCE_NOT_FOUND)
1593 {
1594 skip("No connection could be made with test.winehq.org\n");
1595 IXMLHttpRequest_Release(xhr);
1596 return;
1597 }
1598 EXPECT_HR(hr, S_OK);
1599
1600 /* response headers */
1601 hr = IXMLHttpRequest_getAllResponseHeaders(xhr, NULL);
1602 ok(hr == E_POINTER || broken(hr == E_INVALIDARG) /* <win8 */, "got 0x%08x\n", hr);
1603 hr = IXMLHttpRequest_getAllResponseHeaders(xhr, &str);
1604 EXPECT_HR(hr, S_OK);
1605 /* status line is stripped already */
1606 ok(memcmp(str, _bstr_("HTTP"), 4*sizeof(WCHAR)), "got response headers %s\n", wine_dbgstr_w(str));
1607 ok(*str, "got empty headers\n");
1608 hr = IXMLHttpRequest_getAllResponseHeaders(xhr, &str1);
1609 EXPECT_HR(hr, S_OK);
1610 ok(str1 != str, "got %p\n", str1);
1611 SysFreeString(str1);
1613
1614 hr = IXMLHttpRequest_getResponseHeader(xhr, NULL, NULL);
1616 hr = IXMLHttpRequest_getResponseHeader(xhr, _bstr_("Date"), NULL);
1617 ok(hr == E_POINTER || broken(hr == E_INVALIDARG) /* <win8 */, "got 0x%08x\n", hr);
1618 hr = IXMLHttpRequest_getResponseHeader(xhr, _bstr_("Date"), &str);
1619 EXPECT_HR(hr, S_OK);
1620 ok(*str != ' ', "got leading space in header %s\n", wine_dbgstr_w(str));
1622
1623 /* status code after ::send() */
1624 status = 0xdeadbeef;
1625 hr = IXMLHttpRequest_get_status(xhr, &status);
1626 EXPECT_HR(hr, S_OK);
1627 ok(status == 200, "got %d\n", status);
1628
1629 hr = IXMLHttpRequest_get_statusText(xhr, NULL);
1630 ok(hr == E_POINTER || broken(hr == E_INVALIDARG) /* <win8 */, "got 0x%08x\n", hr);
1631
1632 hr = IXMLHttpRequest_get_statusText(xhr, &str);
1633 EXPECT_HR(hr, S_OK);
1634 ok(!lstrcmpW(str, _bstr_("OK")), "got status %s\n", wine_dbgstr_w(str));
1636
1637 /* another ::send() after completed request */
1638 V_VT(&varbody) = VT_BSTR;
1639 V_BSTR(&varbody) = _bstr_(bodyA);
1640
1641 hr = IXMLHttpRequest_send(xhr, varbody);
1642 ok(hr == E_FAIL || broken(hr == E_UNEXPECTED) /* win2k */, "got 0x%08x\n", hr);
1643
1644 hr = IXMLHttpRequest_get_responseText(xhr, &bstrResponse);
1645 EXPECT_HR(hr, S_OK);
1646 /* the server currently returns "FAILED" because the Content-Type header is
1647 * not what the server expects */
1648 if(hr == S_OK)
1649 {
1650 ok(!memcmp(bstrResponse, wszExpectedResponse, sizeof(wszExpectedResponse)),
1651 "expected %s, got %s\n", wine_dbgstr_w(wszExpectedResponse), wine_dbgstr_w(bstrResponse));
1652 SysFreeString(bstrResponse);
1653 }
1654
1655 /* POST: VT_VARIANT body */
1656 /* VT_VARIANT|VT_BYREF fails on Windows 10 */
1657 test_open(xhr, "POST", urlA, S_OK);
1658
1659 hr = IXMLHttpRequest_send(xhr, varbody);
1660 EXPECT_HR(hr, S_OK);
1661
1662 /* GET request */
1663 test_open(xhr, "GET", xmltestA, S_OK);
1664
1665 V_VT(&varbody) = VT_EMPTY;
1666
1667 hr = IXMLHttpRequest_send(xhr, varbody);
1668 if (hr == INET_E_RESOURCE_NOT_FOUND)
1669 {
1670 skip("No connection could be made with test.winehq.org\n");
1671 IXMLHttpRequest_Release(xhr);
1672 return;
1673 }
1674 EXPECT_HR(hr, S_OK);
1675
1676 hr = IXMLHttpRequest_get_responseText(xhr, NULL);
1677 ok(hr == E_POINTER || broken(hr == E_INVALIDARG) /* <win8 */, "got 0x%08x\n", hr);
1678
1679 hr = IXMLHttpRequest_get_responseText(xhr, &bstrResponse);
1680 EXPECT_HR(hr, S_OK);
1681 ok(!memcmp(bstrResponse, _bstr_(xmltestbodyA), sizeof(xmltestbodyA)*sizeof(WCHAR)),
1682 "expected %s, got %s\n", xmltestbodyA, wine_dbgstr_w(bstrResponse));
1683 SysFreeString(bstrResponse);
1684
1685 hr = IXMLHttpRequest_get_responseBody(xhr, NULL);
1687
1688 V_VT(&varbody) = VT_EMPTY;
1689 hr = IXMLHttpRequest_get_responseBody(xhr, &varbody);
1690 EXPECT_HR(hr, S_OK);
1691 ok(V_VT(&varbody) == (VT_ARRAY|VT_UI1), "got type %d, expected %d\n", V_VT(&varbody), VT_ARRAY|VT_UI1);
1692 ok(SafeArrayGetDim(V_ARRAY(&varbody)) == 1, "got %d, expected one dimension\n", SafeArrayGetDim(V_ARRAY(&varbody)));
1693
1694 bound = -1;
1695 hr = SafeArrayGetLBound(V_ARRAY(&varbody), 1, &bound);
1696 EXPECT_HR(hr, S_OK);
1697 ok(bound == 0, "got %d, expected zero bound\n", bound);
1698
1699 hr = SafeArrayAccessData(V_ARRAY(&varbody), &ptr);
1700 EXPECT_HR(hr, S_OK);
1701 ok(memcmp(ptr, xmltestbodyA, sizeof(xmltestbodyA)-1) == 0, "got wrong body data\n");
1702 SafeArrayUnaccessData(V_ARRAY(&varbody));
1703
1704 VariantClear(&varbody);
1705
1706 /* get_responseStream */
1707 hr = IXMLHttpRequest_get_responseStream(xhr, NULL);
1709
1710 V_VT(&varbody) = VT_EMPTY;
1711 hr = IXMLHttpRequest_get_responseStream(xhr, &varbody);
1712 ok(V_VT(&varbody) == VT_UNKNOWN, "got type %d\n", V_VT(&varbody));
1713 EXPECT_HR(hr, S_OK);
1714 EXPECT_REF(V_UNKNOWN(&varbody), 1);
1715
1716 g = NULL;
1717 hr = GetHGlobalFromStream((IStream*)V_UNKNOWN(&varbody), &g);
1718 EXPECT_HR(hr, S_OK);
1719 ok(g != NULL, "got %p\n", g);
1720 VariantClear(&varbody);
1721
1722 IDispatch_Release(event);
1723
1724 /* test if referrer header is sent */
1725 test_open(xhr, "GET", referertesturl, S_OK);
1726
1727 V_VT(&varbody) = VT_EMPTY;
1728 hr = IXMLHttpRequest_send(xhr, varbody);
1729 ok(hr == S_OK, "got 0x%08x\n", hr);
1730 hr = IXMLHttpRequest_get_responseText(xhr, &str);
1731 ok(hr == S_OK, "got 0x%08x\n", hr);
1732 ok(!lstrcmpW(str, norefererW), "got response text %s\n", wine_dbgstr_w(str));
1734
1735 /* interaction with object site */
1736 hr = IXMLHttpRequest_QueryInterface(xhr, &IID_IObjectWithSite, (void**)&obj_site);
1737 EXPECT_HR(hr, S_OK);
1738
1739 hr = IObjectWithSite_SetSite(obj_site, NULL);
1740 ok(hr == S_OK, "got 0x%08x\n", hr);
1741
1742 hr = IXMLHttpRequest_QueryInterface(xhr, &IID_IObjectWithSite, (void**)&obj_site2);
1743 EXPECT_HR(hr, S_OK);
1744 ok(obj_site == obj_site2 || broken(obj_site != obj_site2), "got new instance\n");
1745 IObjectWithSite_Release(obj_site2);
1746
1748
1749 test_open(xhr, "GET", "tests/referer.php", S_OK);
1750 str1 = a2bstr("http://test.winehq.org/");
1751
1752 V_VT(&varbody) = VT_EMPTY;
1753 hr = IXMLHttpRequest_send(xhr, varbody);
1754 ok(hr == S_OK, "got 0x%08x\n", hr);
1755
1756 hr = IXMLHttpRequest_get_responseText(xhr, &str);
1757 ok(hr == S_OK, "got 0x%08x\n", hr);
1758 ok(!lstrcmpW(str, str1), "got response text %s, expected %s\n", wine_dbgstr_w(str), wine_dbgstr_w(str1));
1760 SysFreeString(str1);
1761
1762 /* try to set site another time */
1763 hr = IObjectWithSite_SetSite(obj_site, &testsite);
1764 EXPECT_HR(hr, S_OK);
1765
1766 IObjectWithSite_Release(obj_site);
1767
1768 /* HEAD request */
1769 hr = IXMLHttpRequest_put_onreadystatechange(xhr, NULL);
1770 ok(hr == S_OK, "Failed to reset state change handler, hr %#x.\n", hr);
1771
1772 test_open(xhr, "HEAD", xmltestA, S_OK);
1773
1774 V_VT(&varbody) = VT_EMPTY;
1775 hr = IXMLHttpRequest_send(xhr, varbody);
1776 ok(hr == S_OK, "Failed to send HEAD request, hr %#x.\n", hr);
1777
1778 str = NULL;
1779 hr = IXMLHttpRequest_get_responseText(xhr, &str);
1780 ok(hr == S_OK, "Failed to get response text, hr %#x.\n", hr);
1781 ok(!*str, "Unexpected text %s.\n", wine_dbgstr_w(str));
1783
1784 hr = IXMLHttpRequest_getAllResponseHeaders(xhr, &str);
1785 ok(hr == S_OK, "Failed to get response headers, hr %#x.\n", hr);
1786 ok(str && *str, "Expected response headers.\n");
1788
1789 IXMLHttpRequest_Release(xhr);
1790
1791 /* invalid host */
1792 xhr = create_xhr();
1793
1794 test_open(xhr, "GET", "http://invalid.host.test.winehq.org/test/path", S_OK);
1795
1796 V_VT(&varbody) = VT_EMPTY;
1797 hr = IXMLHttpRequest_send(xhr, varbody);
1798 todo_wine
1799 ok(hr == INET_E_RESOURCE_NOT_FOUND, "send to invalid host returned %#x.\n", hr);
1800
1801 IXMLHttpRequest_Release(xhr);
1802 free_bstrs();
1803}
1804
1805static void test_server_xhr(void)
1806{
1807 IServerXMLHTTPRequest *xhr;
1808 BSTR response;
1809 VARIANT body;
1810 HRESULT hr;
1811
1812 /* GET request */
1814
1816
1817 V_VT(&body) = VT_EMPTY;
1818
1819 hr = IServerXMLHTTPRequest_send(xhr, body);
1820 if (hr == INET_E_RESOURCE_NOT_FOUND)
1821 {
1822 skip("No connection could be made with test.winehq.org\n");
1823 IServerXMLHTTPRequest_Release(xhr);
1824 return;
1825 }
1826 ok(hr == S_OK, "send failed: %08x\n", hr);
1827
1828 hr = IServerXMLHTTPRequest_get_responseText(xhr, &response);
1829 ok(hr == S_OK, "get_responseText failed: %08x\n", hr);
1830 ok(!strcmp_wa(response, xmltestbodyA), "got %s\n", wine_dbgstr_w(response));
1831 SysFreeString(response);
1832
1833 IServerXMLHTTPRequest_Release(xhr);
1834
1835 /* invalid host */
1837
1838 test_server_open(xhr, "GET", "http://invalid.host.test.winehq.org/test/path", S_OK);
1839
1840 V_VT(&body) = VT_EMPTY;
1841 hr = IServerXMLHTTPRequest_send(xhr, body);
1842 todo_wine
1843 ok(hr == WININET_E_NAME_NOT_RESOLVED, "send to invalid host returned %#x.\n", hr);
1844
1845 IServerXMLHTTPRequest_Release(xhr);
1846 free_bstrs();
1847}
1848
1849static void test_safe_httpreq(void)
1850{
1852
1853 xhr = create_xhr();
1854
1855 set_safety_opt((IUnknown*)xhr, INTERFACESAFE_FOR_UNTRUSTED_DATA, -1);
1857
1858 /* different scheme */
1859 test_open(xhr, "GET", "https://test.winehq.org/tests/hello.html", E_ACCESSDENIED);
1860
1861 /* different host */
1862 test_open(xhr, "GET", "http://tests.winehq.org/tests/hello.html", E_ACCESSDENIED);
1863 test_open(xhr, "GET", "http://www.test.winehq.org/tests/hello.html", E_ACCESSDENIED);
1864
1865 IXMLHttpRequest_Release(xhr);
1866 free_bstrs();
1867}
1868
1869static void test_supporterrorinfo(void)
1870{
1871 HRESULT hr;
1873 IServerXMLHTTPRequest *server_xhr;
1874 ISupportErrorInfo *errorinfo, *errorinfo2;
1875
1876 xhr = create_xhr();
1877
1878 EXPECT_REF(xhr, 1);
1879 hr = IXMLHttpRequest_QueryInterface(xhr, &IID_ISupportErrorInfo, (void **)&errorinfo);
1880 ok(hr == S_OK, "Failed to get ISupportErrorInfo, hr %#x.\n", hr);
1881 EXPECT_REF(xhr, 2);
1882
1883 hr = IXMLHttpRequest_QueryInterface(xhr, &IID_ISupportErrorInfo, (void **)&errorinfo2);
1884 ok(hr == S_OK, "Failed to get ISupportErrorInfo, hr %#x.\n", hr);
1885 ok(errorinfo == errorinfo2, "Unexpected error info instance.\n");
1886 EXPECT_REF(xhr, 3);
1887
1888 ISupportErrorInfo_Release(errorinfo2);
1889 ISupportErrorInfo_Release(errorinfo);
1890
1891 IXMLHttpRequest_Release(xhr);
1892
1893 /* ServerXMLHTTP */
1894 server_xhr = create_server_xhr();
1895
1896 EXPECT_REF(server_xhr, 1);
1897 hr = IServerXMLHTTPRequest_QueryInterface(server_xhr, &IID_ISupportErrorInfo, (void **)&errorinfo);
1898 ok(hr == S_OK, "Failed to get ISupportErrorInfo, hr %#x.\n", hr);
1899 EXPECT_REF(server_xhr, 2);
1900
1901 hr = IServerXMLHTTPRequest_QueryInterface(server_xhr, &IID_ISupportErrorInfo, (void **)&errorinfo2);
1902 ok(hr == S_OK, "Failed to get ISupportErrorInfo, hr %#x.\n", hr);
1903 ok(errorinfo == errorinfo2, "Unexpected error info instance.\n");
1904 EXPECT_REF(server_xhr, 3);
1905
1906 ISupportErrorInfo_Release(errorinfo2);
1907 ISupportErrorInfo_Release(errorinfo);
1908
1909 IServerXMLHTTPRequest_Release(server_xhr);
1910}
1911
1913{
1915
1917
1918 if (!(xhr = create_xhr()))
1919 {
1920 win_skip("IXMLHTTPRequest is not available\n");
1922 return;
1923 }
1924
1925 IXMLHttpRequest_Release(xhr);
1926
1927 test_XMLHTTP();
1931
1933}
#define broken(x)
Definition: _sntprintf.h:21
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
static int state
Definition: maze.c:121
static void * heap_alloc(size_t len)
Definition: appwiz.h:66
static BOOL heap_free(void *mem)
Definition: appwiz.h:76
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
#define trace
Definition: atltest.h:70
#define ok(value,...)
Definition: atltest.h:57
#define skip(...)
Definition: atltest.h:64
#define START_TEST(x)
Definition: atltest.h:75
#define ok_(x1, x2)
Definition: atltest.h:61
#define ARRAY_SIZE(A)
Definition: main.h:33
const GUID IID_IUnknown
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_NOTIMPL
Definition: ddrawi.h:99
#define E_FAIL
Definition: ddrawi.h:102
#define E_PENDING
Definition: dinput.h:172
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
static const WCHAR empty[]
Definition: main.c:47
#define CP_ACP
Definition: compat.h:109
OLECHAR * BSTR
Definition: compat.h:2293
short VARIANT_BOOL
Definition: compat.h:2290
#define MultiByteToWideChar
Definition: compat.h:110
@ VT_BSTR
Definition: compat.h:2303
@ VT_UNKNOWN
Definition: compat.h:2308
@ VT_ERROR
Definition: compat.h:2305
@ VT_ARRAY
Definition: compat.h:2341
@ VT_BOOL
Definition: compat.h:2306
@ VT_I2
Definition: compat.h:2297
@ VT_EMPTY
Definition: compat.h:2295
@ VT_UI1
Definition: compat.h:2311
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
Definition: locale.c:4242
const WCHAR * text
Definition: package.c:1799
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:1964
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:2067
HRESULT WINAPI GetHGlobalFromStream(IStream *pstm, HGLOBAL *phglobal)
HRESULT WINAPI SafeArrayAccessData(SAFEARRAY *psa, void **ppvData)
Definition: safearray.c:1137
HRESULT WINAPI SafeArrayUnaccessData(SAFEARRAY *psa)
Definition: safearray.c:1168
UINT WINAPI SafeArrayGetDim(SAFEARRAY *psa)
Definition: safearray.c:1094
HRESULT WINAPI SafeArrayGetLBound(SAFEARRAY *psa, UINT nDim, LONG *plLbound)
Definition: safearray.c:1066
#define assert(x)
Definition: debug.h:53
method
Definition: dragdrop.c:54
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
unsigned short WORD
Definition: ntddk_ex.h:93
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
const GLdouble * v
Definition: gl.h:2040
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
struct _cl_event * event
Definition: glext.h:7739
GLuint index
Definition: glext.h:6031
GLenum GLint GLuint mask
Definition: glext.h:6028
GLenum const GLfloat * params
Definition: glext.h:5645
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLbitfield flags
Definition: glext.h:7161
GLboolean GLboolean g
Definition: glext.h:6204
GLfloat GLfloat p
Definition: glext.h:8902
GLenum GLsizei len
Definition: glext.h:6722
GLuint64EXT * result
Definition: glext.h:11304
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
static HRESULT WINAPI htmldoc2_get_linkColor(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:454
static HRESULT WINAPI htmldoc2_get_selection(IHTMLDocument2 *iface, IHTMLSelectionObject **p)
Definition: httpreq.c:382
#define SET_EXPECT(func)
Definition: httpreq.c:64
static HRESULT WINAPI htmldoc2_put_defaultCharset(IHTMLDocument2 *iface, BSTR v)
Definition: httpreq.c:551
static int g_expectedcall
Definition: httpreq.c:95
static HRESULT WINAPI htmldoc2_toString(IHTMLDocument2 *iface, BSTR *String)
Definition: httpreq.c:953
static HRESULT WINAPI htmldoc2_close(IHTMLDocument2 *iface)
Definition: httpreq.c:630
static HRESULT WINAPI htmlecoll_item(IHTMLElementCollection *iface, VARIANT name, VARIANT index, IDispatch **pdisp)
Definition: httpreq.c:220
static BSTR _bstr_(const char *str)
Definition: httpreq.c:115
static HRESULT WINAPI htmlecoll_GetTypeInfoCount(IHTMLElementCollection *iface, UINT *pctinfo)
Definition: httpreq.c:167
static HRESULT WINAPI htmldoc2_get_onkeydown(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:759
static HRESULT WINAPI htmldoc2_get_onclick(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:723
static HRESULT WINAPI htmldoc2_get_nameProp(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:605
static HRESULT WINAPI sp_QueryInterface(IServiceProvider *iface, REFIID riid, void **ppvObject)
Definition: httpreq.c:1087
static HRESULT WINAPI htmldoc2_elementFromPoint(IHTMLDocument2 *iface, LONG x, LONG y, IHTMLElement **elementHit)
Definition: httpreq.c:909
static HRESULT WINAPI htmldoc2_put_onclick(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:717
static HRESULT WINAPI htmldoc2_get_activeElement(IHTMLDocument2 *iface, IHTMLElement **p)
Definition: httpreq.c:316
static HRESULT WINAPI htmldoc2_GetTypeInfoCount(IHTMLDocument2 *iface, UINT *pctinfo)
Definition: httpreq.c:268
static HRESULT WINAPI htmlecoll_put_length(IHTMLElementCollection *iface, LONG v)
Definition: httpreq.c:202
static IUnknown testsite
Definition: httpreq.c:1213
static HRESULT WINAPI htmldoc2_open(IHTMLDocument2 *iface, BSTR url, VARIANT name, VARIANT features, VARIANT replace, IDispatch **pomWindowResult)
Definition: httpreq.c:623
static IXMLHttpRequest * httpreq
Definition: httpreq.c:1221
static int g_unexpectedcall
Definition: httpreq.c:95
static HRESULT WINAPI htmldoc2_put_expando(IHTMLDocument2 *iface, VARIANT_BOOL v)
Definition: httpreq.c:527
static HRESULT WINAPI htmldoc2_put_vlinkColor(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:460
static BSTR alloced_bstrs[256]
Definition: httpreq.c:112
static ULONG WINAPI sp_AddRef(IServiceProvider *iface)
Definition: httpreq.c:1104
static HRESULT WINAPI htmldoc2_createStyleSheet(IHTMLDocument2 *iface, BSTR bstrHref, LONG lIndex, IHTMLStyleSheet **ppnewStyleSheet)
Definition: httpreq.c:959
static HRESULT WINAPI htmlecoll_get__newEnum(IHTMLElementCollection *iface, IUnknown **p)
Definition: httpreq.c:214
static HRESULT WINAPI htmldoc2_get_readyState(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:388
static HRESULT WINAPI htmldoc2_get_fileUpdatedDate(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:587
static HRESULT WINAPI htmldoc2_get_plugins(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:406
static HRESULT WINAPI htmldoc2_get_designMode(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:376
static HRESULT WINAPI htmldoc2_get_mimeType(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:563
static HRESULT WINAPI htmldoc2_createElement(IHTMLDocument2 *iface, BSTR eTag, IHTMLElement **newElem)
Definition: httpreq.c:698
static HRESULT WINAPI htmldoc2_get_URL(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:496
static dispevent * impl_from_IDispatch(IDispatch *iface)
Definition: httpreq.c:1223
static HRESULT WINAPI htmldoc2_get_title(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:358
static HRESULT WINAPI htmldoc2_get_Script(IHTMLDocument2 *iface, IDispatch **p)
Definition: httpreq.c:297
static HRESULT WINAPI htmldoc2_put_linkColor(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:448
static ULONG WINAPI htmlecoll_AddRef(IHTMLElementCollection *iface)
Definition: httpreq.c:157
static HRESULT WINAPI dispevent_GetTypeInfo(IDispatch *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: httpreq.c:1269
#define EXPECT_HR(hr, hr_exp)
Definition: httpreq.c:41
#define test_open(a, b, c, d)
Definition: httpreq.c:1430
static ULONG WINAPI sp_Release(IServiceProvider *iface)
Definition: httpreq.c:1109
static HRESULT WINAPI htmldoc2_put_onhelp(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:705
static const char xmltestA[]
Definition: httpreq.c:53
static IServiceProvider testprov
Definition: httpreq.c:1171
static HRESULT WINAPI htmldoc2_put_designMode(IHTMLDocument2 *iface, BSTR v)
Definition: httpreq.c:370
static void test_XMLHTTP(void)
Definition: httpreq.c:1458
static BSTR alloc_str_from_narrow(const char *str)
Definition: httpreq.c:104
static HRESULT WINAPI htmldoc2_get_scripts(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:364
static HRESULT WINAPI htmldoc2_get_expando(IHTMLDocument2 *iface, VARIANT_BOOL *p)
Definition: httpreq.c:533
static HRESULT WINAPI dispevent_Invoke(IDispatch *iface, DISPID member, REFIID riid, LCID lcid, WORD flags, DISPPARAMS *params, VARIANT *result, EXCEPINFO *excepInfo, UINT *argErr)
Definition: httpreq.c:1283
static HRESULT WINAPI htmldoc2_get_onmousemove(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:807
static void _test_open(unsigned line, IXMLHttpRequest *xhr, const char *method, const char *url, HRESULT exhres)
Definition: httpreq.c:1431
static HRESULT WINAPI site_QueryInterface(IUnknown *iface, REFIID riid, void **ppvObject)
Definition: httpreq.c:1173
static HRESULT WINAPI htmldoc2_get_parentWindow(IHTMLDocument2 *iface, IHTMLWindow2 **p)
Definition: httpreq.c:916
static HRESULT WINAPI htmldoc2_put_onerrorupdate(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:941
static HRESULT WINAPI htmldoc2_get_fileCreatedDate(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:575
#define EXPECT_REF(node, ref)
Definition: httpreq.c:44
static const IServiceProviderVtbl testprovVtbl
Definition: httpreq.c:1163
static const IHTMLDocument2Vtbl TestHTMLDocumentVtbl
Definition: httpreq.c:966
static HRESULT WINAPI htmldoc2_get_onerrorupdate(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:947
static HRESULT WINAPI htmldoc2_GetIDsOfNames(IHTMLDocument2 *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: httpreq.c:281
static ULONG WINAPI site_AddRef(IUnknown *iface)
Definition: httpreq.c:1196
static void test_server_xhr(void)
Definition: httpreq.c:1805
static void test_safe_httpreq(void)
Definition: httpreq.c:1849
static void _expect_ref(IUnknown *obj, ULONG ref, int line)
Definition: httpreq.c:45
static HRESULT WINAPI htmldoc2_put_charset(IHTMLDocument2 *iface, BSTR v)
Definition: httpreq.c:539
#define DEFINE_EXPECT(func)
Definition: httpreq.c:61
static HRESULT WINAPI htmlecoll_tags(IHTMLElementCollection *iface, VARIANT tagName, IDispatch **pdisp)
Definition: httpreq.c:226
static HRESULT WINAPI htmlecoll_get_length(IHTMLElementCollection *iface, LONG *v)
Definition: httpreq.c:208
static ULONG WINAPI site_Release(IUnknown *iface)
Definition: httpreq.c:1201
static HRESULT WINAPI htmldoc2_get_defaultCharset(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:557
static HRESULT WINAPI htmldoc2_get_onkeypress(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:771
static HRESULT WINAPI htmlecoll_Invoke(IHTMLElementCollection *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
Definition: httpreq.c:188
static HRESULT WINAPI htmldoc2_put_onmouseover(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:825
static HRESULT WINAPI htmldoc2_get_onmouseover(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:831
static int alloced_bstrs_count
Definition: httpreq.c:113
static ULONG WINAPI htmlecoll_Release(IHTMLElementCollection *iface)
Definition: httpreq.c:162
static HRESULT WINAPI htmldoc2_put_alinkColor(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:412
#define test_server_open(a, b, c, d)
Definition: httpreq.c:1444
static ULONG WINAPI dispevent_AddRef(IDispatch *iface)
Definition: httpreq.c:1245
static HRESULT WINAPI htmldoc2_get_links(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:334
static BSTR a2bstr(const char *str)
Definition: httpreq.c:133
static HRESULT WINAPI dispevent_QueryInterface(IDispatch *iface, REFIID riid, void **ppvObject)
Definition: httpreq.c:1228
static void free_bstrs(void)
Definition: httpreq.c:125
static HRESULT WINAPI htmldoc2_get_protocol(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:599
static IHTMLDocument2 htmldoc2
Definition: httpreq.c:1085
static HRESULT WINAPI htmldoc2_get_onbeforeupdate(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:935
static void test_supporterrorinfo(void)
Definition: httpreq.c:1869
static IServerXMLHTTPRequest * create_server_xhr(void)
Definition: httpreq.c:1353
static HRESULT WINAPI htmldoc2_put_onselectstart(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:897
static HRESULT WINAPI htmldoc2_put_title(IHTMLDocument2 *iface, BSTR v)
Definition: httpreq.c:352
static int strcmp_wa(const WCHAR *strw, const char *stra)
Definition: httpreq.c:97
static HRESULT WINAPI htmldoc2_put_fgColor(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:436
static HRESULT WINAPI htmldoc2_put_bgColor(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:424
static HRESULT WINAPI htmldoc2_get_fgColor(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:442
static void _test_server_open(unsigned line, IServerXMLHTTPRequest *xhr, const char *method, const char *url, HRESULT exhres)
Definition: httpreq.c:1445
static HRESULT WINAPI htmldoc2_write(IHTMLDocument2 *iface, SAFEARRAY *psarray)
Definition: httpreq.c:611
static HRESULT WINAPI htmldoc2_get_images(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:322
static HRESULT WINAPI dispevent_GetTypeInfoCount(IDispatch *iface, UINT *pctinfo)
Definition: httpreq.c:1262
static ULONG WINAPI htmldoc2_AddRef(IHTMLDocument2 *iface)
Definition: httpreq.c:258
static HRESULT WINAPI htmldoc2_get_ondblclick(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:735
static HRESULT WINAPI htmldoc2_get_onselectstart(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:903
static HRESULT WINAPI htmldoc2_get_alinkColor(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:418
static HRESULT WINAPI htmldoc2_get_domain(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:509
static HRESULT WINAPI htmldoc2_queryCommandIndeterm(IHTMLDocument2 *iface, BSTR cmdID, VARIANT_BOOL *pfRet)
Definition: httpreq.c:663
static HRESULT WINAPI htmldoc2_get_forms(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:340
static IDispatch * create_dispevent(void)
Definition: httpreq.c:1332
static HRESULT WINAPI htmldoc2_get_fileSize(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:569
static HRESULT WINAPI htmldoc2_put_onreadystatechange(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:837
static HRESULT WINAPI htmldoc2_put_onkeyup(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:741
#define CHECK_EXPECT2(func)
Definition: httpreq.c:67
static HRESULT WINAPI htmldoc2_QueryInterface(IHTMLDocument2 *iface, REFIID riid, void **ppvObject)
Definition: httpreq.c:251
static HRESULT WINAPI htmldoc2_writeln(IHTMLDocument2 *iface, SAFEARRAY *psarray)
Definition: httpreq.c:617
static HRESULT WINAPI htmlecoll_GetTypeInfo(IHTMLElementCollection *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: httpreq.c:173
static HRESULT WINAPI dispevent_GetIDsOfNames(IDispatch *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: httpreq.c:1276
static HRESULT WINAPI htmldoc2_queryCommandEnabled(IHTMLDocument2 *iface, BSTR cmdID, VARIANT_BOOL *pfRet)
Definition: httpreq.c:649
static HRESULT WINAPI htmldoc2_get_ondragstart(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:891
static ULONG WINAPI dispevent_Release(IDispatch *iface)
Definition: httpreq.c:1251
static HRESULT WINAPI htmldoc2_put_onbeforeupdate(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:929
static HRESULT WINAPI htmldoc2_get_onhelp(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:711
static HRESULT WINAPI htmldoc2_queryCommandText(IHTMLDocument2 *iface, BSTR cmdID, BSTR *pfRet)
Definition: httpreq.c:670
static HRESULT WINAPI htmldoc2_queryCommandState(IHTMLDocument2 *iface, BSTR cmdID, VARIANT_BOOL *pfRet)
Definition: httpreq.c:656
static HRESULT WINAPI htmldoc2_put_domain(IHTMLDocument2 *iface, BSTR v)
Definition: httpreq.c:503
static HRESULT WINAPI htmldoc2_put_onrowenter(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:873
static HRESULT WINAPI htmldoc2_get_all(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:303
static HRESULT WINAPI htmldoc2_put_onmousedown(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:789
static HRESULT WINAPI htmlecoll_toString(IHTMLElementCollection *iface, BSTR *String)
Definition: httpreq.c:196
static HRESULT WINAPI htmldoc2_execCommandShowHelp(IHTMLDocument2 *iface, BSTR cmdID, VARIANT_BOOL *pfRet)
Definition: httpreq.c:691
static HRESULT WINAPI htmldoc2_get_fileModifiedDate(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:581
static HRESULT WINAPI htmldoc2_put_onkeypress(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:765
static HRESULT WINAPI htmldoc2_get_body(IHTMLDocument2 *iface, IHTMLElement **p)
Definition: httpreq.c:310
static HRESULT WINAPI htmldoc2_execCommand(IHTMLDocument2 *iface, BSTR cmdID, VARIANT_BOOL showUI, VARIANT value, VARIANT_BOOL *pfRet)
Definition: httpreq.c:684
static void set_xhr_site(IXMLHttpRequest *xhr)
Definition: httpreq.c:1377
static HRESULT WINAPI htmldoc2_get_styleSheets(IHTMLDocument2 *iface, IHTMLStyleSheetsCollection **p)
Definition: httpreq.c:922
static HRESULT WINAPI htmldoc2_get_embeds(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:400
static HRESULT WINAPI htmldoc2_get_frames(IHTMLDocument2 *iface, IHTMLFramesCollection2 **p)
Definition: httpreq.c:394
#define CHECK_CALLED(func)
Definition: httpreq.c:74
static IHTMLElementCollection htmlecoll
Definition: httpreq.c:248
static HRESULT WINAPI htmldoc2_get_onafterupdate(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:855
static HRESULT WINAPI htmldoc2_get_applets(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:328
static IXMLHttpRequest * create_xhr(void)
Definition: httpreq.c:1342
static HRESULT WINAPI htmldoc2_get_lastModified(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:484
static HRESULT WINAPI htmldoc2_get_vlinkColor(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:466
static HRESULT WINAPI htmldoc2_get_onrowenter(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:879
static HRESULT WINAPI htmldoc2_get_cookie(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:521
static HRESULT WINAPI htmldoc2_put_onkeydown(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:753
static HRESULT WINAPI htmldoc2_Invoke(IHTMLDocument2 *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
Definition: httpreq.c:289
static HRESULT WINAPI htmldoc2_get_bgColor(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:430
static const IHTMLElementCollectionVtbl TestHTMLECollectionVtbl
Definition: httpreq.c:232
static HRESULT WINAPI htmlecoll_QueryInterface(IHTMLElementCollection *iface, REFIID riid, void **ppvObject)
Definition: httpreq.c:150
static HRESULT WINAPI htmldoc2_queryCommandSupported(IHTMLDocument2 *iface, BSTR cmdID, VARIANT_BOOL *pfRet)
Definition: httpreq.c:642
static HRESULT WINAPI htmldoc2_put_cookie(IHTMLDocument2 *iface, BSTR v)
Definition: httpreq.c:515
static HRESULT WINAPI htmldoc2_get_onmousedown(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:795
static HRESULT WINAPI htmlecoll_GetIDsOfNames(IHTMLElementCollection *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: httpreq.c:180
static HRESULT WINAPI htmldoc2_get_anchors(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:346
static HRESULT WINAPI htmldoc2_get_onreadystatechange(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:843
static HRESULT WINAPI htmldoc2_put_onmouseout(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:813
static void set_safety_opt(IUnknown *unk, DWORD mask, DWORD opts)
Definition: httpreq.c:1363
static HRESULT WINAPI htmldoc2_get_security(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:593
static HRESULT WINAPI htmldoc2_queryCommandValue(IHTMLDocument2 *iface, BSTR cmdID, VARIANT *pfRet)
Definition: httpreq.c:677
static HRESULT WINAPI htmldoc2_put_onmousemove(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:801
static HRESULT WINAPI htmldoc2_put_onmouseup(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:777
static HRESULT WINAPI htmldoc2_put_onafterupdate(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:849
static HRESULT WINAPI htmldoc2_get_location(IHTMLDocument2 *iface, IHTMLLocation **p)
Definition: httpreq.c:478
static BOOL g_enablecallchecks
Definition: httpreq.c:59
static HRESULT WINAPI htmldoc2_GetTypeInfo(IHTMLDocument2 *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: httpreq.c:274
static HRESULT WINAPI htmldoc2_put_ondragstart(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:885
static HRESULT WINAPI htmldoc2_get_onkeyup(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:747
static HRESULT WINAPI htmldoc2_get_referrer(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:472
static HRESULT WINAPI htmldoc2_get_onrowexit(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:867
static HRESULT WINAPI htmldoc2_put_URL(IHTMLDocument2 *iface, BSTR v)
Definition: httpreq.c:490
static HRESULT WINAPI htmldoc2_put_ondblclick(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:729
static const CHAR xmltestbodyA[]
Definition: httpreq.c:54
static const IUnknownVtbl testsiteVtbl
Definition: httpreq.c:1206
static ULONG WINAPI htmldoc2_Release(IHTMLDocument2 *iface)
Definition: httpreq.c:263
static HRESULT WINAPI htmldoc2_get_onmouseup(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:783
static HRESULT WINAPI htmldoc2_get_onmouseout(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:819
static HRESULT WINAPI sp_QueryService(IServiceProvider *iface, REFGUID service, REFIID riid, void **obj)
Definition: httpreq.c:1114
static HRESULT WINAPI htmldoc2_clear(IHTMLDocument2 *iface)
Definition: httpreq.c:636
static const IDispatchVtbl dispeventVtbl
Definition: httpreq.c:1321
static HRESULT WINAPI htmldoc2_put_onrowexit(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:861
static HRESULT WINAPI htmldoc2_get_charset(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:545
REFIID riid
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define wine_dbgstr_w
Definition: kernel32.h:34
static PVOID ptr
Definition: dispmode.c:27
const IID IID_IObjectWithSite
static const WCHAR url[]
Definition: encode.c:1432
static const char * strw(LPCWSTR x)
Definition: actctx.c:49
static IHTMLXMLHttpRequest * xhr
#define todo_wine
Definition: custom.c:79
static LPOLESTR
Definition: stg_prop.c:27
static VARIANTARG static DISPID
Definition: ordinal.c:52
interface IHTMLWindow2 IHTMLWindow2
Definition: mshtmhst.idl:64
const struct _GUID CLSID_XMLHTTPRequest
unsigned int UINT
Definition: ndis.h:50
#define LOCALE_SYSTEM_DEFAULT
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:271
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:339
#define V_ERROR(A)
Definition: oleauto.h:241
#define V_BOOL(A)
Definition: oleauto.h:224
#define V_ARRAY(A)
Definition: oleauto.h:222
#define V_UNKNOWN(A)
Definition: oleauto.h:281
#define DISPATCH_METHOD
Definition: oleauto.h:1006
#define V_VT(A)
Definition: oleauto.h:211
#define V_BSTR(A)
Definition: oleauto.h:226
#define V_I2(A)
Definition: oleauto.h:245
const GUID IID_IOleClientSite
const GUID IID_IDispatch
long LONG
Definition: pedump.c:60
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
Definition: guiddef.h:68
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
INT replace(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], DWORD dwFlags, BOOL *doMore)
Definition: replace.c:38
const WCHAR * str
DWORD LCID
Definition: nls.h:13
static __inline const char * wine_dbgstr_guid(const GUID *id)
Definition: debug.h:197
#define win_skip
Definition: test.h:163
static const void * body(MD5_CTX *ctx, const void *data, unsigned long size)
Definition: md5.c:100
HRESULT hr
Definition: shlfolder.c:183
Definition: scsiwmi.h:51
Definition: parser.c:49
Definition: name.c:39
Definition: send.c:48
Definition: ps.c:97
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
Definition: pdh_main.c:94
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:648
void WINAPI VariantInit(VARIANTARG *pVarg)
Definition: variant.c:568
int ret
_Must_inspect_result_ _In_ WDFDEVICE _In_ WDFSTRING String
Definition: wdfdevice.h:2433
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:531
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD _Outptr_opt_ void ** ppvObject
Definition: wincrypt.h:6082
#define WINAPI
Definition: msvc.h:6
#define WININET_E_NAME_NOT_RESOLVED
Definition: winerror.h:3271
#define E_NOINTERFACE
Definition: winerror.h:2364
#define E_ACCESSDENIED
Definition: winerror.h:2849
#define DISP_E_MEMBERNOTFOUND
Definition: winerror.h:2512
#define E_UNEXPECTED
Definition: winerror.h:2456
#define E_POINTER
Definition: winerror.h:2365
__wchar_t WCHAR
Definition: xmlstorage.h:180
char CHAR
Definition: xmlstorage.h:175