ReactOS  0.4.14-dev-49-gfb4591c
htmllocation.c
Go to the documentation of this file.
1 /*
2  * Copyright 2008 Jacek Caban for CodeWeavers
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18 
19 #include "mshtml_private.h"
20 
22 {
23  if(!This->window || !This->window->base.outer_window || !This->window->base.outer_window->url) {
24  FIXME("No current URL\n");
25  return E_NOTIMPL;
26  }
27 
28  *ret = This->window->base.outer_window->url;
29  return S_OK;
30 }
31 
33 {
34  if(!This->window || !This->window->base.outer_window)
35  return NULL;
36  return This->window->base.outer_window->uri;
37 }
38 
40 {
41  const WCHAR *doc_url;
42  HRESULT hres;
43 
44  hres = get_url(This, &doc_url);
45  if(FAILED(hres))
46  return hres;
47 
48  if(!InternetCrackUrlW(doc_url, 0, 0, url)) {
49  FIXME("InternetCrackUrlW failed: 0x%08x\n", GetLastError());
50  SetLastError(0);
51  return E_FAIL;
52  }
53 
54  return S_OK;
55 }
56 
57 static inline HTMLLocation *impl_from_IHTMLLocation(IHTMLLocation *iface)
58 {
59  return CONTAINING_RECORD(iface, HTMLLocation, IHTMLLocation_iface);
60 }
61 
62 static HRESULT WINAPI HTMLLocation_QueryInterface(IHTMLLocation *iface, REFIID riid, void **ppv)
63 {
65 
66  TRACE("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
67 
69  *ppv = &This->IHTMLLocation_iface;
70  }else if(IsEqualGUID(&IID_IHTMLLocation, riid)) {
71  *ppv = &This->IHTMLLocation_iface;
72  }else if(dispex_query_interface(&This->dispex, riid, ppv)) {
73  return *ppv ? S_OK : E_NOINTERFACE;
74  }else {
75  *ppv = NULL;
76  WARN("(%p)->(%s %p)\n", This, debugstr_mshtml_guid(riid), ppv);
77  return E_NOINTERFACE;
78  }
79 
80  IUnknown_AddRef((IUnknown*)*ppv);
81  return S_OK;
82 }
83 
84 static ULONG WINAPI HTMLLocation_AddRef(IHTMLLocation *iface)
85 {
88 
89  TRACE("(%p) ref=%d\n", This, ref);
90 
91  return ref;
92 }
93 
94 static ULONG WINAPI HTMLLocation_Release(IHTMLLocation *iface)
95 {
98 
99  TRACE("(%p) ref=%d\n", This, ref);
100 
101  if(!ref) {
102  if(This->window)
103  This->window->location = NULL;
104  release_dispex(&This->dispex);
105  heap_free(This);
106  }
107 
108  return ref;
109 }
110 
111 static HRESULT WINAPI HTMLLocation_GetTypeInfoCount(IHTMLLocation *iface, UINT *pctinfo)
112 {
114  return IDispatchEx_GetTypeInfoCount(&This->dispex.IDispatchEx_iface, pctinfo);
115 }
116 
117 static HRESULT WINAPI HTMLLocation_GetTypeInfo(IHTMLLocation *iface, UINT iTInfo,
118  LCID lcid, ITypeInfo **ppTInfo)
119 {
121  return IDispatchEx_GetTypeInfo(&This->dispex.IDispatchEx_iface, iTInfo, lcid, ppTInfo);
122 }
123 
124 static HRESULT WINAPI HTMLLocation_GetIDsOfNames(IHTMLLocation *iface, REFIID riid,
125  LPOLESTR *rgszNames, UINT cNames,
126  LCID lcid, DISPID *rgDispId)
127 {
129  return IDispatchEx_GetIDsOfNames(&This->dispex.IDispatchEx_iface, riid, rgszNames, cNames,
130  lcid, rgDispId);
131 }
132 
133 static HRESULT WINAPI HTMLLocation_Invoke(IHTMLLocation *iface, DISPID dispIdMember,
134  REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams,
135  VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
136 {
138  return IDispatchEx_Invoke(&This->dispex.IDispatchEx_iface, dispIdMember, riid, lcid,
139  wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
140 }
141 
142 static HRESULT WINAPI HTMLLocation_put_href(IHTMLLocation *iface, BSTR v)
143 {
145 
146  TRACE("(%p)->(%s)\n", This, debugstr_w(v));
147 
148  if(!This->window || !This->window->base.outer_window) {
149  FIXME("No window available\n");
150  return E_FAIL;
151  }
152 
153  return navigate_url(This->window->base.outer_window, v, This->window->base.outer_window->uri, BINDING_NAVIGATED);
154 }
155 
156 static HRESULT WINAPI HTMLLocation_get_href(IHTMLLocation *iface, BSTR *p)
157 {
159  URL_COMPONENTSW url = {sizeof(URL_COMPONENTSW)};
160  WCHAR *buf = NULL, *url_path = NULL;
161  HRESULT hres, ret;
162  DWORD len = 0;
163  int i;
164 
165  TRACE("(%p)->(%p)\n", This, p);
166 
167  if(!p)
168  return E_POINTER;
169 
170  url.dwSchemeLength = 1;
171  url.dwHostNameLength = 1;
172  url.dwUrlPathLength = 1;
173  url.dwExtraInfoLength = 1;
175  if(FAILED(hres))
176  return hres;
177 
178  switch(url.nScheme) {
180  {
181  /* prepend a slash */
182  url_path = HeapAlloc(GetProcessHeap(), 0, (url.dwUrlPathLength + 1) * sizeof(WCHAR));
183  if(!url_path)
184  return E_OUTOFMEMORY;
185  url_path[0] = '/';
186  memcpy(url_path + 1, url.lpszUrlPath, url.dwUrlPathLength * sizeof(WCHAR));
187  url.lpszUrlPath = url_path;
188  url.dwUrlPathLength = url.dwUrlPathLength + 1;
189  }
190  break;
191 
194  case INTERNET_SCHEME_FTP:
195  if(!url.dwUrlPathLength) {
196  /* add a slash if it's blank */
197  url_path = url.lpszUrlPath = HeapAlloc(GetProcessHeap(), 0, 1 * sizeof(WCHAR));
198  if(!url.lpszUrlPath)
199  return E_OUTOFMEMORY;
200  url.lpszUrlPath[0] = '/';
201  url.dwUrlPathLength = 1;
202  }
203  break;
204 
205  default:
206  break;
207  }
208 
209  /* replace \ with / */
210  for(i = 0; i < url.dwUrlPathLength; ++i)
211  if(url.lpszUrlPath[i] == '\\')
212  url.lpszUrlPath[i] = '/';
213 
215  FIXME("InternetCreateUrl succeeded with NULL buffer?\n");
216  ret = E_FAIL;
217  goto cleanup;
218  }
219 
221  FIXME("InternetCreateUrl failed with error: %08x\n", GetLastError());
222  SetLastError(0);
223  ret = E_FAIL;
224  goto cleanup;
225  }
226  SetLastError(0);
227 
228  buf = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
229  if(!buf) {
230  ret = E_OUTOFMEMORY;
231  goto cleanup;
232  }
233 
235  FIXME("InternetCreateUrl failed with error: %08x\n", GetLastError());
236  SetLastError(0);
237  ret = E_FAIL;
238  goto cleanup;
239  }
240 
241  *p = SysAllocStringLen(buf, len);
242  if(!*p) {
243  ret = E_OUTOFMEMORY;
244  goto cleanup;
245  }
246 
247  ret = S_OK;
248 
249 cleanup:
250  HeapFree(GetProcessHeap(), 0, buf);
251  HeapFree(GetProcessHeap(), 0, url_path);
252 
253  return ret;
254 }
255 
256 static HRESULT WINAPI HTMLLocation_put_protocol(IHTMLLocation *iface, BSTR v)
257 {
259  FIXME("(%p)->(%s)\n", This, debugstr_w(v));
260  return E_NOTIMPL;
261 }
262 
263 static HRESULT WINAPI HTMLLocation_get_protocol(IHTMLLocation *iface, BSTR *p)
264 {
266  BSTR protocol, ret;
267  unsigned len;
268  IUri *uri;
269  HRESULT hres;
270 
271  TRACE("(%p)->(%p)\n", This, p);
272 
273  if(!p)
274  return E_POINTER;
275 
276  if(!(uri = get_uri(This))) {
277  FIXME("No current URI\n");
278  return E_NOTIMPL;
279  }
280 
281  hres = IUri_GetSchemeName(uri, &protocol);
282  if(FAILED(hres))
283  return hres;
284  if(hres == S_FALSE) {
286  *p = NULL;
287  return S_OK;
288  }
289 
293  if(!ret)
294  return E_OUTOFMEMORY;
295 
296  ret[len] = ':';
297  *p = ret;
298  return S_OK;
299 }
300 
301 static HRESULT WINAPI HTMLLocation_put_host(IHTMLLocation *iface, BSTR v)
302 {
304  FIXME("(%p)->(%s)\n", This, debugstr_w(v));
305  return E_NOTIMPL;
306 }
307 
308 static HRESULT WINAPI HTMLLocation_get_host(IHTMLLocation *iface, BSTR *p)
309 {
311  URL_COMPONENTSW url = {sizeof(URL_COMPONENTSW)};
312  HRESULT hres;
313 
314  TRACE("(%p)->(%p)\n", This, p);
315 
316  if(!p)
317  return E_POINTER;
318 
319  url.dwHostNameLength = 1;
321  if(FAILED(hres))
322  return hres;
323 
324  if(!url.dwHostNameLength){
325  *p = NULL;
326  return S_OK;
327  }
328 
329  if(url.nPort) {
330  /* <hostname>:<port> */
331  const WCHAR format[] = {'%','u',0};
332  DWORD len = url.dwHostNameLength + 1 + 5;
333  WCHAR *buf;
334 
335  buf = *p = SysAllocStringLen(NULL, len);
336  memcpy(buf, url.lpszHostName, url.dwHostNameLength * sizeof(WCHAR));
337  buf[url.dwHostNameLength] = ':';
338  snprintfW(buf + url.dwHostNameLength + 1, 6, format, url.nPort);
339  }else
340  *p = SysAllocStringLen(url.lpszHostName, url.dwHostNameLength);
341 
342  if(!*p)
343  return E_OUTOFMEMORY;
344  return S_OK;
345 }
346 
347 static HRESULT WINAPI HTMLLocation_put_hostname(IHTMLLocation *iface, BSTR v)
348 {
350  FIXME("(%p)->(%s)\n", This, debugstr_w(v));
351  return E_NOTIMPL;
352 }
353 
354 static HRESULT WINAPI HTMLLocation_get_hostname(IHTMLLocation *iface, BSTR *p)
355 {
357  BSTR hostname;
358  IUri *uri;
359  HRESULT hres;
360 
361  TRACE("(%p)->(%p)\n", This, p);
362 
363  if(!p)
364  return E_POINTER;
365 
366  if(!(uri = get_uri(This))) {
367  FIXME("No current URI\n");
368  return E_NOTIMPL;
369  }
370 
371  hres = IUri_GetHost(uri, &hostname);
372  if(hres == S_OK) {
373  *p = hostname;
374  }else if(hres == S_FALSE) {
376  *p = NULL;
377  }else {
378  return hres;
379  }
380 
381  return S_OK;
382 }
383 
384 static HRESULT WINAPI HTMLLocation_put_port(IHTMLLocation *iface, BSTR v)
385 {
387  FIXME("(%p)->(%s)\n", This, debugstr_w(v));
388  return E_NOTIMPL;
389 }
390 
391 static HRESULT WINAPI HTMLLocation_get_port(IHTMLLocation *iface, BSTR *p)
392 {
394  DWORD port;
395  IUri *uri;
396  HRESULT hres;
397 
398  TRACE("(%p)->(%p)\n", This, p);
399 
400  if(!p)
401  return E_POINTER;
402 
403  if(!(uri = get_uri(This))) {
404  FIXME("No current URI\n");
405  return E_NOTIMPL;
406  }
407 
408  hres = IUri_GetPort(uri, &port);
409  if(FAILED(hres))
410  return hres;
411 
412  if(hres == S_OK) {
413  static const WCHAR formatW[] = {'%','u',0};
414  WCHAR buf[12];
415 
416  sprintfW(buf, formatW, port);
417  *p = SysAllocString(buf);
418  }else {
419  *p = SysAllocStringLen(NULL, 0);
420  }
421 
422  if(!*p)
423  return E_OUTOFMEMORY;
424  return S_OK;
425 }
426 
427 static HRESULT WINAPI HTMLLocation_put_pathname(IHTMLLocation *iface, BSTR v)
428 {
430  FIXME("(%p)->(%s)\n", This, debugstr_w(v));
431  return E_NOTIMPL;
432 }
433 
434 static HRESULT WINAPI HTMLLocation_get_pathname(IHTMLLocation *iface, BSTR *p)
435 {
437  URL_COMPONENTSW url = {sizeof(URL_COMPONENTSW)};
438  HRESULT hres;
439 
440  TRACE("(%p)->(%p)\n", This, p);
441 
442  if(!p)
443  return E_POINTER;
444 
445  url.dwUrlPathLength = 1;
446  url.dwExtraInfoLength = 1;
448  if(FAILED(hres))
449  return hres;
450 
451  if(url.dwUrlPathLength && url.lpszUrlPath[0] == '/')
452  *p = SysAllocStringLen(url.lpszUrlPath + 1, url.dwUrlPathLength - 1);
453  else
454  *p = SysAllocStringLen(url.lpszUrlPath, url.dwUrlPathLength);
455 
456  if(!*p)
457  return E_OUTOFMEMORY;
458  return S_OK;
459 }
460 
461 static HRESULT WINAPI HTMLLocation_put_search(IHTMLLocation *iface, BSTR v)
462 {
464  FIXME("(%p)->(%s)\n", This, debugstr_w(v));
465  return E_NOTIMPL;
466 }
467 
468 static HRESULT WINAPI HTMLLocation_get_search(IHTMLLocation *iface, BSTR *p)
469 {
471  BSTR query;
472  IUri *uri;
473  HRESULT hres;
474 
475  TRACE("(%p)->(%p)\n", This, p);
476 
477  if(!p)
478  return E_POINTER;
479 
480  if(!(uri = get_uri(This))) {
481  FIXME("No current URI\n");
482  return E_NOTIMPL;
483  }
484 
485  hres = IUri_GetQuery(uri, &query);
486  if(hres == S_OK) {
487  *p = query;
488  }else if(hres == S_FALSE) {
490  *p = NULL;
491  }else {
492  return hres;
493  }
494 
495  return S_OK;
496 }
497 
498 static HRESULT WINAPI HTMLLocation_put_hash(IHTMLLocation *iface, BSTR v)
499 {
501 
502  TRACE("(%p)->(%s)\n", This, debugstr_w(v));
503 
504  if(!This->window || !This->window->base.outer_window) {
505  FIXME("No window available\n");
506  return E_FAIL;
507  }
508 
509  return navigate_url(This->window->base.outer_window, v, This->window->base.outer_window->uri, 0);
510 }
511 
512 static HRESULT WINAPI HTMLLocation_get_hash(IHTMLLocation *iface, BSTR *p)
513 {
515  BSTR hash;
516  IUri *uri;
517  HRESULT hres;
518 
519  TRACE("(%p)->(%p)\n", This, p);
520 
521  if(!p)
522  return E_POINTER;
523 
524  if(!(uri = get_uri(This))) {
525  FIXME("No current URI\n");
526  return E_NOTIMPL;
527  }
528 
529  hres = IUri_GetFragment(uri, &hash);
530  if(hres == S_OK) {
531  *p = hash;
532  }else if(hres == S_FALSE) {
534  *p = NULL;
535  }else {
536  return hres;
537  }
538 
539  return S_OK;
540 }
541 
542 static HRESULT WINAPI HTMLLocation_reload(IHTMLLocation *iface, VARIANT_BOOL flag)
543 {
545  FIXME("(%p)->(%x)\n", This, flag);
546  return E_NOTIMPL;
547 }
548 
549 static HRESULT WINAPI HTMLLocation_replace(IHTMLLocation *iface, BSTR bstr)
550 {
552 
553  TRACE("(%p)->(%s)\n", This, debugstr_w(bstr));
554 
555  if(!This->window || !This->window->base.outer_window) {
556  FIXME("No window available\n");
557  return E_FAIL;
558  }
559 
560  return navigate_url(This->window->base.outer_window, bstr, This->window->base.outer_window->uri,
562 }
563 
564 static HRESULT WINAPI HTMLLocation_assign(IHTMLLocation *iface, BSTR bstr)
565 {
567  TRACE("(%p)->(%s)\n", This, debugstr_w(bstr));
568  return IHTMLLocation_put_href(iface, bstr);
569 }
570 
571 static HRESULT WINAPI HTMLLocation_toString(IHTMLLocation *iface, BSTR *String)
572 {
574 
575  TRACE("(%p)->(%p)\n", This, String);
576 
577  return IHTMLLocation_get_href(&This->IHTMLLocation_iface, String);
578 }
579 
580 static const IHTMLLocationVtbl HTMLLocationVtbl = {
608 };
609 
610 static const tid_t HTMLLocation_iface_tids[] = {
611  IHTMLLocation_tid,
612  0
613 };
615  NULL,
616  DispHTMLLocation_tid,
617  NULL,
619 };
620 
621 
623 {
625 
626  location = heap_alloc(sizeof(*location));
627  if(!location)
628  return E_OUTOFMEMORY;
629 
630  location->IHTMLLocation_iface.lpVtbl = &HTMLLocationVtbl;
631  location->ref = 1;
632  location->window = window;
633 
634  init_dispex(&location->dispex, (IUnknown*)&location->IHTMLLocation_iface, &HTMLLocation_dispex);
635 
636  *ret = location;
637  return S_OK;
638 }
static HRESULT WINAPI HTMLLocation_put_protocol(IHTMLLocation *iface, BSTR v)
Definition: htmllocation.c:256
static HRESULT WINAPI HTMLLocation_put_search(IHTMLLocation *iface, BSTR v)
Definition: htmllocation.c:461
static HTMLLocation * impl_from_IHTMLLocation(IHTMLLocation *iface)
Definition: htmllocation.c:57
#define REFIID
Definition: guiddef.h:118
#define E_NOINTERFACE
Definition: winerror.h:2364
#define snprintfW
Definition: unicode.h:60
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:342
static HRESULT WINAPI HTMLLocation_get_hostname(IHTMLLocation *iface, BSTR *p)
Definition: htmllocation.c:354
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
static HRESULT navigate_url(HHInfo *info, LPCWSTR surl)
Definition: help.c:189
const char * uri
Definition: sec_mgr.c:1594
REFIID riid
Definition: precomp.h:44
tid_t
Definition: ieframe.h:311
static HRESULT WINAPI HTMLLocation_get_host(IHTMLLocation *iface, BSTR *p)
Definition: htmllocation.c:308
#define WARN(fmt,...)
Definition: debug.h:111
REFIID LPVOID * ppv
Definition: atlbase.h:39
static const IHTMLLocationVtbl HTMLLocationVtbl
Definition: htmllocation.c:580
static HRESULT WINAPI HTMLLocation_GetTypeInfo(IHTMLLocation *iface, UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo)
Definition: htmllocation.c:117
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
static HRESULT WINAPI HTMLLocation_QueryInterface(IHTMLLocation *iface, REFIID riid, void **ppv)
Definition: htmllocation.c:62
static WCHAR String[]
Definition: stringtable.c:55
DWORD LCID
Definition: nls.h:13
static HRESULT WINAPI HTMLLocation_put_pathname(IHTMLLocation *iface, BSTR v)
Definition: htmllocation.c:427
OLECHAR * BSTR
Definition: compat.h:1934
static HRESULT WINAPI HTMLLocation_put_hostname(IHTMLLocation *iface, BSTR v)
Definition: htmllocation.c:347
static LPOLESTR
Definition: stg_prop.c:27
#define E_FAIL
Definition: ddrawi.h:102
HRESULT HTMLLocation_Create(HTMLInnerWindow *window, HTMLLocation **ret)
Definition: htmllocation.c:622
short VARIANT_BOOL
Definition: compat.h:1931
static const WCHAR doc_url[]
Definition: htmldoc.c:230
Definition: send.c:47
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
Definition: gl.h:1546
static void * heap_alloc(size_t len)
Definition: appwiz.h:65
static HRESULT WINAPI HTMLLocation_put_hash(IHTMLLocation *iface, BSTR v)
Definition: htmllocation.c:498
char * hostname
Definition: ftp.c:88
static HRESULT get_url_components(HTMLLocation *This, URL_COMPONENTSW *url)
Definition: htmllocation.c:39
const char * debugstr_mshtml_guid(const GUID *iid)
Definition: main.c:535
static HRESULT WINAPI HTMLLocation_put_href(IHTMLLocation *iface, BSTR v)
Definition: htmllocation.c:142
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
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
static ULONG WINAPI HTMLLocation_Release(IHTMLLocation *iface)
Definition: htmllocation.c:94
int hash
Definition: main.c:58
long LONG
Definition: pedump.c:60
#define debugstr_w
Definition: kernel32.h:32
GLenum GLint ref
Definition: glext.h:6028
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_FALSE
Definition: winerror.h:2357
static const tid_t HTMLLocation_iface_tids[]
Definition: htmllocation.c:610
smooth NULL
Definition: ftsmooth.c:416
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:241
static HRESULT WINAPI HTMLLocation_get_port(IHTMLLocation *iface, BSTR *p)
Definition: htmllocation.c:391
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 HRESULT WINAPI HTMLLocation_get_href(IHTMLLocation *iface, BSTR *p)
Definition: htmllocation.c:156
#define ICU_ESCAPE
Definition: winhttp.h:48
static HRESULT WINAPI HTMLLocation_assign(IHTMLLocation *iface, BSTR bstr)
Definition: htmllocation.c:564
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
LONG HRESULT
Definition: typedefs.h:77
static const WCHAR url[]
Definition: encode.c:1432
const GUID IID_IUnknown
#define WINAPI
Definition: msvc.h:8
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:409
static dispex_static_data_t HTMLLocation_dispex
Definition: htmllocation.c:614
static HRESULT WINAPI HTMLLocation_get_pathname(IHTMLLocation *iface, BSTR *p)
Definition: htmllocation.c:434
int ret
static ULONG WINAPI HTMLLocation_AddRef(IHTMLLocation *iface)
Definition: htmllocation.c:84
static HRESULT WINAPI HTMLLocation_get_hash(IHTMLLocation *iface, BSTR *p)
Definition: htmllocation.c:512
#define InterlockedDecrement
Definition: armddk.h:52
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 flag
Definition: glfuncs.h:52
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
GLenum GLsizei len
Definition: glext.h:6722
static HRESULT WINAPI HTMLLocation_put_host(IHTMLLocation *iface, BSTR v)
Definition: htmllocation.c:301
UINT WINAPI SysStringLen(BSTR str)
Definition: oleaut.c:199
static IHTMLWindow2 * window
Definition: events.c:77
static IUri * get_uri(HTMLLocation *This)
Definition: htmllocation.c:32
static HRESULT WINAPI HTMLLocation_GetIDsOfNames(IHTMLLocation *iface, REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId)
Definition: htmllocation.c:124
#define location(file, line)
Definition: kmtest.h:18
static HRESULT WINAPI HTMLLocation_get_search(IHTMLLocation *iface, BSTR *p)
Definition: htmllocation.c:468
_In_ DWORD _Out_ _In_ WORD wFlags
Definition: wincon.h:519
struct stdole::EXCEPINFO EXCEPINFO
static VARIANTARG static DISPID
Definition: ordinal.c:49
#define S_OK
Definition: intsafe.h:59
static HRESULT WINAPI HTMLLocation_Invoke(IHTMLLocation *iface, DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr)
Definition: htmllocation.c:133
static HRESULT WINAPI HTMLLocation_replace(IHTMLLocation *iface, BSTR bstr)
Definition: htmllocation.c:549
BOOL WINAPI InternetCreateUrlW(LPURL_COMPONENTSW lpUrlComponents, DWORD dwFlags, LPWSTR lpszUrl, LPDWORD lpdwUrlLength)
Definition: internet.c:4310
#define InterlockedIncrement
Definition: armddk.h:53
const GLdouble * v
Definition: gl.h:2040
BOOL dispex_query_interface(DispatchEx *This, REFIID riid, void **ppv)
Definition: dispex.c:1656
#define E_NOTIMPL
Definition: ddrawi.h:99
#define sprintfW
Definition: unicode.h:58
#define BINDING_NAVIGATED
Definition: binding.h:127
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:274
unsigned int UINT
Definition: ndis.h:50
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4021
HRESULT init_dispex(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *builtin_info, jsdisp_t *prototype)
Definition: dispex.c:940
static HRESULT WINAPI HTMLLocation_toString(IHTMLLocation *iface, BSTR *String)
Definition: htmllocation.c:571
BOOL WINAPI InternetCrackUrlW(const WCHAR *lpszUrl, DWORD dwUrlLength, DWORD dwFlags, URL_COMPONENTSW *lpUC)
Definition: internet.c:1645
struct stdole::DISPPARAMS DISPPARAMS
static HRESULT WINAPI HTMLLocation_get_protocol(IHTMLLocation *iface, BSTR *p)
Definition: htmllocation.c:263
unsigned int ULONG
Definition: retypes.h:1
char * cleanup(char *str)
Definition: wpickclick.c:99
static HRESULT WINAPI HTMLLocation_reload(IHTMLLocation *iface, VARIANT_BOOL flag)
Definition: htmllocation.c:542
GLfloat GLfloat p
Definition: glext.h:8902
#define E_POINTER
Definition: winerror.h:2365
Definition: _hash_fun.h:40
USHORT port
Definition: uri.c:227
URL_COMPONENTS URL_COMPONENTSW
Definition: winhttp.h:481
GLenum query
Definition: glext.h:7781
static HRESULT get_url(HTMLLocation *This, const WCHAR **ret)
Definition: htmllocation.c:21
#define HeapFree(x, y, z)
Definition: compat.h:394
void release_dispex(DispatchEx *This)
Definition: dispex.c:1706
static HRESULT WINAPI HTMLLocation_GetTypeInfoCount(IHTMLLocation *iface, UINT *pctinfo)
Definition: htmllocation.c:111
static HRESULT WINAPI HTMLLocation_put_port(IHTMLLocation *iface, BSTR v)
Definition: htmllocation.c:384
#define BINDING_REPLACE
Definition: binding.h:128
static BOOL heap_free(void *mem)
Definition: appwiz.h:75
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10