ReactOS 0.4.17-dev-804-g023d8af
nsembed.c
Go to the documentation of this file.
1/*
2 * Copyright 2005-2007 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
21#include <wincon.h>
22#include <shlobj.h>
23
25
26#define NS_APPSTARTUPNOTIFIER_CONTRACTID "@mozilla.org/embedcomp/appstartup-notifier;1"
27#define NS_WEBBROWSER_CONTRACTID "@mozilla.org/embedding/browser/nsWebBrowser;1"
28#define NS_COMMANDPARAMS_CONTRACTID "@mozilla.org/embedcomp/command-params;1"
29#define NS_HTMLSERIALIZER_CONTRACTID "@mozilla.org/layout/contentserializer;1?mimetype=text/html"
30#define NS_EDITORCONTROLLER_CONTRACTID "@mozilla.org/editor/editorcontroller;1"
31#define NS_PREFERENCES_CONTRACTID "@mozilla.org/preferences;1"
32#define NS_VARIANT_CONTRACTID "@mozilla.org/variant;1"
33#define NS_CATEGORYMANAGER_CONTRACTID "@mozilla.org/categorymanager;1"
34#define NS_XMLHTTPREQUEST_CONTRACTID "@mozilla.org/xmlextras/xmlhttprequest;1"
35#define NS_SCRIPTSECURITYMANAGER_CONTRACTID "@mozilla.org/scriptsecuritymanager;1"
36
37#define PR_UINT32_MAX 0xffffffff
38
39#define NS_STRING_CONTAINER_INIT_DEPEND 0x0002
40#define NS_CSTRING_CONTAINER_INIT_DEPEND 0x0002
41
43
44static nsresult (CDECL *NS_InitXPCOM2)(nsIServiceManager**,void*,void*);
45static nsresult (CDECL *NS_ShutdownXPCOM)(nsIServiceManager*);
46static nsresult (CDECL *NS_GetComponentRegistrar)(nsIComponentRegistrar**);
47static nsresult (CDECL *NS_StringContainerInit2)(nsStringContainer*,const PRUnichar*,PRUint32,PRUint32);
48static nsresult (CDECL *NS_CStringContainerInit2)(nsCStringContainer*,const char*,PRUint32,PRUint32);
49static nsresult (CDECL *NS_StringContainerFinish)(nsStringContainer*);
50static nsresult (CDECL *NS_CStringContainerFinish)(nsCStringContainer*);
51static nsresult (CDECL *NS_StringSetData)(nsAString*,const PRUnichar*,PRUint32);
52static nsresult (CDECL *NS_CStringSetData)(nsACString*,const char*,PRUint32);
53static nsresult (CDECL *NS_NewLocalFile)(const nsAString*,cpp_bool,nsIFile**);
54static PRUint32 (CDECL *NS_StringGetData)(const nsAString*,const PRUnichar **,cpp_bool*);
55static PRUint32 (CDECL *NS_CStringGetData)(const nsACString*,const char**,cpp_bool*);
56static void* (CDECL *NS_Alloc)(SIZE_T);
57static void (CDECL *NS_Free)(void*);
58
60
65
66static const WCHAR wszNsContainer[] = {'N','s','C','o','n','t','a','i','n','e','r',0};
67
70static unsigned gecko_path_len;
71
73{
75 nsresult nsres;
76
78 nsres = NS_NewLocalFile(&str, FALSE, ret);
80
81 if(NS_FAILED(nsres))
82 WARN("NS_NewLocalFile failed: %08x\n", nsres);
83 return nsres;
84}
85
86typedef struct {
91
93{
94 return CONTAINING_RECORD(iface, nsSingletonEnumerator, nsISimpleEnumerator_iface);
95}
96
98{
100
101 if(IsEqualGUID(&IID_nsISupports, riid)) {
102 TRACE("(%p)->(IID_nsISupports %p)\n", This, ppv);
103 *ppv = &This->nsISimpleEnumerator_iface;
104 }else if(IsEqualGUID(&IID_nsISimpleEnumerator, riid)) {
105 TRACE("(%p)->(IID_nsISimpleEnumerator %p)\n", This, ppv);
106 *ppv = &This->nsISimpleEnumerator_iface;
107 }else {
108 TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
109 *ppv = NULL;
110 return NS_NOINTERFACE;
111 }
112
113 nsISupports_AddRef((nsISupports*)*ppv);
114 return NS_OK;
115}
116
118{
121
122 TRACE("(%p) ref=%d\n", This, ref);
123
124 return ref;
125}
126
128{
131
132 TRACE("(%p) ref=%d\n", This, ref);
133
134 if(!ref) {
135 if(This->value)
136 nsISupports_Release(This->value);
138 }
139
140 return ref;
141}
142
144{
146
147 TRACE("(%p)->()\n", This);
148
149 *_retval = This->value != NULL;
150 return NS_OK;
151}
152
154{
156
157 TRACE("(%p)->()\n", This);
158
159 if(!This->value)
160 return NS_ERROR_UNEXPECTED;
161
162 *_retval = This->value;
163 This->value = NULL;
164 return NS_OK;
165}
166
167static const nsISimpleEnumeratorVtbl nsSingletonEnumeratorVtbl = {
173};
174
176{
178
179 ret = heap_alloc(sizeof(*ret));
180 if(!ret)
181 return NULL;
182
183 ret->nsISimpleEnumerator_iface.lpVtbl = &nsSingletonEnumeratorVtbl;
184 ret->ref = 1;
185
186 if(value)
187 nsISupports_AddRef(value);
188 ret->value = value;
189 return &ret->nsISimpleEnumerator_iface;
190}
191
193 nsIIDRef riid, void **result)
194{
195 if(IsEqualGUID(&IID_nsISupports, riid)) {
196 TRACE("(IID_nsISupports %p)\n", result);
197 *result = iface;
198 }else if(IsEqualGUID(&IID_nsIDirectoryServiceProvider, riid)) {
199 TRACE("(IID_nsIDirectoryServiceProvider %p)\n", result);
200 *result = iface;
201 }else if(IsEqualGUID(&IID_nsIDirectoryServiceProvider2, riid)) {
202 TRACE("(IID_nsIDirectoryServiceProvider2 %p)\n", result);
203 *result = iface;
204 }else {
205 WARN("(%s %p)\n", debugstr_guid(riid), result);
206 *result = NULL;
207 return NS_NOINTERFACE;
208 }
209
210 nsISupports_AddRef((nsISupports*)*result);
211 return NS_OK;
212}
213
215{
216 return 2;
217}
218
220{
221 return 1;
222}
223
225{
226 static const WCHAR wine_geckoW[] = {'\\','w','i','n','e','_','g','e','c','k','o',0};
227
228 WCHAR path[MAX_PATH + sizeof(wine_geckoW)/sizeof(WCHAR)];
229 cpp_bool exists;
230 nsresult nsres;
232
234 if(FAILED(hres)) {
235 ERR("SHGetFolderPath failed: %08x\n", hres);
236 return NS_ERROR_FAILURE;
237 }
238
239 strcatW(path, wine_geckoW);
241 if(NS_FAILED(nsres))
242 return nsres;
243
244 nsres = nsIFile_Exists(profile_directory, &exists);
245 if(NS_FAILED(nsres)) {
246 ERR("Exists failed: %08x\n", nsres);
247 return nsres;
248 }
249
250 if(!exists) {
251 nsres = nsIFile_Create(profile_directory, 1, 0700);
252 if(NS_FAILED(nsres))
253 ERR("Create failed: %08x\n", nsres);
254 }
255
256 return nsres;
257}
258
260 const char *prop, cpp_bool *persistent, nsIFile **_retval)
261{
262 TRACE("(%s %p %p)\n", debugstr_a(prop), persistent, _retval);
263
264 if(!strcmp(prop, "ProfD")) {
265 if(!profile_directory) {
266 nsresult nsres;
267
268 nsres = create_profile_directory();
269 if(NS_FAILED(nsres))
270 return nsres;
271 }
272
274 return nsIFile_Clone(profile_directory, _retval);
275 }
276
277 *_retval = NULL;
278 return NS_ERROR_FAILURE;
279}
280
282 const char *prop, nsISimpleEnumerator **_retval)
283{
284 TRACE("(%s %p)\n", debugstr_a(prop), _retval);
285
286 if(!strcmp(prop, "APluginsDL")) {
287 WCHAR plugin_path[MAX_PATH];
288 nsIFile *file;
289 int len;
290 nsresult nsres;
291
292 if(!plugin_directory) {
293 static const WCHAR gecko_pluginW[] = {'\\','g','e','c','k','o','\\','p','l','u','g','i','n',0};
294
295 len = GetSystemDirectoryW(plugin_path, (sizeof(plugin_path)-sizeof(gecko_pluginW))/sizeof(WCHAR)+1);
296 if(!len)
297 return NS_ERROR_UNEXPECTED;
298
299 strcpyW(plugin_path+len, gecko_pluginW);
300 nsres = create_nsfile(plugin_path, &plugin_directory);
301 if(NS_FAILED(nsres)) {
302 *_retval = NULL;
303 return nsres;
304 }
305 }
306
307 nsres = nsIFile_Clone(plugin_directory, &file);
308 if(NS_FAILED(nsres))
309 return nsres;
310
312 nsIFile_Release(file);
313 if(!*_retval)
315
316 return NS_OK;
317 }
318
319 *_retval = NULL;
320 return NS_ERROR_FAILURE;
321}
322
323static const nsIDirectoryServiceProvider2Vtbl nsDirectoryServiceProvider2Vtbl = {
329};
330
333
335{
337 nsresult nsres;
338
339 static const WCHAR wszTHIS[] = {'T','H','I','S',0};
340
341 if(msg == WM_CREATE) {
342 This = *(NSContainer**)lParam;
343 SetPropW(hwnd, wszTHIS, This);
344 }else {
345 This = GetPropW(hwnd, wszTHIS);
346 }
347
348 switch(msg) {
349 case WM_SIZE:
350 TRACE("(%p)->(WM_SIZE)\n", This);
351
352 nsres = nsIBaseWindow_SetSize(This->window,
354 if(NS_FAILED(nsres))
355 WARN("SetSize failed: %08x\n", nsres);
356 break;
357
358 case WM_PARENTNOTIFY:
359 TRACE("WM_PARENTNOTIFY %x\n", (unsigned)wParam);
360
361 switch(wParam) {
362 case WM_LBUTTONDOWN:
363 case WM_RBUTTONDOWN:
364 nsIWebBrowserFocus_Activate(This->focus);
365 }
366 }
367
369}
370
371
373{
374 static WNDCLASSEXW wndclass = {
375 sizeof(WNDCLASSEXW),
378 0, 0, NULL, NULL, NULL, NULL, NULL,
380 NULL,
381 };
382 wndclass.hInstance = hInst;
384}
385
386#ifndef __REACTOS__
388{
391 WCHAR app[MAX_PATH];
392 WCHAR *args;
393 LONG len;
394 BOOL ret;
395
396 static const WCHAR controlW[] = {'\\','c','o','n','t','r','o','l','.','e','x','e',0};
397 static const WCHAR argsW[] =
398 {' ','a','p','p','w','i','z','.','c','p','l',' ','i','n','s','t','a','l','l','_','g','e','c','k','o',0};
399
400 len = GetSystemDirectoryW(app, MAX_PATH-sizeof(controlW)/sizeof(WCHAR));
401 memcpy(app+len, controlW, sizeof(controlW));
402
403 args = heap_alloc(len*sizeof(WCHAR) + sizeof(controlW) + sizeof(argsW));
404 if(!args)
405 return FALSE;
406
407 memcpy(args, app, len*sizeof(WCHAR) + sizeof(controlW));
408 memcpy(args + len + sizeof(controlW)/sizeof(WCHAR)-1, argsW, sizeof(argsW));
409
410 TRACE("starting %s\n", debugstr_w(args));
411
412 memset(&si, 0, sizeof(si));
413 si.cb = sizeof(si);
414 ret = CreateProcessW(app, args, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
416 if (ret) {
420 }
421
422 return ret;
423}
424#endif
425
426static void set_environment(LPCWSTR gre_path)
427{
428 size_t len, gre_path_len;
429 int debug_level = 0;
430 WCHAR *path, buf[20];
431 const WCHAR *ptr;
432
433 static const WCHAR pathW[] = {'P','A','T','H',0};
434 static const WCHAR warnW[] = {'w','a','r','n',0};
435 static const WCHAR xpcom_debug_breakW[] =
436 {'X','P','C','O','M','_','D','E','B','U','G','_','B','R','E','A','K',0};
437 static const WCHAR nspr_log_modulesW[] =
438 {'N','S','P','R','_','L','O','G','_','M','O','D','U','L','E','S',0};
439 static const WCHAR debug_formatW[] = {'a','l','l',':','%','d',0};
440
441 SetEnvironmentVariableW(xpcom_debug_breakW, warnW);
442
443 if(TRACE_ON(gecko))
444 debug_level = 5;
445 else if(WARN_ON(gecko))
446 debug_level = 3;
447 else if(ERR_ON(gecko))
448 debug_level = 2;
449
450 sprintfW(buf, debug_formatW, debug_level);
451 SetEnvironmentVariableW(nspr_log_modulesW, buf);
452
454 gre_path_len = strlenW(gre_path);
455 path = heap_alloc((len+gre_path_len+1)*sizeof(WCHAR));
456 if(!path)
457 return;
459
460 /* We have to modify PATH as xul.dll loads other DLLs from this directory. */
461 if(!(ptr = strstrW(path, gre_path))
462 || (ptr > path && *(ptr-1) != ';')
463 || (ptr[gre_path_len] && ptr[gre_path_len] != ';')) {
464 if(len)
465 path[len-1] = ';';
466 strcpyW(path+len, gre_path);
468 }
470}
471
472static BOOL load_xul(const PRUnichar *gre_path)
473{
474 static const WCHAR xul_dllW[] = {'\\','x','u','l','.','d','l','l',0};
476
477 strcpyW(file_name, gre_path);
478 strcatW(file_name, xul_dllW);
479
480 TRACE("(%s)\n", debugstr_w(file_name));
481
482 set_environment(gre_path);
483
485 if(!xul_handle) {
486 WARN("Could not load XUL: %d\n", GetLastError());
487 return FALSE;
488 }
489
490#define NS_DLSYM(func) \
491 func = (void *)GetProcAddress(xul_handle, #func); \
492 if(!func) \
493 ERR("Could not GetProcAddress(" #func ") failed\n")
494
495 NS_DLSYM(NS_InitXPCOM2);
496 NS_DLSYM(NS_ShutdownXPCOM);
497 NS_DLSYM(NS_GetComponentRegistrar);
498 NS_DLSYM(NS_StringContainerInit2);
499 NS_DLSYM(NS_CStringContainerInit2);
500 NS_DLSYM(NS_StringContainerFinish);
501 NS_DLSYM(NS_CStringContainerFinish);
502 NS_DLSYM(NS_StringSetData);
503 NS_DLSYM(NS_CStringSetData);
504 NS_DLSYM(NS_NewLocalFile);
505 NS_DLSYM(NS_StringGetData);
506 NS_DLSYM(NS_CStringGetData);
508 NS_DLSYM(NS_Free);
509 NS_DLSYM(ccref_incr);
510 NS_DLSYM(ccref_decr);
511 NS_DLSYM(ccref_init);
512 NS_DLSYM(ccp_init);
513 NS_DLSYM(describe_cc_node);
514 NS_DLSYM(note_cc_edge);
515
516#undef NS_DLSYM
517
518 return TRUE;
519}
520
521static BOOL check_version(LPCWSTR gre_path, const char *version_string)
522{
524 char version[128];
525 DWORD read=0;
526 HANDLE hfile;
527
528 static const WCHAR wszVersion[] = {'\\','V','E','R','S','I','O','N',0};
529
530 strcpyW(file_name, gre_path);
531 strcatW(file_name, wszVersion);
532
535 if(hfile == INVALID_HANDLE_VALUE) {
536 ERR("Could not open VERSION file\n");
537 return FALSE;
538 }
539
540 ReadFile(hfile, version, sizeof(version), &read, NULL);
541 version[read] = 0;
542 CloseHandle(hfile);
543
544 TRACE("%s\n", debugstr_a(version));
545
547 ERR("Unexpected version %s, expected %s\n", debugstr_a(version),
549 return FALSE;
550 }
551
552 return TRUE;
553}
554
555static BOOL load_wine_gecko_v(PRUnichar *gre_path, HKEY mshtml_key,
556 const char *version, const char *version_string)
557{
559 HKEY hkey = mshtml_key;
560
561 static const WCHAR wszGeckoPath[] =
562 {'G','e','c','k','o','P','a','t','h',0};
563
564 if(version) {
565 /* @@ Wine registry key: HKLM\Software\Wine\MSHTML<version> */
566 res = RegOpenKeyA(mshtml_key, version, &hkey);
567 if(res != ERROR_SUCCESS)
568 return FALSE;
569 }
570
571 res = RegQueryValueExW(hkey, wszGeckoPath, NULL, &type, (LPBYTE)gre_path, &size);
572 if(hkey != mshtml_key)
573 RegCloseKey(hkey);
574 if(res != ERROR_SUCCESS || type != REG_SZ)
575 return FALSE;
576
577 if(!check_version(gre_path, version_string))
578 return FALSE;
579
580 return load_xul(gre_path);
581}
582
584{
585 HKEY hkey;
586 DWORD res;
587 BOOL ret;
588
589 static const WCHAR wszMshtmlKey[] = {
590 'S','o','f','t','w','a','r','e','\\','W','i','n','e',
591 '\\','M','S','H','T','M','L',0};
592
593 /* @@ Wine registry key: HKLM\Software\Wine\MSHTML */
594 res = RegOpenKeyW(HKEY_LOCAL_MACHINE, wszMshtmlKey, &hkey);
595 if(res != ERROR_SUCCESS)
596 return FALSE;
597
598 ret = load_wine_gecko_v(gre_path, hkey, GECKO_VERSION, GECKO_VERSION_STRING);
599
600 RegCloseKey(hkey);
601 return ret;
602}
603
604static void set_bool_pref(nsIPrefBranch *pref, const char *pref_name, BOOL val)
605{
606 nsresult nsres;
607
608 nsres = nsIPrefBranch_SetBoolPref(pref, pref_name, val);
609 if(NS_FAILED(nsres))
610 ERR("Could not set pref %s\n", debugstr_a(pref_name));
611}
612
613static void set_int_pref(nsIPrefBranch *pref, const char *pref_name, int val)
614{
615 nsresult nsres;
616
617 nsres = nsIPrefBranch_SetIntPref(pref, pref_name, val);
618 if(NS_FAILED(nsres))
619 ERR("Could not set pref %s\n", debugstr_a(pref_name));
620}
621
622static void set_string_pref(nsIPrefBranch *pref, const char *pref_name, const char *val)
623{
624 nsresult nsres;
625
626 nsres = nsIPrefBranch_SetCharPref(pref, pref_name, val);
627 if(NS_FAILED(nsres))
628 ERR("Could not set pref %s\n", debugstr_a(pref_name));
629}
630
631static void set_lang(nsIPrefBranch *pref)
632{
633 char langs[100];
634 DWORD res, size, type;
635 HKEY hkey;
636
637 static const WCHAR international_keyW[] =
638 {'S','o','f','t','w','a','r','e',
639 '\\','M','i','c','r','o','s','o','f','t',
640 '\\','I','n','t','e','r','n','e','t',' ','E','x','p','l','o','r','e','r',
641 '\\','I','n','t','e','r','n','a','t','i','o','n','a','l',0};
642
643 res = RegOpenKeyW(HKEY_CURRENT_USER, international_keyW, &hkey);
644 if(res != ERROR_SUCCESS)
645 return;
646
647 size = sizeof(langs);
648 res = RegQueryValueExA(hkey, "AcceptLanguage", 0, &type, (LPBYTE)langs, &size);
649 RegCloseKey(hkey);
650 if(res != ERROR_SUCCESS || type != REG_SZ)
651 return;
652
653 TRACE("Setting lang %s\n", debugstr_a(langs));
654
655 set_string_pref(pref, "intl.accept_languages", langs);
656}
657
658static void set_preferences(void)
659{
660 nsIPrefBranch *pref;
661 nsresult nsres;
662
663 nsres = nsIServiceManager_GetServiceByContractID(pServMgr, NS_PREFERENCES_CONTRACTID,
664 &IID_nsIPrefBranch, (void**)&pref);
665 if(NS_FAILED(nsres)) {
666 ERR("Could not get preference service: %08x\n", nsres);
667 return;
668 }
669
670 set_lang(pref);
671 set_bool_pref(pref, "security.warn_entering_secure", FALSE);
672 set_bool_pref(pref, "security.warn_submit_insecure", FALSE);
673 set_int_pref(pref, "layout.spellcheckDefault", 0);
674
675 nsIPrefBranch_Release(pref);
676}
677
678static BOOL init_xpcom(const PRUnichar *gre_path)
679{
680 nsIComponentRegistrar *registrar = NULL;
681 nsIFile *gre_dir;
682 WCHAR *ptr;
683 nsresult nsres;
684
685 nsres = create_nsfile(gre_path, &gre_dir);
686 if(NS_FAILED(nsres)) {
688 return FALSE;
689 }
690
691 nsres = NS_InitXPCOM2(&pServMgr, gre_dir, (nsIDirectoryServiceProvider*)&nsDirectoryServiceProvider2);
692 if(NS_FAILED(nsres)) {
693 ERR("NS_InitXPCOM2 failed: %08x\n", nsres);
695 return FALSE;
696 }
697
698 strcpyW(gecko_path, gre_path);
699 for(ptr = gecko_path; *ptr; ptr++) {
700 if(*ptr == '\\')
701 *ptr = '/';
702 }
704
705 nsres = nsIServiceManager_QueryInterface(pServMgr, &IID_nsIComponentManager, (void**)&pCompMgr);
706 if(NS_FAILED(nsres))
707 ERR("Could not get nsIComponentManager: %08x\n", nsres);
708
709 nsres = NS_GetComponentRegistrar(&registrar);
710 if(NS_SUCCEEDED(nsres))
711 init_nsio(pCompMgr, registrar);
712 else
713 ERR("NS_GetComponentRegistrar failed: %08x\n", nsres);
714
717
718 nsres = nsIServiceManager_GetServiceByContractID(pServMgr, NS_CATEGORYMANAGER_CONTRACTID,
719 &IID_nsICategoryManager, (void**)&cat_mgr);
720 if(NS_FAILED(nsres))
721 ERR("Could not get category manager service: %08x\n", nsres);
722
723 if(registrar) {
724 register_nsservice(registrar, pServMgr);
725 nsIComponentRegistrar_Release(registrar);
726 }
727
728 init_node_cc();
729
730 return TRUE;
731}
732
735{
736 0, 0, &cs_load_gecko,
738 0, 0, { (DWORD_PTR)(__FILE__ ": load_gecko") }
739};
740static CRITICAL_SECTION cs_load_gecko = { &cs_load_gecko_dbg, -1, 0, 0, 0, 0 };
741
743{
744 PRUnichar gre_path[MAX_PATH];
745 BOOL ret = FALSE;
746
747 static DWORD loading_thread;
748
749 TRACE("()\n");
750
751 /* load_gecko may be called recursively */
752 if(loading_thread == GetCurrentThreadId())
753 return pCompMgr != NULL;
754
756
757 if(!loading_thread) {
758 loading_thread = GetCurrentThreadId();
759
760#ifdef __REACTOS__
761 if(load_wine_gecko(gre_path))
762#else
763 if(load_wine_gecko(gre_path)
764 || (install_wine_gecko() && load_wine_gecko(gre_path)))
765#endif
766 ret = init_xpcom(gre_path);
767 else
768 MESSAGE("Could not load wine-gecko. HTML rendering will be disabled.\n");
769 }else {
770 ret = pCompMgr != NULL;
771 }
772
774
775 return ret;
776}
777
778void *nsalloc(size_t size)
779{
780 return NS_Alloc(size);
781}
782
783void nsfree(void *mem)
784{
785 NS_Free(mem);
786}
787
789{
790 return NS_SUCCEEDED(NS_CStringContainerInit2(str, data, PR_UINT32_MAX, 0));
791}
792
793/*
794 * Initializes nsACString with data owned by caller.
795 * Caller must ensure that data is valid during lifetime of string object.
796 */
798{
799 NS_CStringContainerInit2(str, data, PR_UINT32_MAX, NS_CSTRING_CONTAINER_INIT_DEPEND);
800}
801
803{
804 NS_CStringSetData(str, data, PR_UINT32_MAX);
805}
806
808{
809 return NS_CStringGetData(str, data, NULL);
810}
811
813{
814 NS_CStringContainerFinish(str);
815}
816
818{
819 return NS_SUCCEEDED(NS_StringContainerInit2(str, data, PR_UINT32_MAX, 0));
820}
821
822/*
823 * Initializes nsAString with data owned by caller.
824 * Caller must ensure that data is valid during lifetime of string object.
825 */
827{
828 NS_StringContainerInit2(str, data, PR_UINT32_MAX, NS_STRING_CONTAINER_INIT_DEPEND);
829}
830
832{
833 return NS_StringGetData(str, data, NULL);
834}
835
837{
838 NS_StringContainerFinish(str);
839}
840
842{
843 switch(nsres) {
844 case NS_OK:
845 return S_OK;
847 return E_OUTOFMEMORY;
849 return E_NOTIMPL;
850 case NS_NOINTERFACE:
851 return E_NOINTERFACE;
853 return E_POINTER;
855 return E_INVALIDARG;
857 return E_UNEXPECTED;
858#ifndef __REACTOS__
859 /* FIXME: These are not yet defined for ReactOS */
860 case NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR:
861 return 0x80700007; /* according to tests */
862 case NS_ERROR_DOM_SYNTAX_ERR:
863 return E_INVALIDARG; /* FIXME: Throw SyntaxError for IE9+ modes */
864#endif
866 return E_ABORT;
867 }
868 return E_FAIL;
869}
870
872{
873 const PRUnichar *str;
874
875 if(NS_FAILED(nsres)) {
876 ERR("failed: %08x\n", nsres);
877 nsAString_Finish(nsstr);
878 return E_FAIL;
879 }
880
881 nsAString_GetData(nsstr, &str);
882 TRACE("ret %s\n", debugstr_w(str));
883 if(*str) {
884 *p = SysAllocString(str);
885 if(!*p)
886 return E_OUTOFMEMORY;
887 }else {
888 *p = NULL;
889 }
890
891 nsAString_Finish(nsstr);
892 return S_OK;
893}
894
896{
898 nsresult nsres;
899
900 if(!pCompMgr)
901 return NULL;
902
903 nsres = nsIComponentManager_CreateInstanceByContractID(pCompMgr,
904 NS_COMMANDPARAMS_CONTRACTID, NULL, &IID_nsICommandParams,
905 (void**)&ret);
906 if(NS_FAILED(nsres))
907 ERR("Could not get nsICommandParams\n");
908
909 return ret;
910}
911
913{
915 nsresult nsres;
916
917 if(!pCompMgr)
918 return NULL;
919
920 nsres = nsIComponentManager_CreateInstanceByContractID(pCompMgr,
921 NS_VARIANT_CONTRACTID, NULL, &IID_nsIWritableVariant, (void**)&ret);
922 if(NS_FAILED(nsres))
923 ERR("Could not get nsIVariant\n");
924
925 return ret;
926}
927
928char *get_nscategory_entry(const char *category, const char *entry)
929{
930 char *ret = NULL;
931 nsresult nsres;
932
933 nsres = nsICategoryManager_GetCategoryEntry(cat_mgr, category, entry, &ret);
934 return NS_SUCCEEDED(nsres) ? ret : NULL;
935}
936
938{
939 nsIInterfaceRequestor *iface_req;
940 nsresult nsres;
941
942 nsres = nsISupports_QueryInterface(iface, &IID_nsIInterfaceRequestor, (void**)&iface_req);
943 if(NS_FAILED(nsres))
944 return nsres;
945
946 nsres = nsIInterfaceRequestor_GetInterface(iface_req, riid, ppv);
947 nsIInterfaceRequestor_Release(iface_req);
948
949 return nsres;
950}
951
953{
954 nsIDOMNodeList *node_list = NULL;
955 cpp_bool has_children = FALSE;
956 nsIContent *nscontent;
957 UINT16 type;
958 nsresult nsres;
959
960 nsIDOMNode_HasChildNodes(nsnode, &has_children);
961
962 nsres = nsIDOMNode_GetNodeType(nsnode, &type);
963 if(NS_FAILED(nsres)) {
964 ERR("GetType failed: %08x\n", nsres);
965 return E_FAIL;
966 }
967
968 if(type != DOCUMENT_NODE) {
969 nsres = nsIDOMNode_QueryInterface(nsnode, &IID_nsIContent, (void**)&nscontent);
970 if(NS_FAILED(nsres)) {
971 ERR("Could not get nsIContent interface: %08x\n", nsres);
972 return E_FAIL;
973 }
974 }
975
976 switch(type) {
977 case ELEMENT_NODE:
978 nsIContentSerializer_AppendElementStart(serializer, nscontent, nscontent, str);
979 break;
980 case TEXT_NODE:
981 nsIContentSerializer_AppendText(serializer, nscontent, 0, -1, str);
982 break;
983 case COMMENT_NODE:
984 nsres = nsIContentSerializer_AppendComment(serializer, nscontent, 0, -1, str);
985 break;
986 case DOCUMENT_NODE: {
987 nsIDocument *nsdoc;
988 nsIDOMNode_QueryInterface(nsnode, &IID_nsIDocument, (void**)&nsdoc);
989 nsIContentSerializer_AppendDocumentStart(serializer, nsdoc, str);
990 nsIDocument_Release(nsdoc);
991 break;
992 }
993 case DOCUMENT_TYPE_NODE:
994 nsIContentSerializer_AppendDoctype(serializer, nscontent, str);
995 break;
996 case DOCUMENT_FRAGMENT_NODE:
997 break;
998 default:
999 FIXME("Unhandled type %u\n", type);
1000 }
1001
1002 if(has_children) {
1003 UINT32 child_cnt, i;
1004 nsIDOMNode *child_node;
1005
1006 nsIDOMNode_GetChildNodes(nsnode, &node_list);
1007 nsIDOMNodeList_GetLength(node_list, &child_cnt);
1008
1009 for(i=0; i<child_cnt; i++) {
1010 nsres = nsIDOMNodeList_Item(node_list, i, &child_node);
1011 if(NS_SUCCEEDED(nsres)) {
1012 nsnode_to_nsstring_rec(serializer, child_node, str);
1013 nsIDOMNode_Release(child_node);
1014 }else {
1015 ERR("Item failed: %08x\n", nsres);
1016 }
1017 }
1018
1019 nsIDOMNodeList_Release(node_list);
1020 }
1021
1022 if(type == ELEMENT_NODE)
1023 nsIContentSerializer_AppendElementEnd(serializer, nscontent, str);
1024
1025 if(type != DOCUMENT_NODE)
1026 nsIContent_Release(nscontent);
1027 return S_OK;
1028}
1029
1031{
1032 nsIContentSerializer *serializer;
1033 nsresult nsres;
1034 HRESULT hres;
1035
1036 nsres = nsIComponentManager_CreateInstanceByContractID(pCompMgr,
1037 NS_HTMLSERIALIZER_CONTRACTID, NULL, &IID_nsIContentSerializer,
1038 (void**)&serializer);
1039 if(NS_FAILED(nsres)) {
1040 ERR("Could not get nsIContentSerializer: %08x\n", nsres);
1041 return E_FAIL;
1042 }
1043
1044 nsres = nsIContentSerializer_Init(serializer, 0, 100, NULL, FALSE, FALSE /* FIXME */);
1045 if(NS_FAILED(nsres))
1046 ERR("Init failed: %08x\n", nsres);
1047
1048 hres = nsnode_to_nsstring_rec(serializer, nsnode, str);
1049 if(SUCCEEDED(hres)) {
1050 nsres = nsIContentSerializer_Flush(serializer, str);
1051 if(NS_FAILED(nsres))
1052 ERR("Flush failed: %08x\n", nsres);
1053 }
1054
1055 nsIContentSerializer_Release(serializer);
1056 return hres;
1057}
1058
1060{
1061 nsIEditingSession *editing_session = NULL;
1062 nsIControllerContext *ctrlctx;
1063 nsresult nsres;
1064
1065 if(This->editor) {
1066 nsIEditor_Release(This->editor);
1067 This->editor = NULL;
1068 }
1069
1070 if(This->editor_controller) {
1071 nsIController_Release(This->editor_controller);
1072 This->editor_controller = NULL;
1073 }
1074
1075 nsres = get_nsinterface((nsISupports*)This->webbrowser, &IID_nsIEditingSession,
1076 (void**)&editing_session);
1077 if(NS_FAILED(nsres)) {
1078 ERR("Could not get nsIEditingSession: %08x\n", nsres);
1079 return;
1080 }
1081
1082 nsres = nsIEditingSession_GetEditorForWindow(editing_session,
1083 This->doc->basedoc.window->nswindow, &This->editor);
1084 nsIEditingSession_Release(editing_session);
1085 if(NS_FAILED(nsres)) {
1086 ERR("Could not get editor: %08x\n", nsres);
1087 return;
1088 }
1089
1090 nsres = nsIComponentManager_CreateInstanceByContractID(pCompMgr,
1091 NS_EDITORCONTROLLER_CONTRACTID, NULL, &IID_nsIControllerContext, (void**)&ctrlctx);
1092 if(NS_SUCCEEDED(nsres)) {
1093 nsres = nsIControllerContext_SetCommandContext(ctrlctx, (nsISupports *)This->editor);
1094 if(NS_FAILED(nsres))
1095 ERR("SetCommandContext failed: %08x\n", nsres);
1096 nsres = nsIControllerContext_QueryInterface(ctrlctx, &IID_nsIController,
1097 (void**)&This->editor_controller);
1098 nsIControllerContext_Release(ctrlctx);
1099 if(NS_FAILED(nsres))
1100 ERR("Could not get nsIController interface: %08x\n", nsres);
1101 }else {
1102 ERR("Could not create edit controller: %08x\n", nsres);
1103 }
1104}
1105
1106void close_gecko(void)
1107{
1108 TRACE("()\n");
1109
1110 release_nsio();
1112
1113 if(profile_directory) {
1114 nsIFile_Release(profile_directory);
1116 }
1117
1118 if(plugin_directory) {
1119 nsIFile_Release(plugin_directory);
1121 }
1122
1123 if(pCompMgr)
1124 nsIComponentManager_Release(pCompMgr);
1125
1126 if(pServMgr)
1127 nsIServiceManager_Release(pServMgr);
1128
1129 if(cat_mgr)
1130 nsICategoryManager_Release(cat_mgr);
1131
1132 /* Gecko doesn't really support being unloaded */
1133 /* if (hXPCOM) FreeLibrary(hXPCOM); */
1134
1136}
1137
1139{
1140 WCHAR *buf, *ptr;
1141 BOOL ret;
1142
1144 if(!buf || strlenW(buf) < gecko_path_len)
1145 return FALSE;
1146
1147 for(ptr = buf; *ptr; ptr++) {
1148 if(*ptr == '\\')
1149 *ptr = '/';
1150 }
1151
1153 buf[gecko_path_len] = 0;
1154
1156 heap_free(buf);
1157 return ret;
1158}
1159
1160void set_viewer_zoom(NSContainer *nscontainer, float factor)
1161{
1162 nsIContentViewer *content_viewer;
1163 nsIDocShell *doc_shell;
1164 nsresult nsres;
1165
1166 TRACE("Setting to %f\n", factor);
1167
1168 nsres = get_nsinterface((nsISupports*)nscontainer->navigation, &IID_nsIDocShell, (void**)&doc_shell);
1169 assert(nsres == NS_OK);
1170
1171 nsres = nsIDocShell_GetContentViewer(doc_shell, &content_viewer);
1172 assert(nsres == NS_OK && content_viewer);
1173 nsIDocShell_Release(doc_shell);
1174
1175 nsres = nsIContentViewer_SetFullZoom(content_viewer, factor);
1176 if(NS_FAILED(nsres))
1177 ERR("SetFullZoom failed: %08x\n", nsres);
1178
1179 nsIContentViewer_Release(content_viewer);
1180}
1181
1184
1186
1188};
1189
1191{
1192 return CONTAINING_RECORD(iface, nsWeakReference, nsIWeakReference_iface);
1193}
1194
1196 nsIIDRef riid, void **result)
1197{
1199
1200 if(IsEqualGUID(&IID_nsISupports, riid)) {
1201 TRACE("(%p)->(IID_nsISupports %p)\n", This, result);
1202 *result = &This->nsIWeakReference_iface;
1203 }else if(IsEqualGUID(&IID_nsIWeakReference, riid)) {
1204 TRACE("(%p)->(IID_nsIWeakReference %p)\n", This, result);
1205 *result = &This->nsIWeakReference_iface;
1206 }else {
1207 WARN("(%p)->(%s %p)\n", This, debugstr_guid(riid), result);
1208 *result = NULL;
1209 return NS_NOINTERFACE;
1210 }
1211
1212 nsISupports_AddRef((nsISupports*)*result);
1213 return NS_OK;
1214}
1215
1217{
1220
1221 TRACE("(%p) ref=%d\n", This, ref);
1222
1223 return ref;
1224}
1225
1227{
1230
1231 TRACE("(%p) ref=%d\n", This, ref);
1232
1233 if(!ref) {
1234 assert(!This->nscontainer);
1235 heap_free(This);
1236 }
1237
1238 return ref;
1239}
1240
1242 const nsIID *riid, void **result)
1243{
1245
1246 if(!This->nscontainer)
1247 return NS_ERROR_NULL_POINTER;
1248
1249 return nsIWebBrowserChrome_QueryInterface(&This->nscontainer->nsIWebBrowserChrome_iface, riid, result);
1250}
1251
1252static const nsIWeakReferenceVtbl nsWeakReferenceVtbl = {
1257};
1258
1259/**********************************************************
1260 * nsIWebBrowserChrome interface
1261 */
1262
1264{
1265 return CONTAINING_RECORD(iface, NSContainer, nsIWebBrowserChrome_iface);
1266}
1267
1269 nsIIDRef riid, void **result)
1270{
1272
1273 *result = NULL;
1274 if(IsEqualGUID(&IID_nsISupports, riid)) {
1275 TRACE("(%p)->(IID_nsISupports, %p)\n", This, result);
1276 *result = &This->nsIWebBrowserChrome_iface;
1277 }else if(IsEqualGUID(&IID_nsIWebBrowserChrome, riid)) {
1278 TRACE("(%p)->(IID_nsIWebBrowserChrome, %p)\n", This, result);
1279 *result = &This->nsIWebBrowserChrome_iface;
1280 }else if(IsEqualGUID(&IID_nsIContextMenuListener, riid)) {
1281 TRACE("(%p)->(IID_nsIContextMenuListener, %p)\n", This, result);
1282 *result = &This->nsIContextMenuListener_iface;
1283 }else if(IsEqualGUID(&IID_nsIURIContentListener, riid)) {
1284 TRACE("(%p)->(IID_nsIURIContentListener %p)\n", This, result);
1285 *result = &This->nsIURIContentListener_iface;
1286 }else if(IsEqualGUID(&IID_nsIEmbeddingSiteWindow, riid)) {
1287 TRACE("(%p)->(IID_nsIEmbeddingSiteWindow %p)\n", This, result);
1288 *result = &This->nsIEmbeddingSiteWindow_iface;
1289 }else if(IsEqualGUID(&IID_nsITooltipListener, riid)) {
1290 TRACE("(%p)->(IID_nsITooltipListener %p)\n", This, result);
1291 *result = &This->nsITooltipListener_iface;
1292 }else if(IsEqualGUID(&IID_nsIInterfaceRequestor, riid)) {
1293 TRACE("(%p)->(IID_nsIInterfaceRequestor %p)\n", This, result);
1294 *result = &This->nsIInterfaceRequestor_iface;
1295 }else if(IsEqualGUID(&IID_nsISupportsWeakReference, riid)) {
1296 TRACE("(%p)->(IID_nsISupportsWeakReference %p)\n", This, result);
1297 *result = &This->nsISupportsWeakReference_iface;
1298 }
1299
1300 if(*result) {
1301 nsIWebBrowserChrome_AddRef(&This->nsIWebBrowserChrome_iface);
1302 return NS_OK;
1303 }
1304
1305 TRACE("(%p)->(%s %p)\n", This, debugstr_guid(riid), result);
1306 return NS_NOINTERFACE;
1307}
1308
1310{
1313
1314 TRACE("(%p) ref=%d\n", This, ref);
1315
1316 return ref;
1317}
1318
1320{
1323
1324 TRACE("(%p) ref=%d\n", This, ref);
1325
1326 if(!ref) {
1327 if(This->parent)
1328 nsIWebBrowserChrome_Release(&This->parent->nsIWebBrowserChrome_iface);
1329 if(This->weak_reference) {
1330 This->weak_reference->nscontainer = NULL;
1331 nsIWeakReference_Release(&This->weak_reference->nsIWeakReference_iface);
1332 }
1333 heap_free(This);
1334 }
1335
1336 return ref;
1337}
1338
1340 UINT32 statusType, const PRUnichar *status)
1341{
1343 TRACE("(%p)->(%d %s)\n", This, statusType, debugstr_w(status));
1344 return NS_OK;
1345}
1346
1348 nsIWebBrowser **aWebBrowser)
1349{
1351
1352 TRACE("(%p)->(%p)\n", This, aWebBrowser);
1353
1354 if(!aWebBrowser)
1355 return NS_ERROR_INVALID_ARG;
1356
1357 if(This->webbrowser)
1358 nsIWebBrowser_AddRef(This->webbrowser);
1359 *aWebBrowser = This->webbrowser;
1360 return S_OK;
1361}
1362
1364 nsIWebBrowser *aWebBrowser)
1365{
1367
1368 TRACE("(%p)->(%p)\n", This, aWebBrowser);
1369
1370 if(aWebBrowser != This->webbrowser)
1371 ERR("Wrong nsWebBrowser!\n");
1372
1373 return NS_OK;
1374}
1375
1377 UINT32 *aChromeFlags)
1378{
1380 WARN("(%p)->(%p)\n", This, aChromeFlags);
1382}
1383
1385 UINT32 aChromeFlags)
1386{
1388 WARN("(%p)->(%08x)\n", This, aChromeFlags);
1390}
1391
1393{
1395 TRACE("(%p)\n", This);
1397}
1398
1400 LONG aCX, LONG aCY)
1401{
1403 WARN("(%p)->(%d %d)\n", This, aCX, aCY);
1405}
1406
1408{
1410 WARN("(%p)\n", This);
1412}
1413
1415{
1417 WARN("(%p)->(%p)\n", This, _retval);
1419}
1420
1422 nsresult aStatus)
1423{
1425 WARN("(%p)->(%08x)\n", This, aStatus);
1427}
1428
1429static const nsIWebBrowserChromeVtbl nsWebBrowserChromeVtbl = {
1443};
1444
1445/**********************************************************
1446 * nsIContextMenuListener interface
1447 */
1448
1450{
1451 return CONTAINING_RECORD(iface, NSContainer, nsIContextMenuListener_iface);
1452}
1453
1455 nsIIDRef riid, void **result)
1456{
1458 return nsIWebBrowserChrome_QueryInterface(&This->nsIWebBrowserChrome_iface, riid, result);
1459}
1460
1462{
1464 return nsIWebBrowserChrome_AddRef(&This->nsIWebBrowserChrome_iface);
1465}
1466
1468{
1470 return nsIWebBrowserChrome_Release(&This->nsIWebBrowserChrome_iface);
1471}
1472
1474 UINT32 aContextFlags, nsIDOMEvent *aEvent, nsIDOMNode *aNode)
1475{
1479 POINT pt;
1480 DWORD dwID = CONTEXT_MENU_DEFAULT;
1481 nsresult nsres;
1482 HRESULT hres;
1483
1484 TRACE("(%p)->(%08x %p %p)\n", This, aContextFlags, aEvent, aNode);
1485
1486 fire_event(This->doc->basedoc.doc_node /* FIXME */, EVENTID_CONTEXTMENU, TRUE, aNode, aEvent, NULL);
1487
1488 nsres = nsIDOMEvent_QueryInterface(aEvent, &IID_nsIDOMMouseEvent, (void**)&event);
1489 if(NS_FAILED(nsres)) {
1490 ERR("Could not get nsIDOMMouseEvent interface: %08x\n", nsres);
1491 return nsres;
1492 }
1493
1494 nsIDOMMouseEvent_GetScreenX(event, &pt.x);
1495 nsIDOMMouseEvent_GetScreenY(event, &pt.y);
1496 nsIDOMMouseEvent_Release(event);
1497
1498 switch(aContextFlags) {
1499 case CONTEXT_NONE:
1500 case CONTEXT_DOCUMENT:
1501 case CONTEXT_TEXT: {
1503
1504 nsres = nsIDOMHTMLDocument_GetSelection(This->doc->basedoc.doc_node->nsdoc, &selection);
1505 if(NS_SUCCEEDED(nsres) && selection) {
1506 cpp_bool is_collapsed;
1507
1508 /* FIXME: Check if the click was inside selection. */
1509 nsres = nsISelection_GetIsCollapsed(selection, &is_collapsed);
1510 nsISelection_Release(selection);
1511 if(NS_SUCCEEDED(nsres) && !is_collapsed)
1512 dwID = CONTEXT_MENU_TEXTSELECT;
1513 }
1514 break;
1515 }
1516 case CONTEXT_IMAGE:
1517 case CONTEXT_IMAGE|CONTEXT_LINK:
1518 dwID = CONTEXT_MENU_IMAGE;
1519 break;
1520 case CONTEXT_LINK:
1521 dwID = CONTEXT_MENU_ANCHOR;
1522 break;
1523 case CONTEXT_INPUT:
1524 dwID = CONTEXT_MENU_CONTROL;
1525 break;
1526 default:
1527 FIXME("aContextFlags=%08x\n", aContextFlags);
1528 };
1529
1530 hres = get_node(This->doc->basedoc.doc_node, aNode, TRUE, &node);
1531 if(FAILED(hres))
1532 return NS_ERROR_FAILURE;
1533
1534 show_context_menu(This->doc, dwID, &pt, (IDispatch*)&node->IHTMLDOMNode_iface);
1536 return NS_OK;
1537}
1538
1539static const nsIContextMenuListenerVtbl nsContextMenuListenerVtbl = {
1544};
1545
1546/**********************************************************
1547 * nsIURIContentListener interface
1548 */
1549
1551{
1552 return CONTAINING_RECORD(iface, NSContainer, nsIURIContentListener_iface);
1553}
1554
1556 nsIIDRef riid, void **result)
1557{
1559 return nsIWebBrowserChrome_QueryInterface(&This->nsIWebBrowserChrome_iface, riid, result);
1560}
1561
1563{
1565 return nsIWebBrowserChrome_AddRef(&This->nsIWebBrowserChrome_iface);
1566}
1567
1569{
1571 return nsIWebBrowserChrome_Release(&This->nsIWebBrowserChrome_iface);
1572}
1573
1575 nsIURI *aURI, cpp_bool *_retval)
1576{
1578 nsACString spec_str;
1579 const char *spec;
1580 nsresult nsres;
1581
1582 nsACString_Init(&spec_str, NULL);
1583 nsIURI_GetSpec(aURI, &spec_str);
1584 nsACString_GetData(&spec_str, &spec);
1585
1586 TRACE("(%p)->(%p(%s) %p)\n", This, aURI, debugstr_a(spec), _retval);
1587
1588 nsACString_Finish(&spec_str);
1589
1590 nsres = on_start_uri_open(This, aURI, _retval);
1591 if(NS_FAILED(nsres))
1592 return nsres;
1593
1594 return !*_retval && This->content_listener
1595 ? nsIURIContentListener_OnStartURIOpen(This->content_listener, aURI, _retval)
1596 : NS_OK;
1597}
1598
1600 const nsACString *aContentType, cpp_bool aIsContentPreferred, nsIRequest *aRequest,
1601 nsIStreamListener **aContentHandler, cpp_bool *_retval)
1602{
1604
1605 TRACE("(%p)->(%p %x %p %p %p)\n", This, aContentType, aIsContentPreferred,
1606 aRequest, aContentHandler, _retval);
1607
1608 return This->content_listener
1609 ? nsIURIContentListener_DoContent(This->content_listener, aContentType,
1610 aIsContentPreferred, aRequest, aContentHandler, _retval)
1612}
1613
1615 const char *aContentType, char **aDesiredContentType, cpp_bool *_retval)
1616{
1618
1619 TRACE("(%p)->(%s %p %p)\n", This, debugstr_a(aContentType), aDesiredContentType, _retval);
1620
1621 /* FIXME: Should we do something here? */
1622 *_retval = TRUE;
1623
1624 return This->content_listener
1625 ? nsIURIContentListener_IsPreferred(This->content_listener, aContentType,
1626 aDesiredContentType, _retval)
1627 : NS_OK;
1628}
1629
1631 const char *aContentType, cpp_bool aIsContentPreferred, char **aDesiredContentType,
1632 cpp_bool *_retval)
1633{
1635
1636 TRACE("(%p)->(%s %x %p %p)\n", This, debugstr_a(aContentType), aIsContentPreferred,
1637 aDesiredContentType, _retval);
1638
1639 return This->content_listener
1640 ? nsIURIContentListener_CanHandleContent(This->content_listener, aContentType,
1641 aIsContentPreferred, aDesiredContentType, _retval)
1643}
1644
1646 nsISupports **aLoadCookie)
1647{
1649
1650 WARN("(%p)->(%p)\n", This, aLoadCookie);
1651
1652 return This->content_listener
1653 ? nsIURIContentListener_GetLoadCookie(This->content_listener, aLoadCookie)
1655}
1656
1658 nsISupports *aLoadCookie)
1659{
1661
1662 WARN("(%p)->(%p)\n", This, aLoadCookie);
1663
1664 return This->content_listener
1665 ? nsIURIContentListener_SetLoadCookie(This->content_listener, aLoadCookie)
1667}
1668
1670 nsIURIContentListener **aParentContentListener)
1671{
1673
1674 TRACE("(%p)->(%p)\n", This, aParentContentListener);
1675
1676 if(This->content_listener)
1677 nsIURIContentListener_AddRef(This->content_listener);
1678
1679 *aParentContentListener = This->content_listener;
1680 return NS_OK;
1681}
1682
1684 nsIURIContentListener *aParentContentListener)
1685{
1687
1688 TRACE("(%p)->(%p)\n", This, aParentContentListener);
1689
1690 if(aParentContentListener == &This->nsIURIContentListener_iface)
1691 return NS_OK;
1692
1693 if(This->content_listener)
1694 nsIURIContentListener_Release(This->content_listener);
1695
1696 This->content_listener = aParentContentListener;
1697 if(This->content_listener)
1698 nsIURIContentListener_AddRef(This->content_listener);
1699
1700 return NS_OK;
1701}
1702
1703static const nsIURIContentListenerVtbl nsURIContentListenerVtbl = {
1715};
1716
1717/**********************************************************
1718 * nsIEmbeddinSiteWindow interface
1719 */
1720
1722{
1723 return CONTAINING_RECORD(iface, NSContainer, nsIEmbeddingSiteWindow_iface);
1724}
1725
1727 nsIIDRef riid, void **result)
1728{
1730 return nsIWebBrowserChrome_QueryInterface(&This->nsIWebBrowserChrome_iface, riid, result);
1731}
1732
1734{
1736 return nsIWebBrowserChrome_AddRef(&This->nsIWebBrowserChrome_iface);
1737}
1738
1740{
1742 return nsIWebBrowserChrome_Release(&This->nsIWebBrowserChrome_iface);
1743}
1744
1747{
1749 WARN("(%p)->(%08x %d %d %d %d)\n", This, flags, x, y, cx, cy);
1751}
1752
1754 UINT32 flags, LONG *x, LONG *y, LONG *cx, LONG *cy)
1755{
1757 RECT r;
1758
1759 TRACE("(%p)->(%x %p %p %p %p)\n", This, flags, x, y, cx, cy);
1760
1761 if(!GetWindowRect(This->hwnd, &r)) {
1762 ERR("GetWindowRect failed\n");
1763 return NS_ERROR_FAILURE;
1764 }
1765
1766 if(x)
1767 *x = r.left;
1768 if(y)
1769 *y = r.top;
1770 if(cx)
1771 *cx = r.right-r.left;
1772 if(cy)
1773 *cy = r.bottom-r.top;
1774 return NS_OK;
1775}
1776
1778{
1780
1781 TRACE("(%p)\n", This);
1782
1783 return nsIBaseWindow_SetFocus(This->window);
1784}
1785
1787 cpp_bool *aVisibility)
1788{
1790
1791 TRACE("(%p)->(%p)\n", This, aVisibility);
1792
1793 *aVisibility = This->doc && This->doc->hwnd && IsWindowVisible(This->doc->hwnd);
1794 return NS_OK;
1795}
1796
1798 cpp_bool aVisibility)
1799{
1801
1802 TRACE("(%p)->(%x)\n", This, aVisibility);
1803
1804 return NS_OK;
1805}
1806
1808 PRUnichar **aTitle)
1809{
1811 WARN("(%p)->(%p)\n", This, aTitle);
1813}
1814
1816 const PRUnichar *aTitle)
1817{
1819 WARN("(%p)->(%s)\n", This, debugstr_w(aTitle));
1821}
1822
1824 void **aSiteWindow)
1825{
1827
1828 TRACE("(%p)->(%p)\n", This, aSiteWindow);
1829
1830 *aSiteWindow = This->hwnd;
1831 return NS_OK;
1832}
1833
1834static const nsIEmbeddingSiteWindowVtbl nsEmbeddingSiteWindowVtbl = {
1846};
1847
1849{
1850 return CONTAINING_RECORD(iface, NSContainer, nsITooltipListener_iface);
1851}
1852
1854 void **result)
1855{
1857 return nsIWebBrowserChrome_QueryInterface(&This->nsIWebBrowserChrome_iface, riid, result);
1858}
1859
1861{
1863 return nsIWebBrowserChrome_AddRef(&This->nsIWebBrowserChrome_iface);
1864}
1865
1867{
1869 return nsIWebBrowserChrome_Release(&This->nsIWebBrowserChrome_iface);
1870}
1871
1873 LONG aXCoord, LONG aYCoord, const PRUnichar *aTipText)
1874{
1876
1877 if (This->doc)
1878 show_tooltip(This->doc, aXCoord, aYCoord, aTipText);
1879
1880 return NS_OK;
1881}
1882
1884{
1886
1887 if (This->doc)
1888 hide_tooltip(This->doc);
1889
1890 return NS_OK;
1891}
1892
1893static const nsITooltipListenerVtbl nsTooltipListenerVtbl = {
1899};
1900
1902{
1903 return CONTAINING_RECORD(iface, NSContainer, nsIInterfaceRequestor_iface);
1904}
1905
1907 nsIIDRef riid, void **result)
1908{
1910 return nsIWebBrowserChrome_QueryInterface(&This->nsIWebBrowserChrome_iface, riid, result);
1911}
1912
1914{
1916 return nsIWebBrowserChrome_AddRef(&This->nsIWebBrowserChrome_iface);
1917}
1918
1920{
1922 return nsIWebBrowserChrome_Release(&This->nsIWebBrowserChrome_iface);
1923}
1924
1926 nsIIDRef riid, void **result)
1927{
1929
1930 if(IsEqualGUID(&IID_nsIDOMWindow, riid)) {
1931 TRACE("(%p)->(IID_nsIDOMWindow %p)\n", This, result);
1932 return nsIWebBrowser_GetContentDOMWindow(This->webbrowser, (nsIDOMWindow**)result);
1933 }
1934
1935 return nsIWebBrowserChrome_QueryInterface(&This->nsIWebBrowserChrome_iface, riid, result);
1936}
1937
1938static const nsIInterfaceRequestorVtbl nsInterfaceRequestorVtbl = {
1943};
1944
1946{
1947 return CONTAINING_RECORD(iface, NSContainer, nsISupportsWeakReference_iface);
1948}
1949
1951 nsIIDRef riid, void **result)
1952{
1954 return nsIWebBrowserChrome_QueryInterface(&This->nsIWebBrowserChrome_iface, riid, result);
1955}
1956
1958{
1960 return nsIWebBrowserChrome_AddRef(&This->nsIWebBrowserChrome_iface);
1961}
1962
1964{
1966 return nsIWebBrowserChrome_Release(&This->nsIWebBrowserChrome_iface);
1967}
1968
1970 nsIWeakReference **_retval)
1971{
1973
1974 TRACE("(%p)->(%p)\n", This, _retval);
1975
1976 if(!This->weak_reference) {
1977 This->weak_reference = heap_alloc(sizeof(nsWeakReference));
1978 if(!This->weak_reference)
1980
1981 This->weak_reference->nsIWeakReference_iface.lpVtbl = &nsWeakReferenceVtbl;
1982 This->weak_reference->ref = 1;
1983 This->weak_reference->nscontainer = This;
1984 }
1985
1986 *_retval = &This->weak_reference->nsIWeakReference_iface;
1987 nsIWeakReference_AddRef(*_retval);
1988 return NS_OK;
1989}
1990
1991static const nsISupportsWeakReferenceVtbl nsSupportsWeakReferenceVtbl = {
1996};
1997
1999{
2000 nsIWebBrowserSetup *wbsetup;
2001 nsIScrollable *scrollable;
2002 nsresult nsres;
2003
2004 nsres = nsIComponentManager_CreateInstanceByContractID(pCompMgr, NS_WEBBROWSER_CONTRACTID,
2005 NULL, &IID_nsIWebBrowser, (void**)&nscontainer->webbrowser);
2006 if(NS_FAILED(nsres)) {
2007 ERR("Creating WebBrowser failed: %08x\n", nsres);
2008 return E_FAIL;
2009 }
2010
2011 nsres = nsIWebBrowser_SetContainerWindow(nscontainer->webbrowser, &nscontainer->nsIWebBrowserChrome_iface);
2012 if(NS_FAILED(nsres)) {
2013 ERR("SetContainerWindow failed: %08x\n", nsres);
2014 return E_FAIL;
2015 }
2016
2017 nsres = nsIWebBrowser_QueryInterface(nscontainer->webbrowser, &IID_nsIBaseWindow,
2018 (void**)&nscontainer->window);
2019 if(NS_FAILED(nsres)) {
2020 ERR("Could not get nsIBaseWindow interface: %08x\n", nsres);
2021 return E_FAIL;
2022 }
2023
2024 nsres = nsIWebBrowser_QueryInterface(nscontainer->webbrowser, &IID_nsIWebBrowserSetup,
2025 (void**)&wbsetup);
2026 if(NS_SUCCEEDED(nsres)) {
2027 nsres = nsIWebBrowserSetup_SetProperty(wbsetup, SETUP_IS_CHROME_WRAPPER, FALSE);
2028 nsIWebBrowserSetup_Release(wbsetup);
2029 if(NS_FAILED(nsres)) {
2030 ERR("SetProperty(SETUP_IS_CHROME_WRAPPER) failed: %08x\n", nsres);
2031 return E_FAIL;
2032 }
2033 }else {
2034 ERR("Could not get nsIWebBrowserSetup interface\n");
2035 return E_FAIL;
2036 }
2037
2038 nsres = nsIWebBrowser_QueryInterface(nscontainer->webbrowser, &IID_nsIWebNavigation,
2039 (void**)&nscontainer->navigation);
2040 if(NS_FAILED(nsres)) {
2041 ERR("Could not get nsIWebNavigation interface: %08x\n", nsres);
2042 return E_FAIL;
2043 }
2044
2045 nsres = nsIWebBrowser_QueryInterface(nscontainer->webbrowser, &IID_nsIWebBrowserFocus,
2046 (void**)&nscontainer->focus);
2047 if(NS_FAILED(nsres)) {
2048 ERR("Could not get nsIWebBrowserFocus interface: %08x\n", nsres);
2049 return E_FAIL;
2050 }
2051
2052 if(!nscontainer_class) {
2055 return E_FAIL;
2056 }
2057
2058 nscontainer->hwnd = CreateWindowExW(0, wszNsContainer, NULL,
2059 WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, 0, 0, 100, 100,
2060 GetDesktopWindow(), NULL, hInst, nscontainer);
2061 if(!nscontainer->hwnd) {
2062 WARN("Could not create window\n");
2063 return E_FAIL;
2064 }
2065
2066 nsres = nsIBaseWindow_InitWindow(nscontainer->window, nscontainer->hwnd, NULL, 0, 0, 100, 100);
2067 if(NS_SUCCEEDED(nsres)) {
2068 nsres = nsIBaseWindow_Create(nscontainer->window);
2069 if(NS_FAILED(nsres)) {
2070 WARN("Creating window failed: %08x\n", nsres);
2071 return E_FAIL;
2072 }
2073
2074 nsIBaseWindow_SetVisibility(nscontainer->window, FALSE);
2075 nsIBaseWindow_SetEnabled(nscontainer->window, FALSE);
2076 }else {
2077 ERR("InitWindow failed: %08x\n", nsres);
2078 return E_FAIL;
2079 }
2080
2081 nsres = nsIWebBrowser_SetParentURIContentListener(nscontainer->webbrowser,
2082 &nscontainer->nsIURIContentListener_iface);
2083 if(NS_FAILED(nsres))
2084 ERR("SetParentURIContentListener failed: %08x\n", nsres);
2085
2086 nsres = nsIWebBrowser_QueryInterface(nscontainer->webbrowser, &IID_nsIScrollable, (void**)&scrollable);
2087 if(NS_SUCCEEDED(nsres)) {
2088 nsres = nsIScrollable_SetDefaultScrollbarPreferences(scrollable,
2089 ScrollOrientation_Y, Scrollbar_Always);
2090 if(NS_FAILED(nsres))
2091 ERR("Could not set default Y scrollbar prefs: %08x\n", nsres);
2092
2093 nsres = nsIScrollable_SetDefaultScrollbarPreferences(scrollable,
2094 ScrollOrientation_X, Scrollbar_Auto);
2095 if(NS_FAILED(nsres))
2096 ERR("Could not set default X scrollbar prefs: %08x\n", nsres);
2097
2098 nsIScrollable_Release(scrollable);
2099 }else {
2100 ERR("Could not get nsIScrollable: %08x\n", nsres);
2101 }
2102
2103 return S_OK;
2104}
2105
2107{
2109 HRESULT hres;
2110
2111 if(!load_gecko())
2113
2114 ret = heap_alloc_zero(sizeof(NSContainer));
2115 if(!ret)
2116 return E_OUTOFMEMORY;
2117
2118 ret->nsIWebBrowserChrome_iface.lpVtbl = &nsWebBrowserChromeVtbl;
2119 ret->nsIContextMenuListener_iface.lpVtbl = &nsContextMenuListenerVtbl;
2120 ret->nsIURIContentListener_iface.lpVtbl = &nsURIContentListenerVtbl;
2121 ret->nsIEmbeddingSiteWindow_iface.lpVtbl = &nsEmbeddingSiteWindowVtbl;
2122 ret->nsITooltipListener_iface.lpVtbl = &nsTooltipListenerVtbl;
2123 ret->nsIInterfaceRequestor_iface.lpVtbl = &nsInterfaceRequestorVtbl;
2124 ret->nsISupportsWeakReference_iface.lpVtbl = &nsSupportsWeakReferenceVtbl;
2125
2126 ret->doc = doc;
2127 ret->ref = 1;
2128
2130 if(SUCCEEDED(hres))
2131 *_ret = ret;
2132 else
2133 nsIWebBrowserChrome_Release(&ret->nsIWebBrowserChrome_iface);
2134 return hres;
2135}
2136
2138{
2139 TRACE("(%p)\n", This);
2140
2141 This->doc = NULL;
2142
2143 ShowWindow(This->hwnd, SW_HIDE);
2144 SetParent(This->hwnd, NULL);
2145
2146 nsIBaseWindow_SetVisibility(This->window, FALSE);
2147 nsIBaseWindow_Destroy(This->window);
2148
2149 nsIWebBrowser_SetContainerWindow(This->webbrowser, NULL);
2150
2151 nsIWebBrowser_Release(This->webbrowser);
2152 This->webbrowser = NULL;
2153
2154 nsIWebNavigation_Release(This->navigation);
2155 This->navigation = NULL;
2156
2157 nsIBaseWindow_Release(This->window);
2158 This->window = NULL;
2159
2160 nsIWebBrowserFocus_Release(This->focus);
2161 This->focus = NULL;
2162
2163 if(This->editor_controller) {
2164 nsIController_Release(This->editor_controller);
2165 This->editor_controller = NULL;
2166 }
2167
2168 if(This->editor) {
2169 nsIEditor_Release(This->editor);
2170 This->editor = NULL;
2171 }
2172
2173 if(This->content_listener) {
2174 nsIURIContentListener_Release(This->content_listener);
2175 This->content_listener = NULL;
2176 }
2177
2178 if(This->hwnd) {
2179 DestroyWindow(This->hwnd);
2180 This->hwnd = NULL;
2181 }
2182
2183 nsIWebBrowserChrome_Release(&This->nsIWebBrowserChrome_iface);
2184}
2185
2187{
2189 nsIPrincipal *nspri;
2190 nsIGlobalObject *nsglo;
2191 nsIXMLHttpRequest *nsxhr;
2192 nsresult nsres;
2193
2194 nsres = nsIServiceManager_GetServiceByContractID(pServMgr,
2196 &IID_nsIScriptSecurityManager, (void**)&secman);
2197 if(NS_FAILED(nsres)) {
2198 ERR("Could not get sec manager service: %08x\n", nsres);
2199 return NULL;
2200 }
2201
2202 nsres = nsIScriptSecurityManager_GetSystemPrincipal(secman, &nspri);
2203 nsIScriptSecurityManager_Release(secman);
2204 if(NS_FAILED(nsres)) {
2205 ERR("GetSystemPrincipal failed: %08x\n", nsres);
2206 return NULL;
2207 }
2208
2209 nsres = nsIDOMWindow_QueryInterface(nswindow, &IID_nsIGlobalObject, (void **)&nsglo);
2210 assert(nsres == NS_OK);
2211
2212 nsres = nsIComponentManager_CreateInstanceByContractID(pCompMgr,
2213 NS_XMLHTTPREQUEST_CONTRACTID, NULL, &IID_nsIXMLHttpRequest,
2214 (void**)&nsxhr);
2215 if(NS_FAILED(nsres)) {
2216 ERR("Could not get nsIXMLHttpRequest: %08x\n", nsres);
2217 nsISupports_Release(nspri);
2218 nsIGlobalObject_Release(nsglo);
2219 return NULL;
2220 }
2221
2222 nsres = nsIXMLHttpRequest_Init(nsxhr, nspri, NULL, nsglo, NULL, NULL);
2223
2224 nsISupports_Release(nspri);
2225 nsIGlobalObject_Release(nsglo);
2226 if(NS_FAILED(nsres)) {
2227 ERR("nsIXMLHttpRequest_Init failed: %08x\n", nsres);
2228 nsIXMLHttpRequest_Release(nsxhr);
2229 return NULL;
2230 }
2231 return nsxhr;
2232}
std::set< LANGID > langs
Definition: LocaleTests.cpp:67
unsigned short UINT16
Definition: actypes.h:129
#define read
Definition: acwin.h:97
static void * heap_alloc(size_t len)
Definition: appwiz.h:66
static BOOL heap_free(void *mem)
Definition: appwiz.h:76
#define InterlockedIncrement
Definition: armddk.h:53
#define InterlockedDecrement
Definition: armddk.h:52
#define msg(x)
Definition: auth_time.c:54
#define FIXME(fmt,...)
Definition: precomp.h:53
#define WARN(fmt,...)
Definition: precomp.h:61
#define ERR(fmt,...)
Definition: precomp.h:57
nsresult on_start_uri_open(NSContainer *, nsIURI *, cpp_bool *) DECLSPEC_HIDDEN
Definition: nsio.c:4019
#define RegCloseKey(hKey)
Definition: registry.h:49
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define GECKO_VERSION
Definition: nsiface.idl:28
int selection
Definition: ctm.c:92
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
#define E_NOTIMPL
Definition: ddrawi.h:99
#define E_FAIL
Definition: ddrawi.h:102
#define ERROR_SUCCESS
Definition: deptool.c:10
WORD ATOM
Definition: dimm.idl:113
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
LONG WINAPI RegOpenKeyA(HKEY hKey, LPCSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3234
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3268
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
Definition: reg.c:4009
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
unsigned char cpp_bool
Definition: atl.c:35
#define CDECL
Definition: compat.h:29
#define CloseHandle
Definition: compat.h:739
#define GetEnvironmentVariableW(x, y, z)
Definition: compat.h:755
#define OPEN_EXISTING
Definition: compat.h:775
#define ReadFile(a, b, c, d, e)
Definition: compat.h:742
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define FreeLibrary(x)
Definition: compat.h:748
OLECHAR * BSTR
Definition: compat.h:2293
#define GENERIC_READ
Definition: compat.h:135
#define TRACE_ON(x)
Definition: compat.h:75
#define MAX_PATH
Definition: compat.h:34
#define CreateFileW
Definition: compat.h:741
#define WINE_DECLARE_DEBUG_CHANNEL(x)
Definition: compat.h:45
#define FILE_ATTRIBUTE_NORMAL
Definition: compat.h:137
#define FILE_SHARE_READ
Definition: compat.h:136
static const WCHAR version[]
Definition: asmname.c:66
BOOL WINAPI DECLSPEC_HOTPATCH SetEnvironmentVariableW(IN LPCWSTR lpName, IN LPCWSTR lpValue)
Definition: environ.c:232
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
Definition: loader.c:288
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2232
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW(LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
Definition: proc.c:4491
HRESULT WINAPI UrlUnescapeW(WCHAR *url, WCHAR *unescaped, DWORD *unescaped_len, DWORD flags)
Definition: path.c:2912
#define assert(_expr)
Definition: assert.h:32
_ACRTIMP int __cdecl strcmp(const char *, const char *)
Definition: string.c:3324
HRESULT WINAPI SHGetFolderPathW(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath)
Definition: shellpath.c:2717
#define pt(x, y)
Definition: drawing.c:79
return ret
Definition: mutex.c:147
#define INFINITE
Definition: serial.h:102
HINSTANCE hInst
Definition: dxdiag.c:13
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
struct _cl_event * event
Definition: glext.h:7739
GLuint res
Definition: glext.h:9613
GLsizeiptr size
Definition: glext.h:5919
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
GLbitfield flags
Definition: glext.h:7161
GLuint GLfloat * val
Definition: glext.h:7180
GLuint64EXT * result
Definition: glext.h:11304
GLfloat GLfloat p
Definition: glext.h:8902
GLenum GLsizei len
Definition: glext.h:6722
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 factor
Definition: glfuncs.h:178
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
unsigned int UINT
Definition: sysinfo.c:13
void fire_event(HTMLDocumentNode *doc, eventid_t eid, BOOL set_event, nsIDOMNode *target, nsIDOMEvent *nsevent, IDispatch *script_this)
Definition: htmlevent.c:1195
@ EVENTID_CONTEXTMENU
Definition: htmlevent.h:27
HRESULT get_node(HTMLDocumentNode *This, nsIDOMNode *nsnode, BOOL create, HTMLDOMNode **ret)
Definition: htmlnode.c:1339
void init_node_cc(void)
Definition: htmlnode.c:1328
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
#define S_OK
Definition: intsafe.h:52
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
uint32_t entry
Definition: isohybrid.c:63
#define debugstr_guid
Definition: kernel32.h:35
#define debugstr_a
Definition: kernel32.h:31
#define debugstr_w
Definition: kernel32.h:32
#define REG_SZ
Definition: layer.c:22
LONG_PTR LPARAM
Definition: minwindef.h:175
LONG_PTR LRESULT
Definition: minwindef.h:176
UINT_PTR WPARAM
Definition: minwindef.h:174
char version_string[]
Definition: mkisofs.c:71
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define WARN_ON(c)
Definition: module.h:257
#define MESSAGE
Definition: options.h:86
static PVOID ptr
Definition: dispmode.c:27
HRESULT hres
Definition: protocol.c:465
static PROCESS_INFORMATION pi
Definition: debugger.c:2303
static const WCHAR pathW[]
Definition: path.c:2368
static SYSTEM_INFO si
Definition: virtual.c:39
static LPCWSTR file_name
Definition: protocol.c:152
#define NS_OK
void register_nsservice(nsIComponentRegistrar *, nsIServiceManager *) DECLSPEC_HIDDEN
Definition: nsservice.c:372
#define NS_ERROR_INVALID_ARG
#define NS_ERROR_NOT_IMPLEMENTED
void init_nsio(nsIComponentManager *, nsIComponentRegistrar *) DECLSPEC_HIDDEN
Definition: nsio.c:4048
#define NS_ERROR_NULL_POINTER
#define NSAPI
#define NS_NOINTERFACE
void hide_tooltip(HTMLDocumentObj *) DECLSPEC_HIDDEN
Definition: view.c:386
static void node_release(HTMLDOMNode *node)
static WCHAR * heap_strdupUtoW(const char *str)
#define NS_ERROR_OUT_OF_MEMORY
void show_tooltip(HTMLDocumentObj *, DWORD, DWORD, LPCWSTR) DECLSPEC_HIDDEN
Definition: view.c:368
#define NS_BINDING_ABORTED
#define NS_ERROR_FAILURE
#define NS_SUCCEEDED(res)
#define NS_ERROR_INVALID_POINTER
void init_mutation(nsIComponentManager *) DECLSPEC_HIDDEN
Definition: mutation.c:774
void show_context_menu(HTMLDocumentObj *, DWORD, POINT *, IDispatch *) DECLSPEC_HIDDEN
Definition: olecmd.c:936
void release_nsio(void) DECLSPEC_HIDDEN
Definition: nsio.c:4085
#define NS_ERROR_UNEXPECTED
#define NS_FAILED(res)
static void set_lang(nsIPrefBranch *pref)
Definition: nsembed.c:631
static BOOL load_xul(const PRUnichar *gre_path)
Definition: nsembed.c:472
static nsrefcnt NSAPI nsContextMenuListener_Release(nsIContextMenuListener *iface)
Definition: nsembed.c:1467
static NSContainer * impl_from_nsIWebBrowserChrome(nsIWebBrowserChrome *iface)
Definition: nsembed.c:1263
static nsrefcnt NSAPI nsInterfaceRequestor_AddRef(nsIInterfaceRequestor *iface)
Definition: nsembed.c:1913
nsIWritableVariant * create_nsvariant(void)
Definition: nsembed.c:912
static nsrefcnt NSAPI nsSupportsWeakReference_Release(nsISupportsWeakReference *iface)
Definition: nsembed.c:1963
static nsresult NSAPI nsEmbeddingSiteWindow_GetVisibility(nsIEmbeddingSiteWindow *iface, cpp_bool *aVisibility)
Definition: nsembed.c:1786
static const nsISimpleEnumeratorVtbl nsSingletonEnumeratorVtbl
Definition: nsembed.c:167
static unsigned gecko_path_len
Definition: nsembed.c:70
static nsICategoryManager * cat_mgr
Definition: nsembed.c:63
static nsresult NSAPI nsWebBrowserChrome_SetWebBrowser(nsIWebBrowserChrome *iface, nsIWebBrowser *aWebBrowser)
Definition: nsembed.c:1363
nsresult create_nsfile(const PRUnichar *path, nsIFile **ret)
Definition: nsembed.c:72
static void set_int_pref(nsIPrefBranch *pref, const char *pref_name, int val)
Definition: nsembed.c:613
static nsrefcnt NSAPI nsWeakReference_AddRef(nsIWeakReference *iface)
Definition: nsembed.c:1216
#define NS_CSTRING_CONTAINER_INIT_DEPEND
Definition: nsembed.c:40
static nsIFile **static const PRUnichar cpp_bool *static const char cpp_bool *static void *CDECL * NS_Alloc(SIZE_T)
static const nsIInterfaceRequestorVtbl nsInterfaceRequestorVtbl
Definition: nsembed.c:1938
nsIXMLHttpRequest * create_nsxhr(nsIDOMWindow *nswindow)
Definition: nsembed.c:2186
static BOOL install_wine_gecko(void)
Definition: nsembed.c:387
static nsresult NSAPI nsDirectoryServiceProvider2_QueryInterface(nsIDirectoryServiceProvider2 *iface, nsIIDRef riid, void **result)
Definition: nsembed.c:192
static HRESULT nsnode_to_nsstring_rec(nsIContentSerializer *serializer, nsIDOMNode *nsnode, nsAString *str)
Definition: nsembed.c:952
static nsresult NSAPI nsContextMenuListener_QueryInterface(nsIContextMenuListener *iface, nsIIDRef riid, void **result)
Definition: nsembed.c:1454
static nsresult NSAPI nsTooltipListener_OnHideTooltip(nsITooltipListener *iface)
Definition: nsembed.c:1883
static void set_bool_pref(nsIPrefBranch *pref, const char *pref_name, BOOL val)
Definition: nsembed.c:604
static nsresult NSAPI nsSupportsWeakReference_QueryInterface(nsISupportsWeakReference *iface, nsIIDRef riid, void **result)
Definition: nsembed.c:1950
static nsresult NSAPI nsURIContentListener_SetParentContentListener(nsIURIContentListener *iface, nsIURIContentListener *aParentContentListener)
Definition: nsembed.c:1683
static NSContainer * impl_from_nsIEmbeddingSiteWindow(nsIEmbeddingSiteWindow *iface)
Definition: nsembed.c:1721
#define PR_UINT32_MAX
Definition: nsembed.c:37
nsICommandParams * create_nscommand_params(void)
Definition: nsembed.c:895
BOOL load_gecko(void)
Definition: nsembed.c:742
static nsISimpleEnumerator * create_singleton_enumerator(nsISupports *value)
Definition: nsembed.c:175
static nsresult NSAPI nsEmbeddingSiteWindow_SetDimensions(nsIEmbeddingSiteWindow *iface, UINT32 flags, LONG x, LONG y, LONG cx, LONG cy)
Definition: nsembed.c:1745
static CRITICAL_SECTION cs_load_gecko
Definition: nsembed.c:733
static nsresult NSAPI nsSingletonEnumerator_QueryInterface(nsISimpleEnumerator *iface, nsIIDRef riid, void **ppv)
Definition: nsembed.c:97
static nsrefcnt NSAPI nsTooltipListener_AddRef(nsITooltipListener *iface)
Definition: nsembed.c:1860
static nsresult NSAPI nsWebBrowserChrome_DestroyBrowserWindow(nsIWebBrowserChrome *iface)
Definition: nsembed.c:1392
UINT32 PRUint32
Definition: nsembed.c:42
static nsSingletonEnumerator * impl_from_nsISimpleEnumerator(nsISimpleEnumerator *iface)
Definition: nsembed.c:92
static nsresult NSAPI nsWeakReference_QueryReferent(nsIWeakReference *iface, const nsIID *riid, void **result)
Definition: nsembed.c:1241
BOOL nsAString_Init(nsAString *str, const PRUnichar *data)
Definition: nsembed.c:817
static cpp_bool
Definition: nsembed.c:53
static nsresult NSAPI nsTooltipListener_QueryInterface(nsITooltipListener *iface, nsIIDRef riid, void **result)
Definition: nsembed.c:1853
static NSContainer * impl_from_nsIURIContentListener(nsIURIContentListener *iface)
Definition: nsembed.c:1550
static nsrefcnt NSAPI nsContextMenuListener_AddRef(nsIContextMenuListener *iface)
Definition: nsembed.c:1461
static const nsISupportsWeakReferenceVtbl nsSupportsWeakReferenceVtbl
Definition: nsembed.c:1991
HRESULT create_nscontainer(HTMLDocumentObj *doc, NSContainer **_ret)
Definition: nsembed.c:2106
static nsrefcnt NSAPI nsSingletonEnumerator_AddRef(nsISimpleEnumerator *iface)
Definition: nsembed.c:117
#define NS_WEBBROWSER_CONTRACTID
Definition: nsembed.c:27
static nsresult NSAPI nsURIContentListener_QueryInterface(nsIURIContentListener *iface, nsIIDRef riid, void **result)
Definition: nsembed.c:1555
static nsresult NSAPI nsWebBrowserChrome_ShowAsModal(nsIWebBrowserChrome *iface)
Definition: nsembed.c:1407
static nsresult NSAPI nsDirectoryServiceProvider2_GetFile(nsIDirectoryServiceProvider2 *iface, const char *prop, cpp_bool *persistent, nsIFile **_retval)
Definition: nsembed.c:259
static nsrefcnt NSAPI nsDirectoryServiceProvider2_AddRef(nsIDirectoryServiceProvider2 *iface)
Definition: nsembed.c:214
static const nsITooltipListenerVtbl nsTooltipListenerVtbl
Definition: nsembed.c:1893
static nsresult NSAPI nsURIContentListener_SetLoadCookie(nsIURIContentListener *iface, nsISupports *aLoadCookie)
Definition: nsembed.c:1657
static nsrefcnt NSAPI nsEmbeddingSiteWindow_AddRef(nsIEmbeddingSiteWindow *iface)
Definition: nsembed.c:1733
static NSContainer * impl_from_nsITooltipListener(nsITooltipListener *iface)
Definition: nsembed.c:1848
static nsIComponentManager * pCompMgr
Definition: nsembed.c:62
static nsresult NSAPI nsInterfaceRequestor_QueryInterface(nsIInterfaceRequestor *iface, nsIIDRef riid, void **result)
Definition: nsembed.c:1906
static nsresult NSAPI nsWebBrowserChrome_SizeBrowserTo(nsIWebBrowserChrome *iface, LONG aCX, LONG aCY)
Definition: nsembed.c:1399
void NSContainer_Release(NSContainer *This)
Definition: nsembed.c:2137
static const nsIWebBrowserChromeVtbl nsWebBrowserChromeVtbl
Definition: nsembed.c:1429
static BOOL load_wine_gecko(PRUnichar *gre_path)
Definition: nsembed.c:583
static CRITICAL_SECTION_DEBUG cs_load_gecko_dbg
Definition: nsembed.c:734
#define NS_COMMANDPARAMS_CONTRACTID
Definition: nsembed.c:28
static nsresult NSAPI nsSingletonEnumerator_HasMoreElements(nsISimpleEnumerator *iface, cpp_bool *_retval)
Definition: nsembed.c:143
static const nsIURIContentListenerVtbl nsURIContentListenerVtbl
Definition: nsembed.c:1703
static WCHAR gecko_path[MAX_PATH]
Definition: nsembed.c:69
static nsWeakReference * impl_from_nsIWeakReference(nsIWeakReference *iface)
Definition: nsembed.c:1190
static void set_environment(LPCWSTR gre_path)
Definition: nsembed.c:426
static nsrefcnt NSAPI nsSupportsWeakReference_AddRef(nsISupportsWeakReference *iface)
Definition: nsembed.c:1957
static nsresult NSAPI nsURIContentListener_GetLoadCookie(nsIURIContentListener *iface, nsISupports **aLoadCookie)
Definition: nsembed.c:1645
nsresult get_nsinterface(nsISupports *iface, REFIID riid, void **ppv)
Definition: nsembed.c:937
static const nsIWeakReferenceVtbl nsWeakReferenceVtbl
Definition: nsembed.c:1252
#define NS_VARIANT_CONTRACTID
Definition: nsembed.c:32
static nsresult NSAPI nsEmbeddingSiteWindow_GetDimensions(nsIEmbeddingSiteWindow *iface, UINT32 flags, LONG *x, LONG *y, LONG *cx, LONG *cy)
Definition: nsembed.c:1753
static nsIFile * plugin_directory
Definition: nsembed.c:64
static HINSTANCE xul_handle
Definition: nsembed.c:59
static nsresult NSAPI nsURIContentListener_DoContent(nsIURIContentListener *iface, const nsACString *aContentType, cpp_bool aIsContentPreferred, nsIRequest *aRequest, nsIStreamListener **aContentHandler, cpp_bool *_retval)
Definition: nsembed.c:1599
static nsresult NSAPI nsWebBrowserChrome_GetChromeFlags(nsIWebBrowserChrome *iface, UINT32 *aChromeFlags)
Definition: nsembed.c:1376
#define NS_PREFERENCES_CONTRACTID
Definition: nsembed.c:31
static nsresult NSAPI nsSingletonEnumerator_GetNext(nsISimpleEnumerator *iface, nsISupports **_retval)
Definition: nsembed.c:153
void nsAString_InitDepend(nsAString *str, const PRUnichar *data)
Definition: nsembed.c:826
static NSContainer * impl_from_nsIInterfaceRequestor(nsIInterfaceRequestor *iface)
Definition: nsembed.c:1901
static nsresult NSAPI nsEmbeddingSiteWindow_GetTitle(nsIEmbeddingSiteWindow *iface, PRUnichar **aTitle)
Definition: nsembed.c:1807
void nsfree(void *mem)
Definition: nsembed.c:783
static nsresult NSAPI nsURIContentListener_IsPreferred(nsIURIContentListener *iface, const char *aContentType, char **aDesiredContentType, cpp_bool *_retval)
Definition: nsembed.c:1614
static nsresult NSAPI nsSupportsWeakReference_GetWeakReference(nsISupportsWeakReference *iface, nsIWeakReference **_retval)
Definition: nsembed.c:1969
static nsresult NSAPI nsContextMenuListener_OnShowContextMenu(nsIContextMenuListener *iface, UINT32 aContextFlags, nsIDOMEvent *aEvent, nsIDOMNode *aNode)
Definition: nsembed.c:1473
static nsrefcnt NSAPI nsInterfaceRequestor_Release(nsIInterfaceRequestor *iface)
Definition: nsembed.c:1919
static const nsIEmbeddingSiteWindowVtbl nsEmbeddingSiteWindowVtbl
Definition: nsembed.c:1834
static nsresult NSAPI nsEmbeddingSiteWindow_SetVisibility(nsIEmbeddingSiteWindow *iface, cpp_bool aVisibility)
Definition: nsembed.c:1797
static nsresult NSAPI nsURIContentListener_CanHandleContent(nsIURIContentListener *iface, const char *aContentType, cpp_bool aIsContentPreferred, char **aDesiredContentType, cpp_bool *_retval)
Definition: nsembed.c:1630
static nsresult NSAPI nsEmbeddingSiteWindow_SetFocus(nsIEmbeddingSiteWindow *iface)
Definition: nsembed.c:1777
static nsrefcnt NSAPI nsTooltipListener_Release(nsITooltipListener *iface)
Definition: nsembed.c:1866
static void set_string_pref(nsIPrefBranch *pref, const char *pref_name, const char *val)
Definition: nsembed.c:622
static nsresult NSAPI nsWebBrowserChrome_SetChromeFlags(nsIWebBrowserChrome *iface, UINT32 aChromeFlags)
Definition: nsembed.c:1384
#define NS_SCRIPTSECURITYMANAGER_CONTRACTID
Definition: nsembed.c:35
static NSContainer * impl_from_nsISupportsWeakReference(nsISupportsWeakReference *iface)
Definition: nsembed.c:1945
static nsIServiceManager * pServMgr
Definition: nsembed.c:61
void get_editor_controller(NSContainer *This)
Definition: nsembed.c:1059
static nsresult NSAPI nsWebBrowserChrome_SetStatus(nsIWebBrowserChrome *iface, UINT32 statusType, const PRUnichar *status)
Definition: nsembed.c:1339
static nsresult NSAPI nsURIContentListener_GetParentContentListener(nsIURIContentListener *iface, nsIURIContentListener **aParentContentListener)
Definition: nsembed.c:1669
static HRESULT init_nscontainer(NSContainer *nscontainer)
Definition: nsembed.c:1998
#define NS_DLSYM(func)
static const nsIDirectoryServiceProvider2Vtbl nsDirectoryServiceProvider2Vtbl
Definition: nsembed.c:323
static BOOL check_version(LPCWSTR gre_path, const char *version_string)
Definition: nsembed.c:521
void close_gecko(void)
Definition: nsembed.c:1106
static nsresult NSAPI nsWebBrowserChrome_ExitModalEventLoop(nsIWebBrowserChrome *iface, nsresult aStatus)
Definition: nsembed.c:1421
static nsrefcnt NSAPI nsEmbeddingSiteWindow_Release(nsIEmbeddingSiteWindow *iface)
Definition: nsembed.c:1739
static nsIFile * profile_directory
Definition: nsembed.c:64
HRESULT return_nsstr(nsresult nsres, nsAString *nsstr, BSTR *p)
Definition: nsembed.c:871
static void register_nscontainer_class(void)
Definition: nsembed.c:372
BOOL nsACString_Init(nsACString *str, const char *data)
Definition: nsembed.c:788
void nsAString_Finish(nsAString *str)
Definition: nsembed.c:836
#define NS_XMLHTTPREQUEST_CONTRACTID
Definition: nsembed.c:34
static nsresult create_profile_directory(void)
Definition: nsembed.c:224
static LRESULT WINAPI nsembed_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
Definition: nsembed.c:334
static nsIDirectoryServiceProvider2 nsDirectoryServiceProvider2
Definition: nsembed.c:331
static const nsIContextMenuListenerVtbl nsContextMenuListenerVtbl
Definition: nsembed.c:1539
static nsresult NSAPI nsWebBrowserChrome_QueryInterface(nsIWebBrowserChrome *iface, nsIIDRef riid, void **result)
Definition: nsembed.c:1268
static nsresult NSAPI nsEmbeddingSiteWindow_GetSiteWindow(nsIEmbeddingSiteWindow *iface, void **aSiteWindow)
Definition: nsembed.c:1823
static nsresult NSAPI nsWebBrowserChrome_GetWebBrowser(nsIWebBrowserChrome *iface, nsIWebBrowser **aWebBrowser)
Definition: nsembed.c:1347
static nsrefcnt NSAPI nsSingletonEnumerator_Release(nsISimpleEnumerator *iface)
Definition: nsembed.c:127
void nsACString_Finish(nsACString *str)
Definition: nsembed.c:812
BOOL is_gecko_path(const char *path)
Definition: nsembed.c:1138
static NSContainer * impl_from_nsIContextMenuListener(nsIContextMenuListener *iface)
Definition: nsembed.c:1449
HRESULT nsnode_to_nsstring(nsIDOMNode *nsnode, nsAString *str)
Definition: nsembed.c:1030
static void set_preferences(void)
Definition: nsembed.c:658
static BOOL init_xpcom(const PRUnichar *gre_path)
Definition: nsembed.c:678
static nsresult NSAPI nsDirectoryServiceProvider2_GetFiles(nsIDirectoryServiceProvider2 *iface, const char *prop, nsISimpleEnumerator **_retval)
Definition: nsembed.c:281
void nsACString_InitDepend(nsACString *str, const char *data)
Definition: nsembed.c:797
UINT32 nsACString_GetData(const nsACString *str, const char **data)
Definition: nsembed.c:807
static nsresult NSAPI nsURIContentListener_OnStartURIOpen(nsIURIContentListener *iface, nsIURI *aURI, cpp_bool *_retval)
Definition: nsembed.c:1574
#define NS_HTMLSERIALIZER_CONTRACTID
Definition: nsembed.c:29
void set_viewer_zoom(NSContainer *nscontainer, float factor)
Definition: nsembed.c:1160
#define NS_EDITORCONTROLLER_CONTRACTID
Definition: nsembed.c:30
static nsresult NSAPI nsInterfaceRequestor_GetInterface(nsIInterfaceRequestor *iface, nsIIDRef riid, void **result)
Definition: nsembed.c:1925
static nsresult NSAPI nsTooltipListener_OnShowTooltip(nsITooltipListener *iface, LONG aXCoord, LONG aYCoord, const PRUnichar *aTipText)
Definition: nsembed.c:1872
static nsresult NSAPI nsEmbeddingSiteWindow_QueryInterface(nsIEmbeddingSiteWindow *iface, nsIIDRef riid, void **result)
Definition: nsembed.c:1726
#define NS_CATEGORYMANAGER_CONTRACTID
Definition: nsembed.c:33
static nsrefcnt NSAPI nsWeakReference_Release(nsIWeakReference *iface)
Definition: nsembed.c:1226
static nsrefcnt NSAPI nsWebBrowserChrome_AddRef(nsIWebBrowserChrome *iface)
Definition: nsembed.c:1309
static ATOM nscontainer_class
Definition: nsembed.c:68
static nsresult NSAPI nsEmbeddingSiteWindow_SetTitle(nsIEmbeddingSiteWindow *iface, const PRUnichar *aTitle)
Definition: nsembed.c:1815
static nsrefcnt NSAPI nsDirectoryServiceProvider2_Release(nsIDirectoryServiceProvider2 *iface)
Definition: nsembed.c:219
static nsresult NSAPI nsWeakReference_QueryInterface(nsIWeakReference *iface, nsIIDRef riid, void **result)
Definition: nsembed.c:1195
static nsrefcnt NSAPI nsURIContentListener_AddRef(nsIURIContentListener *iface)
Definition: nsembed.c:1562
void * nsalloc(size_t size)
Definition: nsembed.c:778
void nsACString_SetData(nsACString *str, const char *data)
Definition: nsembed.c:802
static nsrefcnt NSAPI nsURIContentListener_Release(nsIURIContentListener *iface)
Definition: nsembed.c:1568
static nsresult NSAPI nsWebBrowserChrome_IsWindowModal(nsIWebBrowserChrome *iface, cpp_bool *_retval)
Definition: nsembed.c:1414
static BOOL load_wine_gecko_v(PRUnichar *gre_path, HKEY mshtml_key, const char *version, const char *version_string)
Definition: nsembed.c:555
static const WCHAR wszNsContainer[]
Definition: nsembed.c:66
#define NS_STRING_CONTAINER_INIT_DEPEND
Definition: nsembed.c:39
HRESULT map_nsresult(nsresult nsres)
Definition: nsembed.c:841
static nsrefcnt NSAPI nsWebBrowserChrome_Release(nsIWebBrowserChrome *iface)
Definition: nsembed.c:1319
char * get_nscategory_entry(const char *category, const char *entry)
Definition: nsembed.c:928
UINT32 nsAString_GetData(const nsAString *str, const PRUnichar **data)
Definition: nsembed.c:831
REFIID nsIIDRef
Definition: nsiface.idl:45
HRESULT nsresult
Definition: nsiface.idl:39
WCHAR PRUnichar
Definition: nsiface.idl:48
ULONG nsrefcnt
Definition: nsiface.idl:40
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:240
#define LOWORD(l)
Definition: pedump.c:82
#define WS_CHILD
Definition: pedump.c:617
short WCHAR
Definition: pedump.c:58
long LONG
Definition: pedump.c:60
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define WS_CLIPCHILDREN
Definition: pedump.c:619
_Out_opt_ int _Out_opt_ int * cy
Definition: commctrl.h:586
_Out_opt_ int * cx
Definition: commctrl.h:585
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define REFIID
Definition: guiddef.h:118
#define URL_UNESCAPE_INPLACE
Definition: shlwapi.h:525
const WCHAR * str
#define ERR_ON(ch)
Definition: debug.h:405
#define memset(x, y, z)
Definition: compat.h:39
#define args
Definition: format.c:66
@ SHGFP_TYPE_CURRENT
Definition: shlobj.h:2167
#define CSIDL_APPDATA
Definition: shlobj.h:2216
#define TRACE(s)
Definition: solgame.cpp:4
nsIURIContentListener nsIURIContentListener_iface
nsIWebBrowser * webbrowser
nsIWebBrowserChrome nsIWebBrowserChrome_iface
nsIBaseWindow * window
nsIWebBrowserFocus * focus
nsIWebNavigation * navigation
HINSTANCE hInstance
Definition: winuser.h:3329
Definition: match.c:390
Definition: fci.c:123
Definition: mem.c:349
nsISimpleEnumerator nsISimpleEnumerator_iface
Definition: nsembed.c:87
nsISupports * value
Definition: nsembed.c:89
NSContainer * nscontainer
Definition: nsembed.c:1187
nsIWeakReference nsIWeakReference_iface
Definition: nsembed.c:1183
Definition: send.c:48
Definition: ps.c:97
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
#define DWORD_PTR
Definition: treelist.c:76
const uint16_t * LPCWSTR
Definition: typedefs.h:57
unsigned char * LPBYTE
Definition: typedefs.h:53
ULONG_PTR SIZE_T
Definition: typedefs.h:80
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t UINT32
Definition: typedefs.h:59
#define HIWORD(l)
Definition: typedefs.h:247
Definition: dlist.c:348
Definition: pdh_main.c:96
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
DWORD WINAPI GetCurrentThreadId(void)
Definition: thread.c:459
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
#define LOAD_WITH_ALTERED_SEARCH_PATH
Definition: winbase.h:340
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
_In_ LONG _In_ HWND hwnd
Definition: winddi.h:4023
#define WINAPI
Definition: msvc.h:6
#define strstrW(d, s)
Definition: unicode.h:32
#define strcmpiW(s1, s2)
Definition: unicode.h:39
#define strlenW(s)
Definition: unicode.h:28
#define strcatW(d, s)
Definition: unicode.h:30
#define sprintfW
Definition: unicode.h:58
#define strcpyW(d, s)
Definition: unicode.h:29
#define E_NOINTERFACE
Definition: winerror.h:3479
#define E_UNEXPECTED
Definition: winerror.h:3528
#define E_POINTER
Definition: winerror.h:3480
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:3772
#define E_ABORT
Definition: winerror.h:3481
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
#define HKEY_CURRENT_USER
Definition: winreg.h:11
#define SW_HIDE
Definition: winuser.h:779
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
#define WM_CREATE
Definition: winuser.h:1636
HWND WINAPI SetParent(_In_ HWND, _In_opt_ HWND)
#define WM_SIZE
Definition: winuser.h:1639
#define CS_DBLCLKS
Definition: winuser.h:659
#define WM_LBUTTONDOWN
Definition: winuser.h:1804
HWND WINAPI GetDesktopWindow(void)
Definition: window.c:628
#define WM_RBUTTONDOWN
Definition: winuser.h:1807
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
BOOL WINAPI SetPropW(_In_ HWND, _In_ LPCWSTR, _In_opt_ HANDLE)
ATOM WINAPI RegisterClassExW(_In_ CONST WNDCLASSEXW *)
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
struct _WNDCLASSEXW WNDCLASSEXW
#define WM_PARENTNOTIFY
Definition: winuser.h:1831
BOOL WINAPI IsWindowVisible(_In_ HWND)
BOOL WINAPI DestroyWindow(_In_ HWND)