ReactOS  0.4.14-dev-323-g6fe6a88
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__)
45 static 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 
53 static const char xmltestA[] = "http://test.winehq.org/tests/xmltest.xml";
54 static const CHAR xmltestbodyA[] = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<a>TEST</a>\n";
55 
56 DEFINE_GUID(SID_SContainerDispatch, 0xb722be00, 0x4e68, 0x101b, 0xa2, 0xbc, 0x00, 0xaa, 0x00, 0x40, 0x47, 0x70);
57 DEFINE_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 */
81 DEFINE_EXPECT(site_qi_IServiceProvider);
82 DEFINE_EXPECT(site_qi_IXMLDOMDocument);
83 DEFINE_EXPECT(site_qi_IOleClientSite);
84 
85 DEFINE_EXPECT(sp_queryservice_SID_SBindHost);
86 DEFINE_EXPECT(sp_queryservice_SID_SContainerDispatch_htmldoc2);
87 DEFINE_EXPECT(sp_queryservice_SID_secmgr_htmldoc2);
88 DEFINE_EXPECT(sp_queryservice_SID_secmgr_xmldomdoc);
89 DEFINE_EXPECT(sp_queryservice_SID_secmgr_secmgr);
90 
92 DEFINE_EXPECT(htmldoc2_get_url);
93 DEFINE_EXPECT(collection_get_length);
94 
96 
97 static int strcmp_wa(const WCHAR *strw, const char *stra)
98 {
99  WCHAR buf[512];
100  MultiByteToWideChar(CP_ACP, 0, stra, -1, buf, ARRAY_SIZE(buf));
101  return lstrcmpW(strw, buf);
102 }
103 
104 static 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 
112 static BSTR alloced_bstrs[256];
114 
115 static BSTR _bstr_(const char *str)
116 {
117  if(!str)
118  return NULL;
119 
123 }
124 
125 static void free_bstrs(void)
126 {
127  int i;
128  for (i = 0; i < alloced_bstrs_count; i++)
131 }
132 
133 static 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);
143  MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len);
144 
145  return ret;
146 }
147 
148 
149 /* test IHTMLElementCollection */
150 static 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 
157 static ULONG WINAPI htmlecoll_AddRef(IHTMLElementCollection *iface)
158 {
159  return 2;
160 }
161 
162 static ULONG WINAPI htmlecoll_Release(IHTMLElementCollection *iface)
163 {
164  return 1;
165 }
166 
167 static HRESULT WINAPI htmlecoll_GetTypeInfoCount(IHTMLElementCollection *iface, UINT *pctinfo)
168 {
169  ok(0, "unexpected call\n");
170  return E_NOTIMPL;
171 }
172 
173 static 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 
180 static 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 
188 static 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 
196 static HRESULT WINAPI htmlecoll_toString(IHTMLElementCollection *iface, BSTR *String)
197 {
198  ok(0, "unexpected call\n");
199  return E_NOTIMPL;
200 }
201 
202 static HRESULT WINAPI htmlecoll_put_length(IHTMLElementCollection *iface, LONG v)
203 {
204  ok(0, "unexpected call\n");
205  return E_NOTIMPL;
206 }
207 
208 static HRESULT WINAPI htmlecoll_get_length(IHTMLElementCollection *iface, LONG *v)
209 {
210  CHECK_EXPECT2(collection_get_length);
211  return E_NOTIMPL;
212 }
213 
214 static HRESULT WINAPI htmlecoll_get__newEnum(IHTMLElementCollection *iface, IUnknown **p)
215 {
216  ok(0, "unexpected call\n");
217  return E_NOTIMPL;
218 }
219 
220 static 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 
226 static HRESULT WINAPI htmlecoll_tags(IHTMLElementCollection *iface, VARIANT tagName, IDispatch **pdisp)
227 {
228  ok(0, "unexpected call\n");
229  return E_NOTIMPL;
230 }
231 
232 static const IHTMLElementCollectionVtbl TestHTMLECollectionVtbl = {
246 };
247 
248 static IHTMLElementCollection htmlecoll = { &TestHTMLECollectionVtbl };
249 
250 /* test IHTMLDocument2 */
251 static HRESULT WINAPI htmldoc2_QueryInterface(IHTMLDocument2 *iface, REFIID riid, void **ppvObject)
252 {
253  trace("\n");
254  *ppvObject = NULL;
255  return E_NOINTERFACE;
256 }
257 
258 static ULONG WINAPI htmldoc2_AddRef(IHTMLDocument2 *iface)
259 {
260  return 2;
261 }
262 
263 static ULONG WINAPI htmldoc2_Release(IHTMLDocument2 *iface)
264 {
265  return 1;
266 }
267 
268 static HRESULT WINAPI htmldoc2_GetTypeInfoCount(IHTMLDocument2 *iface, UINT *pctinfo)
269 {
270  ok(0, "unexpected call\n");
271  return E_NOTIMPL;
272 }
273 
274 static 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 
281 static 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 
289 static 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 
297 static HRESULT WINAPI htmldoc2_get_Script(IHTMLDocument2 *iface, IDispatch **p)
298 {
299  ok(0, "unexpected call\n");
300  return E_NOTIMPL;
301 }
302 
303 static HRESULT WINAPI htmldoc2_get_all(IHTMLDocument2 *iface, IHTMLElementCollection **p)
304 {
306  *p = &htmlecoll;
307  return S_OK;
308 }
309 
310 static HRESULT WINAPI htmldoc2_get_body(IHTMLDocument2 *iface, IHTMLElement **p)
311 {
312  ok(0, "unexpected call\n");
313  return E_NOTIMPL;
314 }
315 
316 static HRESULT WINAPI htmldoc2_get_activeElement(IHTMLDocument2 *iface, IHTMLElement **p)
317 {
318  ok(0, "unexpected call\n");
319  return E_NOTIMPL;
320 }
321 
322 static HRESULT WINAPI htmldoc2_get_images(IHTMLDocument2 *iface, IHTMLElementCollection **p)
323 {
324  ok(0, "unexpected call\n");
325  return E_NOTIMPL;
326 }
327 
328 static HRESULT WINAPI htmldoc2_get_applets(IHTMLDocument2 *iface, IHTMLElementCollection **p)
329 {
330  ok(0, "unexpected call\n");
331  return E_NOTIMPL;
332 }
333 
334 static HRESULT WINAPI htmldoc2_get_links(IHTMLDocument2 *iface, IHTMLElementCollection **p)
335 {
336  ok(0, "unexpected call\n");
337  return E_NOTIMPL;
338 }
339 
340 static HRESULT WINAPI htmldoc2_get_forms(IHTMLDocument2 *iface, IHTMLElementCollection **p)
341 {
342  ok(0, "unexpected call\n");
343  return E_NOTIMPL;
344 }
345 
346 static HRESULT WINAPI htmldoc2_get_anchors(IHTMLDocument2 *iface, IHTMLElementCollection **p)
347 {
348  ok(0, "unexpected call\n");
349  return E_NOTIMPL;
350 }
351 
352 static HRESULT WINAPI htmldoc2_put_title(IHTMLDocument2 *iface, BSTR v)
353 {
354  ok(0, "unexpected call\n");
355  return E_NOTIMPL;
356 }
357 
358 static HRESULT WINAPI htmldoc2_get_title(IHTMLDocument2 *iface, BSTR *p)
359 {
360  ok(0, "unexpected call\n");
361  return E_NOTIMPL;
362 }
363 
364 static HRESULT WINAPI htmldoc2_get_scripts(IHTMLDocument2 *iface, IHTMLElementCollection **p)
365 {
366  ok(0, "unexpected call\n");
367  return E_NOTIMPL;
368 }
369 
370 static HRESULT WINAPI htmldoc2_put_designMode(IHTMLDocument2 *iface, BSTR v)
371 {
372  ok(0, "unexpected call\n");
373  return E_NOTIMPL;
374 }
375 
376 static HRESULT WINAPI htmldoc2_get_designMode(IHTMLDocument2 *iface, BSTR *p)
377 {
378  ok(0, "unexpected call\n");
379  return E_NOTIMPL;
380 }
381 
382 static HRESULT WINAPI htmldoc2_get_selection(IHTMLDocument2 *iface, IHTMLSelectionObject **p)
383 {
384  ok(0, "unexpected call\n");
385  return E_NOTIMPL;
386 }
387 
388 static HRESULT WINAPI htmldoc2_get_readyState(IHTMLDocument2 *iface, BSTR *p)
389 {
390  ok(0, "unexpected call\n");
391  return E_NOTIMPL;
392 }
393 
394 static HRESULT WINAPI htmldoc2_get_frames(IHTMLDocument2 *iface, IHTMLFramesCollection2 **p)
395 {
396  ok(0, "unexpected call\n");
397  return E_NOTIMPL;
398 }
399 
400 static HRESULT WINAPI htmldoc2_get_embeds(IHTMLDocument2 *iface, IHTMLElementCollection **p)
401 {
402  ok(0, "unexpected call\n");
403  return E_NOTIMPL;
404 }
405 
406 static HRESULT WINAPI htmldoc2_get_plugins(IHTMLDocument2 *iface, IHTMLElementCollection **p)
407 {
408  ok(0, "unexpected call\n");
409  return E_NOTIMPL;
410 }
411 
412 static HRESULT WINAPI htmldoc2_put_alinkColor(IHTMLDocument2 *iface, VARIANT v)
413 {
414  ok(0, "unexpected call\n");
415  return E_NOTIMPL;
416 }
417 
418 static HRESULT WINAPI htmldoc2_get_alinkColor(IHTMLDocument2 *iface, VARIANT *p)
419 {
420  ok(0, "unexpected call\n");
421  return E_NOTIMPL;
422 }
423 
424 static HRESULT WINAPI htmldoc2_put_bgColor(IHTMLDocument2 *iface, VARIANT v)
425 {
426  ok(0, "unexpected call\n");
427  return E_NOTIMPL;
428 }
429 
430 static HRESULT WINAPI htmldoc2_get_bgColor(IHTMLDocument2 *iface, VARIANT *p)
431 {
432  ok(0, "unexpected call\n");
433  return E_NOTIMPL;
434 }
435 
436 static HRESULT WINAPI htmldoc2_put_fgColor(IHTMLDocument2 *iface, VARIANT v)
437 {
438  ok(0, "unexpected call\n");
439  return E_NOTIMPL;
440 }
441 
442 static HRESULT WINAPI htmldoc2_get_fgColor(IHTMLDocument2 *iface, VARIANT *p)
443 {
444  ok(0, "unexpected call\n");
445  return E_NOTIMPL;
446 }
447 
448 static HRESULT WINAPI htmldoc2_put_linkColor(IHTMLDocument2 *iface, VARIANT v)
449 {
450  ok(0, "unexpected call\n");
451  return E_NOTIMPL;
452 }
453 
454 static HRESULT WINAPI htmldoc2_get_linkColor(IHTMLDocument2 *iface, VARIANT *p)
455 {
456  ok(0, "unexpected call\n");
457  return E_NOTIMPL;
458 }
459 
460 static HRESULT WINAPI htmldoc2_put_vlinkColor(IHTMLDocument2 *iface, VARIANT v)
461 {
462  ok(0, "unexpected call\n");
463  return E_NOTIMPL;
464 }
465 
466 static HRESULT WINAPI htmldoc2_get_vlinkColor(IHTMLDocument2 *iface, VARIANT *p)
467 {
468  ok(0, "unexpected call\n");
469  return E_NOTIMPL;
470 }
471 
472 static HRESULT WINAPI htmldoc2_get_referrer(IHTMLDocument2 *iface, BSTR *p)
473 {
474  ok(0, "unexpected call\n");
475  return E_NOTIMPL;
476 }
477 
478 static HRESULT WINAPI htmldoc2_get_location(IHTMLDocument2 *iface, IHTMLLocation **p)
479 {
480  ok(0, "unexpected call\n");
481  return E_NOTIMPL;
482 }
483 
484 static HRESULT WINAPI htmldoc2_get_lastModified(IHTMLDocument2 *iface, BSTR *p)
485 {
486  ok(0, "unexpected call\n");
487  return E_NOTIMPL;
488 }
489 
490 static HRESULT WINAPI htmldoc2_put_URL(IHTMLDocument2 *iface, BSTR v)
491 {
492  ok(0, "unexpected call\n");
493  return E_NOTIMPL;
494 }
495 
496 static 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 
503 static HRESULT WINAPI htmldoc2_put_domain(IHTMLDocument2 *iface, BSTR v)
504 {
505  ok(0, "unexpected call\n");
506  return E_NOTIMPL;
507 }
508 
509 static HRESULT WINAPI htmldoc2_get_domain(IHTMLDocument2 *iface, BSTR *p)
510 {
511  ok(0, "unexpected call\n");
512  return E_NOTIMPL;
513 }
514 
515 static HRESULT WINAPI htmldoc2_put_cookie(IHTMLDocument2 *iface, BSTR v)
516 {
517  ok(0, "unexpected call\n");
518  return E_NOTIMPL;
519 }
520 
521 static HRESULT WINAPI htmldoc2_get_cookie(IHTMLDocument2 *iface, BSTR *p)
522 {
523  ok(0, "unexpected call\n");
524  return E_NOTIMPL;
525 }
526 
527 static HRESULT WINAPI htmldoc2_put_expando(IHTMLDocument2 *iface, VARIANT_BOOL v)
528 {
529  ok(0, "unexpected call\n");
530  return E_NOTIMPL;
531 }
532 
533 static HRESULT WINAPI htmldoc2_get_expando(IHTMLDocument2 *iface, VARIANT_BOOL *p)
534 {
535  ok(0, "unexpected call\n");
536  return E_NOTIMPL;
537 }
538 
539 static HRESULT WINAPI htmldoc2_put_charset(IHTMLDocument2 *iface, BSTR v)
540 {
541  ok(0, "unexpected call\n");
542  return E_NOTIMPL;
543 }
544 
545 static HRESULT WINAPI htmldoc2_get_charset(IHTMLDocument2 *iface, BSTR *p)
546 {
547  ok(0, "unexpected call\n");
548  return E_NOTIMPL;
549 }
550 
551 static HRESULT WINAPI htmldoc2_put_defaultCharset(IHTMLDocument2 *iface, BSTR v)
552 {
553  ok(0, "unexpected call\n");
554  return E_NOTIMPL;
555 }
556 
557 static HRESULT WINAPI htmldoc2_get_defaultCharset(IHTMLDocument2 *iface, BSTR *p)
558 {
559  ok(0, "unexpected call\n");
560  return E_NOTIMPL;
561 }
562 
563 static HRESULT WINAPI htmldoc2_get_mimeType(IHTMLDocument2 *iface, BSTR *p)
564 {
565  ok(0, "unexpected call\n");
566  return E_NOTIMPL;
567 }
568 
569 static HRESULT WINAPI htmldoc2_get_fileSize(IHTMLDocument2 *iface, BSTR *p)
570 {
571  ok(0, "unexpected call\n");
572  return E_NOTIMPL;
573 }
574 
575 static HRESULT WINAPI htmldoc2_get_fileCreatedDate(IHTMLDocument2 *iface, BSTR *p)
576 {
577  ok(0, "unexpected call\n");
578  return E_NOTIMPL;
579 }
580 
581 static HRESULT WINAPI htmldoc2_get_fileModifiedDate(IHTMLDocument2 *iface, BSTR *p)
582 {
583  ok(0, "unexpected call\n");
584  return E_NOTIMPL;
585 }
586 
587 static HRESULT WINAPI htmldoc2_get_fileUpdatedDate(IHTMLDocument2 *iface, BSTR *p)
588 {
589  ok(0, "unexpected call\n");
590  return E_NOTIMPL;
591 }
592 
593 static HRESULT WINAPI htmldoc2_get_security(IHTMLDocument2 *iface, BSTR *p)
594 {
595  ok(0, "unexpected call\n");
596  return E_NOTIMPL;
597 }
598 
599 static HRESULT WINAPI htmldoc2_get_protocol(IHTMLDocument2 *iface, BSTR *p)
600 {
601  ok(0, "unexpected call\n");
602  return E_NOTIMPL;
603 }
604 
605 static HRESULT WINAPI htmldoc2_get_nameProp(IHTMLDocument2 *iface, BSTR *p)
606 {
607  ok(0, "unexpected call\n");
608  return E_NOTIMPL;
609 }
610 
611 static HRESULT WINAPI htmldoc2_write(IHTMLDocument2 *iface, SAFEARRAY *psarray)
612 {
613  ok(0, "unexpected call\n");
614  return E_NOTIMPL;
615 }
616 
617 static HRESULT WINAPI htmldoc2_writeln(IHTMLDocument2 *iface, SAFEARRAY *psarray)
618 {
619  ok(0, "unexpected call\n");
620  return E_NOTIMPL;
621 }
622 
623 static 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 
630 static HRESULT WINAPI htmldoc2_close(IHTMLDocument2 *iface)
631 {
632  ok(0, "unexpected call\n");
633  return E_NOTIMPL;
634 }
635 
636 static HRESULT WINAPI htmldoc2_clear(IHTMLDocument2 *iface)
637 {
638  ok(0, "unexpected call\n");
639  return E_NOTIMPL;
640 }
641 
642 static 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 
649 static 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 
656 static 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 
663 static 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 
670 static HRESULT WINAPI htmldoc2_queryCommandText(IHTMLDocument2 *iface, BSTR cmdID,
671  BSTR *pfRet)
672 {
673  ok(0, "unexpected call\n");
674  return E_NOTIMPL;
675 }
676 
677 static HRESULT WINAPI htmldoc2_queryCommandValue(IHTMLDocument2 *iface, BSTR cmdID,
678  VARIANT *pfRet)
679 {
680  ok(0, "unexpected call\n");
681  return E_NOTIMPL;
682 }
683 
684 static 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 
691 static 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 
698 static HRESULT WINAPI htmldoc2_createElement(IHTMLDocument2 *iface, BSTR eTag,
699  IHTMLElement **newElem)
700 {
701  ok(0, "unexpected call\n");
702  return E_NOTIMPL;
703 }
704 
705 static HRESULT WINAPI htmldoc2_put_onhelp(IHTMLDocument2 *iface, VARIANT v)
706 {
707  ok(0, "unexpected call\n");
708  return E_NOTIMPL;
709 }
710 
711 static HRESULT WINAPI htmldoc2_get_onhelp(IHTMLDocument2 *iface, VARIANT *p)
712 {
713  ok(0, "unexpected call\n");
714  return E_NOTIMPL;
715 }
716 
717 static HRESULT WINAPI htmldoc2_put_onclick(IHTMLDocument2 *iface, VARIANT v)
718 {
719  ok(0, "unexpected call\n");
720  return E_NOTIMPL;
721 }
722 
723 static HRESULT WINAPI htmldoc2_get_onclick(IHTMLDocument2 *iface, VARIANT *p)
724 {
725  ok(0, "unexpected call\n");
726  return E_NOTIMPL;
727 }
728 
729 static HRESULT WINAPI htmldoc2_put_ondblclick(IHTMLDocument2 *iface, VARIANT v)
730 {
731  ok(0, "unexpected call\n");
732  return E_NOTIMPL;
733 }
734 
735 static HRESULT WINAPI htmldoc2_get_ondblclick(IHTMLDocument2 *iface, VARIANT *p)
736 {
737  ok(0, "unexpected call\n");
738  return E_NOTIMPL;
739 }
740 
741 static HRESULT WINAPI htmldoc2_put_onkeyup(IHTMLDocument2 *iface, VARIANT v)
742 {
743  ok(0, "unexpected call\n");
744  return E_NOTIMPL;
745 }
746 
747 static HRESULT WINAPI htmldoc2_get_onkeyup(IHTMLDocument2 *iface, VARIANT *p)
748 {
749  ok(0, "unexpected call\n");
750  return E_NOTIMPL;
751 }
752 
753 static HRESULT WINAPI htmldoc2_put_onkeydown(IHTMLDocument2 *iface, VARIANT v)
754 {
755  ok(0, "unexpected call\n");
756  return E_NOTIMPL;
757 }
758 
759 static HRESULT WINAPI htmldoc2_get_onkeydown(IHTMLDocument2 *iface, VARIANT *p)
760 {
761  ok(0, "unexpected call\n");
762  return E_NOTIMPL;
763 }
764 
765 static HRESULT WINAPI htmldoc2_put_onkeypress(IHTMLDocument2 *iface, VARIANT v)
766 {
767  ok(0, "unexpected call\n");
768  return E_NOTIMPL;
769 }
770 
771 static HRESULT WINAPI htmldoc2_get_onkeypress(IHTMLDocument2 *iface, VARIANT *p)
772 {
773  ok(0, "unexpected call\n");
774  return E_NOTIMPL;
775 }
776 
777 static HRESULT WINAPI htmldoc2_put_onmouseup(IHTMLDocument2 *iface, VARIANT v)
778 {
779  ok(0, "unexpected call\n");
780  return E_NOTIMPL;
781 }
782 
783 static HRESULT WINAPI htmldoc2_get_onmouseup(IHTMLDocument2 *iface, VARIANT *p)
784 {
785  ok(0, "unexpected call\n");
786  return E_NOTIMPL;
787 }
788 
789 static HRESULT WINAPI htmldoc2_put_onmousedown(IHTMLDocument2 *iface, VARIANT v)
790 {
791  ok(0, "unexpected call\n");
792  return E_NOTIMPL;
793 }
794 
795 static HRESULT WINAPI htmldoc2_get_onmousedown(IHTMLDocument2 *iface, VARIANT *p)
796 {
797  ok(0, "unexpected call\n");
798  return E_NOTIMPL;
799 }
800 
801 static HRESULT WINAPI htmldoc2_put_onmousemove(IHTMLDocument2 *iface, VARIANT v)
802 {
803  ok(0, "unexpected call\n");
804  return E_NOTIMPL;
805 }
806 
807 static HRESULT WINAPI htmldoc2_get_onmousemove(IHTMLDocument2 *iface, VARIANT *p)
808 {
809  ok(0, "unexpected call\n");
810  return E_NOTIMPL;
811 }
812 
813 static HRESULT WINAPI htmldoc2_put_onmouseout(IHTMLDocument2 *iface, VARIANT v)
814 {
815  ok(0, "unexpected call\n");
816  return E_NOTIMPL;
817 }
818 
819 static HRESULT WINAPI htmldoc2_get_onmouseout(IHTMLDocument2 *iface, VARIANT *p)
820 {
821  ok(0, "unexpected call\n");
822  return E_NOTIMPL;
823 }
824 
825 static HRESULT WINAPI htmldoc2_put_onmouseover(IHTMLDocument2 *iface, VARIANT v)
826 {
827  ok(0, "unexpected call\n");
828  return E_NOTIMPL;
829 }
830 
831 static 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 
843 static HRESULT WINAPI htmldoc2_get_onreadystatechange(IHTMLDocument2 *iface, VARIANT *p)
844 {
845  ok(0, "unexpected call\n");
846  return E_NOTIMPL;
847 }
848 
849 static HRESULT WINAPI htmldoc2_put_onafterupdate(IHTMLDocument2 *iface, VARIANT v)
850 {
851  ok(0, "unexpected call\n");
852  return E_NOTIMPL;
853 }
854 
855 static HRESULT WINAPI htmldoc2_get_onafterupdate(IHTMLDocument2 *iface, VARIANT *p)
856 {
857  ok(0, "unexpected call\n");
858  return E_NOTIMPL;
859 }
860 
861 static HRESULT WINAPI htmldoc2_put_onrowexit(IHTMLDocument2 *iface, VARIANT v)
862 {
863  ok(0, "unexpected call\n");
864  return E_NOTIMPL;
865 }
866 
867 static HRESULT WINAPI htmldoc2_get_onrowexit(IHTMLDocument2 *iface, VARIANT *p)
868 {
869  ok(0, "unexpected call\n");
870  return E_NOTIMPL;
871 }
872 
873 static HRESULT WINAPI htmldoc2_put_onrowenter(IHTMLDocument2 *iface, VARIANT v)
874 {
875  ok(0, "unexpected call\n");
876  return E_NOTIMPL;
877 }
878 
879 static HRESULT WINAPI htmldoc2_get_onrowenter(IHTMLDocument2 *iface, VARIANT *p)
880 {
881  ok(0, "unexpected call\n");
882  return E_NOTIMPL;
883 }
884 
885 static HRESULT WINAPI htmldoc2_put_ondragstart(IHTMLDocument2 *iface, VARIANT v)
886 {
887  ok(0, "unexpected call\n");
888  return E_NOTIMPL;
889 }
890 
891 static HRESULT WINAPI htmldoc2_get_ondragstart(IHTMLDocument2 *iface, VARIANT *p)
892 {
893  ok(0, "unexpected call\n");
894  return E_NOTIMPL;
895 }
896 
897 static HRESULT WINAPI htmldoc2_put_onselectstart(IHTMLDocument2 *iface, VARIANT v)
898 {
899  ok(0, "unexpected call\n");
900  return E_NOTIMPL;
901 }
902 
903 static HRESULT WINAPI htmldoc2_get_onselectstart(IHTMLDocument2 *iface, VARIANT *p)
904 {
905  ok(0, "unexpected call\n");
906  return E_NOTIMPL;
907 }
908 
909 static 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 
916 static HRESULT WINAPI htmldoc2_get_parentWindow(IHTMLDocument2 *iface, IHTMLWindow2 **p)
917 {
918  ok(0, "unexpected call\n");
919  return E_NOTIMPL;
920 }
921 
922 static HRESULT WINAPI htmldoc2_get_styleSheets(IHTMLDocument2 *iface,
923  IHTMLStyleSheetsCollection **p)
924 {
925  ok(0, "unexpected call\n");
926  return E_NOTIMPL;
927 }
928 
929 static HRESULT WINAPI htmldoc2_put_onbeforeupdate(IHTMLDocument2 *iface, VARIANT v)
930 {
931  ok(0, "unexpected call\n");
932  return E_NOTIMPL;
933 }
934 
935 static HRESULT WINAPI htmldoc2_get_onbeforeupdate(IHTMLDocument2 *iface, VARIANT *p)
936 {
937  ok(0, "unexpected call\n");
938  return E_NOTIMPL;
939 }
940 
941 static HRESULT WINAPI htmldoc2_put_onerrorupdate(IHTMLDocument2 *iface, VARIANT v)
942 {
943  ok(0, "unexpected call\n");
944  return E_NOTIMPL;
945 }
946 
947 static HRESULT WINAPI htmldoc2_get_onerrorupdate(IHTMLDocument2 *iface, VARIANT *p)
948 {
949  ok(0, "unexpected call\n");
950  return E_NOTIMPL;
951 }
952 
953 static HRESULT WINAPI htmldoc2_toString(IHTMLDocument2 *iface, BSTR *String)
954 {
955  ok(0, "unexpected call\n");
956  return E_NOTIMPL;
957 }
958 
959 static 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 
966 static const IHTMLDocument2Vtbl TestHTMLDocumentVtbl = {
1028  htmldoc2_open,
1083 };
1084 
1085 static 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 
1163 static 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 
1186  if (IsEqualGUID(riid, &IID_IUnknown))
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 
1206 static const IUnknownVtbl testsiteVtbl =
1207 {
1209  site_AddRef,
1210  site_Release
1211 };
1212 
1214 
1215 typedef struct
1216 {
1217  IDispatch IDispatch_iface;
1218  LONG ref;
1219 } dispevent;
1220 
1222 
1223 static inline dispevent *impl_from_IDispatch( IDispatch *iface )
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 {
1247  dispevent *This = impl_from_IDispatch( iface );
1248  return InterlockedIncrement( &This->ref );
1249 }
1250 
1252 {
1253  dispevent *This = impl_from_IDispatch( iface );
1254  ULONG ref = InterlockedDecrement( &This->ref );
1255 
1256  if (ref == 0)
1257  heap_free(This);
1258 
1259  return ref;
1260 }
1261 
1263 {
1264  g_unexpectedcall++;
1265  *pctinfo = 0;
1266  return S_OK;
1267 }
1268 
1270  LCID lcid, ITypeInfo **ppTInfo)
1271 {
1272  g_unexpectedcall++;
1273  return S_OK;
1274 }
1275 
1277  LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
1278 {
1279  g_unexpectedcall++;
1280  return S_OK;
1281 }
1282 
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 
1303  g_expectedcall++;
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 
1321 static 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 
1353 static 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 
1363 static 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);
1406 todo_wine
1407  CHECK_CALLED(sp_queryservice_SID_SBindHost);
1408  CHECK_CALLED(sp_queryservice_SID_SContainerDispatch_htmldoc2);
1409  CHECK_CALLED(sp_queryservice_SID_secmgr_htmldoc2);
1410 todo_wine
1411  CHECK_CALLED(sp_queryservice_SID_secmgr_xmldomdoc);
1412  /* this one isn't very reliable
1413  CHECK_CALLED(sp_queryservice_SID_secmgr_secmgr); */
1414 todo_wine {
1416  CHECK_CALLED(collection_get_length);
1417 }
1418  CHECK_CALLED(htmldoc2_get_url);
1419 
1420 todo_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)
1431 static 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)
1445 static 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 
1458 static 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;
1472  IDispatch *event;
1473  void *ptr;
1474  HRESULT hr;
1475  HGLOBAL g;
1476 
1477  xhr = create_xhr();
1478 
1479  VariantInit(&dummy);
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);
1612  SysFreeString(str);
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));
1621  SysFreeString(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));
1635  SysFreeString(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));
1733  SysFreeString(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 
1747  set_xhr_site(xhr);
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));
1759  SysFreeString(str);
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));
1782  SysFreeString(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");
1787  SysFreeString(str);
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 
1805 static void test_server_xhr(void)
1806 {
1807  IServerXMLHTTPRequest *xhr;
1808  BSTR response;
1809  VARIANT body;
1810  HRESULT hr;
1811 
1812  /* GET request */
1813  xhr = create_server_xhr();
1814 
1815  test_server_open(xhr, "GET", xmltestA, S_OK);
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 */
1836  xhr = create_server_xhr();
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 
1849 static void test_safe_httpreq(void)
1850 {
1852 
1853  xhr = create_xhr();
1854 
1855  set_safety_opt((IUnknown*)xhr, INTERFACESAFE_FOR_UNTRUSTED_DATA, -1);
1856  set_xhr_site(xhr);
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 
1869 static 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 
1916  CoInitialize(NULL);
1917 
1918  if (!(xhr = create_xhr()))
1919  {
1920  win_skip("IXMLHTTPRequest is not available\n");
1921  CoUninitialize();
1922  return;
1923  }
1924 
1925  IXMLHttpRequest_Release(xhr);
1926 
1927  test_XMLHTTP();
1928  test_server_xhr();
1931 
1932  CoUninitialize();
1933 }
static IHTMLXMLHttpRequest * xhr
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_get_onbeforeupdate(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:935
static HRESULT WINAPI dispevent_GetTypeInfoCount(IDispatch *iface, UINT *pctinfo)
Definition: httpreq.c:1262
UINT WINAPI SafeArrayGetDim(SAFEARRAY *psa)
Definition: safearray.c:1096
static HRESULT WINAPI htmldoc2_put_URL(IHTMLDocument2 *iface, BSTR v)
Definition: httpreq.c:490
static HRESULT WINAPI htmldoc2_get_links(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:334
static HRESULT WINAPI htmldoc2_get_selection(IHTMLDocument2 *iface, IHTMLSelectionObject **p)
Definition: httpreq.c:382
static const IUnknownVtbl testsiteVtbl
Definition: httpreq.c:1206
static HRESULT WINAPI htmldoc2_get_security(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:593
#define E_ACCESSDENIED
Definition: winerror.h:2849
static HRESULT WINAPI htmldoc2_put_charset(IHTMLDocument2 *iface, BSTR v)
Definition: httpreq.c:539
static HRESULT WINAPI htmldoc2_get_onkeydown(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:759
#define REFIID
Definition: guiddef.h:118
#define TRUE
Definition: types.h:120
static HRESULT WINAPI htmlecoll_put_length(IHTMLElementCollection *iface, LONG v)
Definition: httpreq.c:202
HRESULT WINAPI GetHGlobalFromStream(IStream *pstm, HGLOBAL *phglobal)
#define E_NOINTERFACE
Definition: winerror.h:2364
static HRESULT WINAPI htmldoc2_GetTypeInfoCount(IHTMLDocument2 *iface, UINT *pctinfo)
Definition: httpreq.c:268
static HRESULT WINAPI htmldoc2_get_onmouseover(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:831
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112
static ULONG WINAPI site_Release(IUnknown *iface)
Definition: httpreq.c:1201
HRESULT hr
Definition: shlfolder.c:183
static HRESULT WINAPI htmldoc2_get_bgColor(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:430
Definition: scsiwmi.h:51
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:342
static int strcmp_wa(const WCHAR *strw, const char *stra)
Definition: httpreq.c:97
static const IHTMLElementCollectionVtbl TestHTMLECollectionVtbl
Definition: httpreq.c:232
#define SET_EXPECT(func)
Definition: httpreq.c:64
static HRESULT WINAPI htmldoc2_put_onhelp(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:705
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
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_onrowexit(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:867
REFIID riid
Definition: precomp.h:44
char * wine_dbgstr_w(const wchar_t *wstr)
Definition: atltest.h:87
const WCHAR * text
Definition: package.c:1827
#define CP_ACP
Definition: compat.h:99
const GUID IID_IOleClientSite
int WINAPI lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:170
#define CHECK_EXPECT2(func)
Definition: httpreq.c:67
static HRESULT WINAPI htmldoc2_get_onmousedown(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:795
char CHAR
Definition: xmlstorage.h:175
static HRESULT WINAPI htmldoc2_queryCommandIndeterm(IHTMLDocument2 *iface, BSTR cmdID, VARIANT_BOOL *pfRet)
Definition: httpreq.c:663
#define V_ARRAY(A)
Definition: oleauto.h:222
static HRESULT WINAPI htmldoc2_get_all(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:303
static HRESULT WINAPI htmldoc2_get_domain(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:509
static HRESULT WINAPI htmldoc2_put_onmouseover(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:825
#define V_I2(A)
Definition: oleauto.h:245
static HRESULT WINAPI htmldoc2_get_onreadystatechange(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:843
#define DISP_E_MEMBERNOTFOUND
Definition: winerror.h:2512
static HRESULT WINAPI htmlecoll_get__newEnum(IHTMLElementCollection *iface, IUnknown **p)
Definition: httpreq.c:214
static HRESULT WINAPI htmldoc2_put_title(IHTMLDocument2 *iface, BSTR v)
Definition: httpreq.c:352
static HRESULT WINAPI htmldoc2_get_onkeypress(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:771
static void test_safe_httpreq(void)
Definition: httpreq.c:1849
static HRESULT WINAPI htmldoc2_put_linkColor(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:448
static HRESULT WINAPI htmldoc2_get_onmousemove(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:807
const char * wine_dbgstr_guid(const GUID *guid)
#define assert(x)
Definition: debug.h:53
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
static HRESULT WINAPI htmldoc2_get_fileModifiedDate(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:581
static ULONG WINAPI htmldoc2_AddRef(IHTMLDocument2 *iface)
Definition: httpreq.c:258
static WCHAR String[]
Definition: stringtable.c:55
DWORD LCID
Definition: nls.h:13
OLECHAR * BSTR
Definition: compat.h:1934
static void free_bstrs(void)
Definition: httpreq.c:125
__IHTMLWindow2_FWD_DEFINED__ typedef interface IHTMLWindow2 IHTMLWindow2
Definition: mshtmhst.idl:64
void WINAPI VariantInit(VARIANTARG *pVarg)
Definition: variant.c:571
#define CHECK_CALLED(func)
Definition: httpreq.c:74
static HRESULT WINAPI htmldoc2_get_onafterupdate(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:855
static HRESULT WINAPI htmldoc2_get_ondragstart(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:891
static int g_expectedcall
Definition: httpreq.c:95
static LPOLESTR
Definition: stg_prop.c:27
static HRESULT WINAPI htmldoc2_put_domain(IHTMLDocument2 *iface, BSTR v)
Definition: httpreq.c:503
static HRESULT WINAPI htmldoc2_GetTypeInfo(IHTMLDocument2 *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: httpreq.c:274
static HRESULT WINAPI dispevent_GetTypeInfo(IDispatch *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: httpreq.c:1269
#define E_FAIL
Definition: ddrawi.h:102
static HRESULT WINAPI htmldoc2_elementFromPoint(IHTMLDocument2 *iface, LONG x, LONG y, IHTMLElement **elementHit)
Definition: httpreq.c:909
#define DEFINE_EXPECT(func)
Definition: httpreq.c:61
static const char xmltestA[]
Definition: httpreq.c:53
short VARIANT_BOOL
Definition: compat.h:1931
Definition: send.c:47
static HRESULT WINAPI htmldoc2_put_onmousedown(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:789
static HRESULT WINAPI htmldoc2_get_onclick(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:723
static HRESULT WINAPI htmldoc2_get_readyState(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:388
static HRESULT WINAPI htmldoc2_get_scripts(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:364
static void * heap_alloc(size_t len)
Definition: appwiz.h:65
START_TEST(httpreq)
Definition: httpreq.c:1912
static HRESULT WINAPI htmldoc2_put_onmouseup(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:777
#define DISPATCH_METHOD
Definition: oleauto.h:1006
static void test_server_xhr(void)
Definition: httpreq.c:1805
static ULONG WINAPI dispevent_Release(IDispatch *iface)
Definition: httpreq.c:1251
static HRESULT WINAPI htmldoc2_writeln(IHTMLDocument2 *iface, SAFEARRAY *psarray)
Definition: httpreq.c:617
static HRESULT WINAPI htmldoc2_get_activeElement(IHTMLDocument2 *iface, IHTMLElement **p)
Definition: httpreq.c:316
static BSTR _bstr_(const char *str)
Definition: httpreq.c:115
static HRESULT WINAPI dispevent_GetIDsOfNames(IDispatch *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: httpreq.c:1276
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_onhelp(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:711
GLenum GLint GLuint mask
Definition: glext.h:6028
static HRESULT WINAPI htmldoc2_get_charset(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:545
static HRESULT WINAPI htmldoc2_get_vlinkColor(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:466
static HRESULT WINAPI htmldoc2_get_images(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:322
static HRESULT WINAPI htmldoc2_toString(IHTMLDocument2 *iface, BSTR *String)
Definition: httpreq.c:953
GLenum const GLfloat * params
Definition: glext.h:5645
static HRESULT WINAPI htmldoc2_open(IHTMLDocument2 *iface, BSTR url, VARIANT name, VARIANT features, VARIANT replace, IDispatch **pomWindowResult)
Definition: httpreq.c:623
static HRESULT WINAPI htmldoc2_put_onclick(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:717
HRESULT WINAPI SafeArrayAccessData(SAFEARRAY *psa, void **ppvData)
Definition: safearray.c:1139
unsigned int BOOL
Definition: ntddk_ex.h:94
static HRESULT WINAPI htmldoc2_get_designMode(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:376
long LONG
Definition: pedump.c:60
static BSTR alloced_bstrs[256]
Definition: httpreq.c:112
static ULONG WINAPI sp_Release(IServiceProvider *iface)
Definition: httpreq.c:1109
GLenum GLint ref
Definition: glext.h:6028
static HRESULT WINAPI htmldoc2_put_alinkColor(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:412
static HRESULT WINAPI htmldoc2_put_fgColor(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:436
static PVOID ptr
Definition: dispmode.c:27
#define test_server_open(a, b, c, d)
Definition: httpreq.c:1444
#define E_INVALIDARG
Definition: ddrawi.h:101
const WCHAR * str
static HRESULT WINAPI htmldoc2_get_forms(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:340
static IUnknown testsite
Definition: httpreq.c:1213
static int g_unexpectedcall
Definition: httpreq.c:95
smooth NULL
Definition: ftsmooth.c:416
static HRESULT WINAPI htmldoc2_get_styleSheets(IHTMLDocument2 *iface, IHTMLStyleSheetsCollection **p)
Definition: httpreq.c:922
static HRESULT WINAPI htmlecoll_get_length(IHTMLElementCollection *iface, LONG *v)
Definition: httpreq.c:208
static HRESULT WINAPI htmldoc2_put_onkeyup(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:741
Definition: parser.c:48
static HRESULT WINAPI htmldoc2_put_onmousemove(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:801
static HRESULT WINAPI htmldoc2_get_applets(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:328
static HRESULT WINAPI htmldoc2_get_fgColor(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:442
static HRESULT WINAPI site_QueryInterface(IUnknown *iface, REFIID riid, void **ppvObject)
Definition: httpreq.c:1173
GLuint index
Definition: glext.h:6031
static HRESULT WINAPI htmldoc2_put_onbeforeupdate(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:929
static ULONG WINAPI site_AddRef(IUnknown *iface)
Definition: httpreq.c:1196
static HRESULT WINAPI htmldoc2_get_lastModified(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:484
static HRESULT WINAPI htmldoc2_get_frames(IHTMLDocument2 *iface, IHTMLFramesCollection2 **p)
Definition: httpreq.c:394
static HRESULT WINAPI htmldoc2_put_onrowexit(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:861
static const IDispatchVtbl dispeventVtbl
Definition: httpreq.c:1321
static HRESULT WINAPI htmldoc2_clear(IHTMLDocument2 *iface)
Definition: httpreq.c:636
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
static ULONG WINAPI dispevent_AddRef(IDispatch *iface)
Definition: httpreq.c:1245
static HRESULT WINAPI htmldoc2_get_title(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:358
static HRESULT WINAPI htmldoc2_get_anchors(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:346
INT replace(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], DWORD dwFlags, BOOL *doMore)
Definition: replace.c:47
static int alloced_bstrs_count
Definition: httpreq.c:113
static HRESULT WINAPI htmldoc2_execCommand(IHTMLDocument2 *iface, BSTR cmdID, VARIANT_BOOL showUI, VARIANT value, VARIANT_BOOL *pfRet)
Definition: httpreq.c:684
static void _test_server_open(unsigned line, IServerXMLHTTPRequest *xhr, const char *method, const char *url, HRESULT exhres)
Definition: httpreq.c:1445
GLboolean GLboolean g
Definition: glext.h:6204
static HRESULT WINAPI htmldoc2_get_cookie(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:521
#define trace
Definition: atltest.h:70
static HRESULT WINAPI htmlecoll_QueryInterface(IHTMLElementCollection *iface, REFIID riid, void **ppvObject)
Definition: httpreq.c:150
static HRESULT WINAPI htmldoc2_get_onrowenter(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:879
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
static void _test_open(unsigned line, IXMLHttpRequest *xhr, const char *method, const char *url, HRESULT exhres)
Definition: httpreq.c:1431
static const WCHAR url[]
Definition: encode.c:1432
static HRESULT WINAPI htmldoc2_QueryInterface(IHTMLDocument2 *iface, REFIID riid, void **ppvObject)
Definition: httpreq.c:251
const GUID IID_IUnknown
static HRESULT WINAPI htmldoc2_createElement(IHTMLDocument2 *iface, BSTR eTag, IHTMLElement **newElem)
Definition: httpreq.c:698
static HRESULT WINAPI htmldoc2_put_onkeydown(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:753
static HRESULT WINAPI htmldoc2_get_protocol(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:599
static ULONG WINAPI sp_AddRef(IServiceProvider *iface)
Definition: httpreq.c:1104
#define WINAPI
Definition: msvc.h:8
#define LOCALE_SYSTEM_DEFAULT
const IID IID_IObjectWithSite
#define V_BOOL(A)
Definition: oleauto.h:224
unsigned short WORD
Definition: ntddk_ex.h:93
HRESULT WINAPI SafeArrayGetLBound(SAFEARRAY *psa, UINT nDim, LONG *plLbound)
Definition: safearray.c:1068
static HRESULT WINAPI htmldoc2_close(IHTMLDocument2 *iface)
Definition: httpreq.c:630
static HRESULT WINAPI htmldoc2_execCommandShowHelp(IHTMLDocument2 *iface, BSTR cmdID, VARIANT_BOOL *pfRet)
Definition: httpreq.c:691
unsigned long DWORD
Definition: ntddk_ex.h:95
static HRESULT WINAPI htmldoc2_put_onafterupdate(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:849
static IServerXMLHTTPRequest * create_server_xhr(void)
Definition: httpreq.c:1353
static dispevent * impl_from_IDispatch(IDispatch *iface)
Definition: httpreq.c:1223
static void set_safety_opt(IUnknown *unk, DWORD mask, DWORD opts)
Definition: httpreq.c:1363
GLbitfield flags
Definition: glext.h:7161
method
Definition: dragdrop.c:53
static BSTR a2bstr(const char *str)
Definition: httpreq.c:133
static HRESULT WINAPI htmldoc2_queryCommandSupported(IHTMLDocument2 *iface, BSTR cmdID, VARIANT_BOOL *pfRet)
Definition: httpreq.c:642
static HRESULT WINAPI htmldoc2_put_onerrorupdate(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:941
static HRESULT WINAPI htmldoc2_put_bgColor(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:424
static HRESULT WINAPI htmldoc2_GetIDsOfNames(IHTMLDocument2 *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: httpreq.c:281
static HRESULT WINAPI htmldoc2_put_onreadystatechange(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:837
const GUID IID_IDispatch
static HRESULT WINAPI htmldoc2_put_onkeypress(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:765
int ret
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:651
static HRESULT WINAPI htmlecoll_GetTypeInfo(IHTMLElementCollection *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: httpreq.c:173
#define todo_wine
Definition: test.h:154
#define InterlockedDecrement
Definition: armddk.h:52
static HRESULT WINAPI htmldoc2_get_ondblclick(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:735
#define V_VT(A)
Definition: oleauto.h:211
static int state
Definition: maze.c:121
static HRESULT WINAPI htmldoc2_get_mimeType(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:563
static IXMLHttpRequest * create_xhr(void)
Definition: httpreq.c:1342
static IServiceProvider testprov
Definition: httpreq.c:1171
static BSTR alloc_str_from_narrow(const char *str)
Definition: httpreq.c:104
GLenum GLsizei len
Definition: glext.h:6722
#define test_open(a, b, c, d)
Definition: httpreq.c:1430
REFIID LPVOID * ppvObject
Definition: precomp.h:44
static HRESULT WINAPI htmldoc2_get_location(IHTMLDocument2 *iface, IHTMLLocation **p)
Definition: httpreq.c:478
static HRESULT WINAPI htmldoc2_put_onselectstart(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:897
struct _cl_event * event
Definition: glext.h:7739
#define V_UNKNOWN(A)
Definition: oleauto.h:281
static HRESULT WINAPI htmldoc2_queryCommandValue(IHTMLDocument2 *iface, BSTR cmdID, VARIANT *pfRet)
Definition: httpreq.c:677
static BOOL g_enablecallchecks
Definition: httpreq.c:59
static HRESULT WINAPI htmlecoll_tags(IHTMLElementCollection *iface, VARIANT tagName, IDispatch **pdisp)
Definition: httpreq.c:226
#define V_BSTR(A)
Definition: oleauto.h:226
static HRESULT WINAPI htmldoc2_put_cookie(IHTMLDocument2 *iface, BSTR v)
Definition: httpreq.c:515
#define broken(x)
Definition: _sntprintf.h:21
static HRESULT WINAPI htmldoc2_get_onkeyup(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:747
static ULONG WINAPI htmldoc2_Release(IHTMLDocument2 *iface)
Definition: httpreq.c:263
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3325
static void _expect_ref(IUnknown *obj, ULONG ref, int line)
Definition: httpreq.c:45
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:519
static void set_xhr_site(IXMLHttpRequest *xhr)
Definition: httpreq.c:1377
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_put_designMode(IHTMLDocument2 *iface, BSTR v)
Definition: httpreq.c:370
static HRESULT WINAPI htmldoc2_put_onmouseout(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:813
struct stdole::EXCEPINFO EXCEPINFO
#define S_OK
Definition: intsafe.h:59
static VARIANTARG static DISPID
Definition: ordinal.c:49
static IHTMLElementCollection htmlecoll
Definition: httpreq.c:248
static HRESULT WINAPI htmldoc2_put_defaultCharset(IHTMLDocument2 *iface, BSTR v)
Definition: httpreq.c:551
static HRESULT WINAPI htmldoc2_put_ondblclick(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:729
static void test_supporterrorinfo(void)
Definition: httpreq.c:1869
#define InterlockedIncrement
Definition: armddk.h:53
const GLdouble * v
Definition: gl.h:2040
static HRESULT WINAPI htmldoc2_get_onmouseout(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:819
static HRESULT WINAPI htmldoc2_get_embeds(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:400
static HRESULT WINAPI htmldoc2_get_parentWindow(IHTMLDocument2 *iface, IHTMLWindow2 **p)
Definition: httpreq.c:916
#define EXPECT_HR(hr, hr_exp)
Definition: httpreq.c:41
static HRESULT WINAPI htmldoc2_createStyleSheet(IHTMLDocument2 *iface, BSTR bstrHref, LONG lIndex, IHTMLStyleSheet **ppnewStyleSheet)
Definition: httpreq.c:959
static IXMLHttpRequest * httpreq
Definition: httpreq.c:1221
static HRESULT WINAPI htmlecoll_toString(IHTMLElementCollection *iface, BSTR *String)
Definition: httpreq.c:196
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:2067
#define ARRAY_SIZE(a)
Definition: main.h:24
unsigned char dummy
Definition: maze.c:118
DEFINE_GUID(SID_SContainerDispatch, 0xb722be00, 0x4e68, 0x101b, 0xa2, 0xbc, 0x00, 0xaa, 0x00, 0x40, 0x47, 0x70)
static HRESULT WINAPI htmldoc2_write(IHTMLDocument2 *iface, SAFEARRAY *psarray)
Definition: httpreq.c:611
#define WININET_E_NAME_NOT_RESOLVED
Definition: winerror.h:3271
#define ok(value,...)
Definition: atltest.h:57
#define E_NOTIMPL
Definition: ddrawi.h:99
static HRESULT WINAPI htmldoc2_get_onselectstart(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:903
static HRESULT WINAPI htmldoc2_put_vlinkColor(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:460
static const void * body(MD5_CTX *ctx, const void *data, unsigned long size)
Definition: md5.c:100
static HRESULT WINAPI htmldoc2_get_alinkColor(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:418
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:274
#define V_ERROR(A)
Definition: oleauto.h:241
unsigned int UINT
Definition: ndis.h:50
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4112
BOOL empty
Definition: button.c:170
static HRESULT WINAPI htmlecoll_item(IHTMLElementCollection *iface, VARIANT name, VARIANT index, IDispatch **pdisp)
Definition: httpreq.c:220
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
static void test_XMLHTTP(void)
Definition: httpreq.c:1458
#define MultiByteToWideChar
Definition: compat.h:100
#define E_UNEXPECTED
Definition: winerror.h:2456
static ULONG WINAPI htmlecoll_AddRef(IHTMLElementCollection *iface)
Definition: httpreq.c:157
static HRESULT WINAPI htmldoc2_get_fileUpdatedDate(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:587
#define skip(...)
Definition: atltest.h:64
static HRESULT WINAPI htmldoc2_queryCommandState(IHTMLDocument2 *iface, BSTR cmdID, VARIANT_BOOL *pfRet)
Definition: httpreq.c:656
static HRESULT WINAPI htmldoc2_get_body(IHTMLDocument2 *iface, IHTMLElement **p)
Definition: httpreq.c:310
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:1964
static HRESULT WINAPI htmldoc2_get_referrer(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:472
static HRESULT WINAPI sp_QueryInterface(IServiceProvider *iface, REFIID riid, void **ppvObject)
Definition: httpreq.c:1087
Definition: name.c:36
struct stdole::DISPPARAMS DISPPARAMS
static HRESULT WINAPI htmldoc2_get_linkColor(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:454
unsigned int ULONG
Definition: retypes.h:1
static IDispatch * create_dispevent(void)
Definition: httpreq.c:1332
static HRESULT WINAPI htmldoc2_get_expando(IHTMLDocument2 *iface, VARIANT_BOOL *p)
Definition: httpreq.c:533
static const IServiceProviderVtbl testprovVtbl
Definition: httpreq.c:1163
const struct _GUID CLSID_XMLHTTPRequest
static HRESULT WINAPI htmldoc2_get_fileSize(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:569
static HRESULT WINAPI htmldoc2_get_nameProp(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:605
static HRESULT WINAPI htmldoc2_queryCommandText(IHTMLDocument2 *iface, BSTR cmdID, BSTR *pfRet)
Definition: httpreq.c:670
static HRESULT WINAPI htmldoc2_get_Script(IHTMLDocument2 *iface, IDispatch **p)
Definition: httpreq.c:297
GLfloat GLfloat p
Definition: glext.h:8902
static const CHAR xmltestbodyA[]
Definition: httpreq.c:54
#define EXPECT_REF(node, ref)
Definition: httpreq.c:44
static HRESULT WINAPI htmldoc2_queryCommandEnabled(IHTMLDocument2 *iface, BSTR cmdID, VARIANT_BOOL *pfRet)
Definition: httpreq.c:649
static HRESULT WINAPI htmldoc2_get_onmouseup(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:783
static ULONG WINAPI htmlecoll_Release(IHTMLElementCollection *iface)
Definition: httpreq.c:162
static HRESULT WINAPI htmlecoll_GetTypeInfoCount(IHTMLElementCollection *iface, UINT *pctinfo)
Definition: httpreq.c:167
#define E_POINTER
Definition: winerror.h:2365
#define E_PENDING
Definition: dinput.h:172
static HRESULT WINAPI htmldoc2_put_ondragstart(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:885
GLuint64EXT * result
Definition: glext.h:11304
static SERVICE_STATUS status
Definition: service.c:31
static const char * strw(LPCWSTR x)
Definition: actctx.c:49
static HRESULT WINAPI htmldoc2_get_defaultCharset(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:557
#define win_skip
Definition: test.h:141
static HRESULT WINAPI htmldoc2_get_fileCreatedDate(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:575
static HRESULT WINAPI dispevent_QueryInterface(IDispatch *iface, REFIID riid, void **ppvObject)
Definition: httpreq.c:1228
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_onerrorupdate(IHTMLDocument2 *iface, VARIANT *p)
Definition: httpreq.c:947
static const IHTMLDocument2Vtbl TestHTMLDocumentVtbl
Definition: httpreq.c:966
HRESULT WINAPI SafeArrayUnaccessData(SAFEARRAY *psa)
Definition: safearray.c:1170
Definition: compat.h:1938
static HRESULT WINAPI sp_QueryService(IServiceProvider *iface, REFGUID service, REFIID riid, void **obj)
Definition: httpreq.c:1114
#define SUCCEEDED(hr)
Definition: intsafe.h:57
static HRESULT WINAPI htmldoc2_put_expando(IHTMLDocument2 *iface, VARIANT_BOOL v)
Definition: httpreq.c:527
#define ok_(x1, x2)
Definition: atltest.h:61
static BOOL heap_free(void *mem)
Definition: appwiz.h:75
static HRESULT WINAPI htmldoc2_get_URL(IHTMLDocument2 *iface, BSTR *p)
Definition: httpreq.c:496
static IHTMLDocument2 htmldoc2
Definition: httpreq.c:1085
static HRESULT WINAPI htmldoc2_put_onrowenter(IHTMLDocument2 *iface, VARIANT v)
Definition: httpreq.c:873
Definition: ps.c:97
static HRESULT WINAPI htmldoc2_get_plugins(IHTMLDocument2 *iface, IHTMLElementCollection **p)
Definition: httpreq.c:406