ReactOS 0.4.17-dev-1190-g4c812f4
ieframe.h File Reference
#include <stdarg.h>
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "ole2.h"
#include "olectl.h"
#include "shlobj.h"
#include "mshtmhst.h"
#include "exdisp.h"
#include "hlink.h"
#include "htiface.h"
#include "shdeprecated.h"
#include "docobjectservice.h"
#include "wine/list.h"
Include dependency graph for ieframe.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  ConnectionPointContainer
 
struct  HlinkFrame
 
struct  _task_header_t
 
struct  ShellBrowser
 
struct  IEHTMLWindow
 
struct  NewWindowManager
 
struct  travellog_entry_t
 
struct  _IDocHostContainerVtbl
 
struct  DocHost
 
struct  WebBrowser
 
struct  InternetExplorer
 

Macros

#define COBJMACROS
 
#define WM_DOCHOSTTASK   (WM_USER+0x300)
 
#define TID_LIST
 
#define XIID(iface)   iface ## _tid,
 
#define XCLSID(class)   class ## _tid,
 

Typedefs

typedef struct ConnectionPoint ConnectionPoint
 
typedef struct DocHost DocHost
 
typedef void(* task_proc_t) (DocHost *, struct _task_header_t *)
 
typedef void(* task_destr_t) (struct _task_header_t *)
 
typedef struct _task_header_t task_header_t
 
typedef struct _IDocHostContainerVtbl IDocHostContainerVtbl
 

Enumerations

enum  tid_t {
  LAST_tid , LAST_tid , Database_tid , Installer_tid ,
  Record_tid , Session_tid , StringList_tid , SummaryInfo_tid ,
  View_tid , LAST_tid , NULL_tid , IXMLDOMAttribute_tid ,
  IXMLDOMCDATASection_tid , IXMLDOMComment_tid , IXMLDOMDocument_tid , IXMLDOMDocument2_tid ,
  IXMLDOMDocument3_tid , IXMLDOMDocumentFragment_tid , IXMLDOMDocumentType_tid , IXMLDOMElement_tid ,
  IXMLDOMEntityReference_tid , IXMLDOMImplementation_tid , IXMLDOMNamedNodeMap_tid , IXMLDOMNode_tid ,
  IXMLDOMNodeList_tid , IXMLDOMParseError2_tid , IXMLDOMProcessingInstruction_tid , IXMLDOMSchemaCollection_tid ,
  IXMLDOMSchemaCollection2_tid , IXMLDOMSelection_tid , IXMLDOMText_tid , IXMLElement_tid ,
  IXMLDocument_tid , IXMLHTTPRequest_tid , IXSLProcessor_tid , IXSLTemplate_tid ,
  IVBSAXAttributes_tid , IVBSAXContentHandler_tid , IVBSAXDeclHandler_tid , IVBSAXDTDHandler_tid ,
  IVBSAXEntityResolver_tid , IVBSAXErrorHandler_tid , IVBSAXLexicalHandler_tid , IVBSAXLocator_tid ,
  IVBSAXXMLFilter_tid , IVBSAXXMLReader_tid , IMXAttributes_tid , IMXReaderControl_tid ,
  IMXWriter_tid , IVBMXNamespaceManager_tid , IServerXMLHTTPRequest_tid , LAST_tid ,
  NULL_tid , ITextDocument_tid , ITextRange_tid , ITextSelection_tid ,
  ITextFont_tid , ITextPara_tid , LAST_tid , NULL_tid ,
  IDictionary_tid , IDrive_tid , IDriveCollection_tid , IFile_tid ,
  IFileCollection_tid , IFileSystem3_tid , IFolder_tid , IFolderCollection_tid ,
  ITextStream_tid , LAST_tid , NULL_tid , IWshCollection_tid ,
  IWshEnvironment_tid , IWshExec_tid , IWshShell3_tid , IWshShortcut_tid ,
  IWshNetwork2_tid , LAST_tid
}
 
enum  SessionOp {
  SESSION_QUERY , SESSION_INCREMENT , SESSION_DECREMENT , SESSION_QUERY ,
  SESSION_INCREMENT , SESSION_DECREMENT
}
 

Functions

void WebBrowser_OleObject_Init (WebBrowser *)
 
void WebBrowser_ViewObject_Init (WebBrowser *)
 
void WebBrowser_Persist_Init (WebBrowser *)
 
void WebBrowser_ClassInfo_Init (WebBrowser *)
 
void WebBrowser_OleObject_Destroy (WebBrowser *)
 
void DocHost_Init (DocHost *, IWebBrowser2 *, const IDocHostContainerVtbl *)
 
void DocHost_Release (DocHost *)
 
void DocHost_ClientSite_Init (DocHost *)
 
void DocHost_ClientSite_Release (DocHost *)
 
void DocHost_Frame_Init (DocHost *)
 
void release_dochost_client (DocHost *)
 
void IEHTMLWindow_Init (DocHost *)
 
void NewWindowManager_Init (DocHost *)
 
void HlinkFrame_Init (HlinkFrame *, IUnknown *, DocHost *)
 
BOOL HlinkFrame_QI (HlinkFrame *, REFIID, void **)
 
HRESULT create_browser_service (DocHost *, ShellBrowser **)
 
void detach_browser_service (ShellBrowser *)
 
HRESULT create_shell_ui_helper (IShellUIHelper2 **)
 
void ConnectionPointContainer_Init (ConnectionPointContainer *, IUnknown *)
 
void ConnectionPointContainer_Destroy (ConnectionPointContainer *)
 
void call_sink (ConnectionPoint *, DISPID, DISPPARAMS *)
 
HRESULT navigate_url (DocHost *, LPCWSTR, const VARIANT *, const VARIANT *, VARIANT *, VARIANT *)
 
HRESULT go_home (DocHost *)
 
HRESULT go_back (DocHost *)
 
HRESULT go_forward (DocHost *)
 
HRESULT refresh_document (DocHost *, const VARIANT *)
 
HRESULT get_window (DocHost *, IHTMLWindow2 **)
 
HRESULT get_location_url (DocHost *, BSTR *)
 
HRESULT set_dochost_url (DocHost *, const WCHAR *)
 
void handle_navigation_error (DocHost *, HRESULT, BSTR, IHTMLWindow2 *)
 
const WCHAR * error_url_frag (const WCHAR *)
 
HRESULT dochost_object_available (DocHost *, IUnknown *)
 
void set_doc_state (DocHost *, READYSTATE)
 
void activate_document (DocHost *)
 
void deactivate_document (DocHost *)
 
void create_doc_view_hwnd (DocHost *)
 
void on_commandstate_change (DocHost *, LONG, BOOL)
 
void notify_download_state (DocHost *, BOOL)
 
void update_navigation_commands (DocHost *dochost)
 
void push_dochost_task (DocHost *, task_header_t *, task_proc_t, task_destr_t, BOOL)
 
void abort_dochost_tasks (DocHost *, task_proc_t)
 
LRESULT process_dochost_tasks (DocHost *)
 
void InternetExplorer_WebBrowser_Init (InternetExplorer *)
 
HRESULT update_ie_statustext (InternetExplorer *, LPCWSTR)
 
void released_obj (void)
 
DWORD release_extern_ref (InternetExplorer *, BOOL)
 
void register_iewindow_class (void)
 
void unregister_iewindow_class (void)
 
HRESULT get_typeinfo (tid_t, ITypeInfo **)
 
HRESULT WINAPI CUrlHistory_Create (IClassFactory *, IUnknown *, REFIID, void **)
 
HRESULT WINAPI InternetExplorer_Create (IClassFactory *, IUnknown *, REFIID, void **)
 
HRESULT WINAPI InternetShortcut_Create (IClassFactory *, IUnknown *, REFIID, void **)
 
HRESULT WINAPI WebBrowser_Create (IClassFactory *, IUnknown *, REFIID, void **)
 
HRESULT WINAPI WebBrowserV1_Create (IClassFactory *, IUnknown *, REFIID, void **)
 
HRESULT WINAPI InternetExplorerManager_Create (IClassFactory *, IUnknown *, REFIID, void **)
 
static void lock_module (void)
 
static void unlock_module (void)
 
static LPWSTR co_strdupW (LPCWSTR str)
 
static LPWSTR co_strdupAtoW (LPCSTR str)
 
static LPSTR co_strdupWtoA (LPCWSTR str)
 
LONG WINAPI SetQueryNetSessionCount (DWORD session_op)
 

Variables

IClassFactory InternetExplorerFactory
 
IClassFactory InternetExplorerManagerFactory
 
LONG module_ref
 
HINSTANCE ieframe_instance
 

Macro Definition Documentation

◆ COBJMACROS

#define COBJMACROS

Definition at line 25 of file ieframe.h.

◆ TID_LIST

#define TID_LIST
Value:
XCLSID(WebBrowser_V1) \
XIID(IWebBrowser2)
#define XCLSID(class)
Definition: ieframe.h:320

Definition at line 313 of file ieframe.h.

◆ WM_DOCHOSTTASK

#define WM_DOCHOSTTASK   (WM_USER+0x300)

Definition at line 300 of file ieframe.h.

◆ XCLSID

#define XCLSID (   class)    class ## _tid,

Definition at line 320 of file ieframe.h.

◆ XIID

#define XIID (   iface)    iface ## _tid,

Definition at line 319 of file ieframe.h.

Typedef Documentation

◆ ConnectionPoint

Definition at line 48 of file ieframe.h.

◆ DocHost

Definition at line 49 of file ieframe.h.

◆ IDocHostContainerVtbl

◆ task_destr_t

typedef void(* task_destr_t) (struct _task_header_t *)

Definition at line 75 of file ieframe.h.

◆ task_header_t

◆ task_proc_t

typedef void(* task_proc_t) (DocHost *, struct _task_header_t *)

Definition at line 74 of file ieframe.h.

Enumeration Type Documentation

◆ SessionOp

Enumerator
SESSION_QUERY 
SESSION_INCREMENT 
SESSION_DECREMENT 
SESSION_QUERY 
SESSION_INCREMENT 
SESSION_DECREMENT 

Definition at line 380 of file ieframe.h.

381{
385};
@ SESSION_DECREMENT
Definition: ieframe.h:384
@ SESSION_INCREMENT
Definition: ieframe.h:383
@ SESSION_QUERY
Definition: ieframe.h:382

◆ tid_t

Enumerator
LAST_tid 
LAST_tid 
Database_tid 
Installer_tid 
Record_tid 
Session_tid 
StringList_tid 
SummaryInfo_tid 
View_tid 
LAST_tid 
NULL_tid 
IXMLDOMAttribute_tid 
IXMLDOMCDATASection_tid 
IXMLDOMComment_tid 
IXMLDOMDocument_tid 
IXMLDOMDocument2_tid 
IXMLDOMDocument3_tid 
IXMLDOMDocumentFragment_tid 
IXMLDOMDocumentType_tid 
IXMLDOMElement_tid 
IXMLDOMEntityReference_tid 
IXMLDOMImplementation_tid 
IXMLDOMNamedNodeMap_tid 
IXMLDOMNode_tid 
IXMLDOMNodeList_tid 
IXMLDOMParseError2_tid 
IXMLDOMProcessingInstruction_tid 
IXMLDOMSchemaCollection_tid 
IXMLDOMSchemaCollection2_tid 
IXMLDOMSelection_tid 
IXMLDOMText_tid 
IXMLElement_tid 
IXMLDocument_tid 
IXMLHTTPRequest_tid 
IXSLProcessor_tid 
IXSLTemplate_tid 
IVBSAXAttributes_tid 
IVBSAXContentHandler_tid 
IVBSAXDeclHandler_tid 
IVBSAXDTDHandler_tid 
IVBSAXEntityResolver_tid 
IVBSAXErrorHandler_tid 
IVBSAXLexicalHandler_tid 
IVBSAXLocator_tid 
IVBSAXXMLFilter_tid 
IVBSAXXMLReader_tid 
IMXAttributes_tid 
IMXReaderControl_tid 
IMXWriter_tid 
IVBMXNamespaceManager_tid 
IServerXMLHTTPRequest_tid 
LAST_tid 
NULL_tid 
ITextDocument_tid 
ITextRange_tid 
ITextSelection_tid 
ITextFont_tid 
ITextPara_tid 
LAST_tid 
NULL_tid 
IDictionary_tid 
IDrive_tid 
IDriveCollection_tid 
IFile_tid 
IFileCollection_tid 
IFileSystem3_tid 
IFolder_tid 
IFolderCollection_tid 
ITextStream_tid 
LAST_tid 
NULL_tid 
IWshCollection_tid 
IWshEnvironment_tid 
IWshExec_tid 
IWshShell3_tid 
IWshShortcut_tid 
IWshNetwork2_tid 
LAST_tid 

Definition at line 318 of file ieframe.h.

318 {
319#define XIID(iface) iface ## _tid,
320#define XCLSID(class) class ## _tid,
322#undef XIID
323#undef XCLSID
325} tid_t;
tid_t
Definition: ieframe.h:318
@ LAST_tid
Definition: ieframe.h:324
#define TID_LIST
Definition: ieframe.h:313

Function Documentation

◆ abort_dochost_tasks()

void abort_dochost_tasks ( DocHost *  This,
task_proc_t  proc 
)

Definition at line 70 of file dochost.c.

71{
73
75 if(proc && proc != task->proc)
76 continue;
77
78 list_remove(&task->entry);
79 task->destr(task);
80 }
81}
static void list_remove(struct list_entry *entry)
Definition: list.h:90
DWORD task
Definition: delayimp.cpp:484
const char cursor[]
Definition: icontest.c:13
uint32_t entry
Definition: isohybrid.c:63
static HANDLE proc()
Definition: pdb.c:32
#define LIST_FOR_EACH_ENTRY_SAFE(cursor, cursor2, list, type, field)
Definition: list.h:242

Referenced by async_doc_navigate(), and DocHost_Release().

◆ activate_document()

void activate_document ( DocHost *  This)

Definition at line 606 of file dochost.c.

607{
608 IOleObject *oleobj;
609 IHlinkTarget *hlink;
611
612 if(!This->document) return;
613
614 hres = IUnknown_QueryInterface(This->document, &IID_IHlinkTarget, (void**)&hlink);
615 if(SUCCEEDED(hres)) {
616 IHlinkTarget_Navigate(hlink, 0, NULL);
617 IHlinkTarget_Release(hlink);
618 }
619
620 hres = IUnknown_QueryInterface(This->document, &IID_IOleObject, (void**)&oleobj);
621 if(SUCCEEDED(hres)) {
622 IOleObject_DoVerb(oleobj, OLEIVERB_SHOW, NULL, NULL, -1, 0, NULL);
623 IOleObject_Release(oleobj);
624 }
625
627
628 if(This->view)
629 IOleDocumentView_UIActivate(This->view, TRUE);
630}
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
HRESULT refresh_document(DocHost *This, const VARIANT *level)
Definition: dochost.c:577
#define SUCCEEDED(hr)
Definition: intsafe.h:50
HRESULT hres
Definition: protocol.c:432
#define OLEIVERB_SHOW
Definition: ole2.h:39
const GUID IID_IOleObject

Referenced by activate_ui().

◆ call_sink()

void call_sink ( ConnectionPoint *  This,
DISPID  dispid,
DISPPARAMS *  dispparams 
)

Definition at line 390 of file events.c.

391{
392 DWORD i;
393
394 for(i=0; i<This->sinks_size; i++) {
395 if(This->sinks[i])
396 IDispatch_Invoke(This->sinks[i], dispid, &IID_NULL, LOCALE_SYSTEM_DEFAULT,
397 DISPATCH_METHOD, dispparams, NULL, NULL, NULL);
398 }
399}
unsigned long DWORD
Definition: ntddk_ex.h:95
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 LOCALE_SYSTEM_DEFAULT
#define DISPATCH_METHOD
Definition: oleauto.h:1006
#define IID_NULL
Definition: guiddef.h:98

Referenced by DocObjectService_FireBeforeNavigate2(), DocObjectService_FireDocumentComplete(), DocObjectService_FireNavigateComplete2(), handle_navigation_error(), notif_complete(), notify_download_state(), on_before_navigate2(), on_commandstate_change(), set_status_text(), WebBrowser_put_AddressBar(), WebBrowser_put_FullScreen(), WebBrowser_put_MenuBar(), WebBrowser_put_Resizable(), WebBrowser_put_StatusBar(), WebBrowser_put_TheaterMode(), WebBrowser_put_ToolBar(), and WebBrowser_put_Visible().

◆ co_strdupAtoW()

static LPWSTR co_strdupAtoW ( LPCSTR  str)
inlinestatic

Definition at line 358 of file ieframe.h.

359{
360 INT len;
361 WCHAR *ret;
362 len = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
363 ret = CoTaskMemAlloc(len*sizeof(WCHAR));
364 if (ret)
366 return ret;
367}
void *WINAPI CoTaskMemAlloc(SIZE_T size)
Definition: malloc.c:381
#define CP_ACP
Definition: compat.h:109
#define MultiByteToWideChar
Definition: compat.h:110
return ret
Definition: mutex.c:147
GLenum GLsizei len
Definition: glext.h:6722
short WCHAR
Definition: pedump.c:58
const WCHAR * str
int32_t INT
Definition: typedefs.h:58

Referenced by UniformResourceLocatorA_SetUrl().

◆ co_strdupW()

static LPWSTR co_strdupW ( LPCWSTR  str)
inlinestatic

Definition at line 350 of file ieframe.h.

351{
352 WCHAR *ret = CoTaskMemAlloc((lstrlenW(str) + 1)*sizeof(WCHAR));
353 if (ret)
354 lstrcpyW(ret, str);
355 return ret;
356}
#define lstrcpyW
Definition: compat.h:749
#define lstrlenW
Definition: compat.h:750

Referenced by http_options_GetCustomHeaders(), PersistFile_GetCurFile(), PersistFile_Load(), PersistFile_Save(), UniformResourceLocatorW_GetUrl(), and UniformResourceLocatorW_SetUrl().

◆ co_strdupWtoA()

static LPSTR co_strdupWtoA ( LPCWSTR  str)
inlinestatic

Definition at line 369 of file ieframe.h.

370{
371 INT len;
372 CHAR *ret;
373 len = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0, 0, 0);
375 if (ret)
376 WideCharToMultiByte(CP_ACP, 0, str, -1, ret, len, 0, 0);
377 return ret;
378}
#define WideCharToMultiByte
Definition: compat.h:111
char CHAR
Definition: pedump.c:57

Referenced by UniformResourceLocatorA_GetUrl().

◆ ConnectionPointContainer_Destroy()

void ConnectionPointContainer_Destroy ( ConnectionPointContainer *  This)

Definition at line 441 of file events.c.

442{
446}
static void ConnectionPoint_Destroy(ConnectionPoint *This)
Definition: events.c:417

◆ ConnectionPointContainer_Init()

void ConnectionPointContainer_Init ( ConnectionPointContainer *  This,
IUnknown *  impl 
)

Definition at line 430 of file events.c.

431{
432 This->IConnectionPointContainer_iface.lpVtbl = &ConnectionPointContainerVtbl;
433
434 ConnectionPoint_Create(&DIID_DWebBrowserEvents2, &This->wbe2, &This->IConnectionPointContainer_iface);
435 ConnectionPoint_Create(&DIID_DWebBrowserEvents, &This->wbe, &This->IConnectionPointContainer_iface);
436 ConnectionPoint_Create(&IID_IPropertyNotifySink, &This->pns, &This->IConnectionPointContainer_iface);
437
438 This->impl = impl;
439}
static const IConnectionPointContainerVtbl ConnectionPointContainerVtbl
Definition: events.c:112
static void ConnectionPoint_Create(REFIID riid, ConnectionPoint **cp, IConnectionPointContainer *container)
Definition: events.c:401
const GUID IID_IPropertyNotifySink

Referenced by DocHost_Init(), HTMLElement_Init(), and init_doc().

◆ create_browser_service()

HRESULT create_browser_service ( DocHost *  doc_host,
ShellBrowser **  ret 
)

Definition at line 956 of file shellbrowser.c.

957{
959
960 sb = malloc(sizeof(ShellBrowser));
961 if(!sb)
962 return E_OUTOFMEMORY;
963
964 sb->IShellBrowser_iface.lpVtbl = &ShellBrowserVtbl;
965 sb->IBrowserService_iface.lpVtbl = &BrowserServiceVtbl;
966 sb->IDocObjectService_iface.lpVtbl = &DocObjectServiceVtbl;
967
968 sb->ref = 1;
969 sb->doc_host = doc_host;
970
971 *ret = sb;
972 return S_OK;
973}
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define malloc
Definition: debug_ros.c:4
superblock * sb
Definition: btrfs.c:4261
#define S_OK
Definition: intsafe.h:52
static const IDocObjectServiceVtbl DocObjectServiceVtbl
Definition: shellbrowser.c:940
static const IShellBrowserVtbl ShellBrowserVtbl
Definition: shellbrowser.c:258
static const IBrowserServiceVtbl BrowserServiceVtbl
Definition: shellbrowser.c:596

Referenced by ClServiceProvider_QueryService().

◆ create_doc_view_hwnd()

void create_doc_view_hwnd ( DocHost *  This)

Definition at line 484 of file dochost.c.

485{
486 RECT rect;
487
488 static const WCHAR wszShell_DocObject_View[] =
489 {'S','h','e','l','l',' ','D','o','c','O','b','j','e','c','t',' ','V','i','e','w',0};
490
491 if(!doc_view_atom) {
492 static WNDCLASSEXW wndclass = {
493 sizeof(wndclass),
496 0, 0 /* native uses 4*/, NULL, NULL, NULL,
497 (HBRUSH)(COLOR_WINDOW + 1), NULL,
498 wszShell_DocObject_View,
499 NULL
500 };
501
502 wndclass.hInstance = ieframe_instance;
503
504 doc_view_atom = RegisterClassExW(&wndclass);
505 }
506
507 This->container_vtbl->get_docobj_rect(This, &rect);
508 This->hwnd = CreateWindowExW(0, wszShell_DocObject_View,
509 wszShell_DocObject_View,
511 rect.left, rect.top, rect.right, rect.bottom, This->frame_hwnd,
513}
RECT rect
Definition: combotst.c:67
static ATOM doc_view_atom
Definition: dochost.c:37
static LRESULT WINAPI doc_view_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
Definition: dochost.c:364
HINSTANCE ieframe_instance
Definition: ieframe_main.c:32
#define WS_CHILD
Definition: pedump.c:617
#define WS_TABSTOP
Definition: pedump.c:634
#define WS_VISIBLE
Definition: pedump.c:620
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define WS_CLIPCHILDREN
Definition: pedump.c:619
#define COLOR_WINDOW
Definition: winuser.h:929
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)
ATOM WINAPI RegisterClassExW(_In_ CONST WNDCLASSEXW *)
#define CS_PARENTDC
Definition: winuser.h:664
Definition: dcommon.idl:28
long bottom
Definition: dcommon.idl:29
long right
Definition: dcommon.idl:29
long left
Definition: dcommon.idl:29
long top
Definition: dcommon.idl:29
HINSTANCE hInstance
Definition: winuser.h:3329

Referenced by create_frame_hwnd(), and navigate_bsc_proc().

◆ create_shell_ui_helper()

HRESULT create_shell_ui_helper ( IShellUIHelper2 **  _ret)

Definition at line 369 of file shelluihelper.c.

370{
372
373 ret = malloc(sizeof(*ret));
374 if(!ret)
375 return E_OUTOFMEMORY;
376
377 ret->IShellUIHelper2_iface.lpVtbl = &ShellUIHelper2Vtbl;
378 ret->ref = 1;
379
380 *_ret = &ret->IShellUIHelper2_iface;
381 return S_OK;
382}
static const IShellUIHelper2Vtbl ShellUIHelper2Vtbl

Referenced by DocHostUIHandler_GetExternal().

◆ CUrlHistory_Create()

HRESULT WINAPI CUrlHistory_Create ( IClassFactory *  iface,
IUnknown *  pOuter,
REFIID  riid,
void **  ppv 
)

Definition at line 126 of file urlhist.c.

127{
128 if(pOuter)
130
131 return IUrlHistoryStg2_QueryInterface(&UrlHistoryStg2, riid, ppv);
132}
REFIID riid
Definition: atlbase.h:39
REFIID LPVOID * ppv
Definition: atlbase.h:39
static IUrlHistoryStg2 UrlHistoryStg2
Definition: urlhist.c:124
#define CLASS_E_NOAGGREGATION
Definition: winerror.h:3771

◆ deactivate_document()

void deactivate_document ( DocHost *  This)

Definition at line 515 of file dochost.c.

516{
518 IOleObject *oleobj = NULL;
519 IHlinkTarget *hlink = NULL;
521
522 if(!This->document) return;
523
524 if(This->doc_navigate) {
525 IUnknown_Release(This->doc_navigate);
526 This->doc_navigate = NULL;
527 }
528
529 if(This->is_prop_notif)
531
532 if(This->view)
533 IOleDocumentView_UIActivate(This->view, FALSE);
534
535 hres = IUnknown_QueryInterface(This->document, &IID_IOleInPlaceObjectWindowless,
536 (void**)&winobj);
537 if(SUCCEEDED(hres)) {
538 IOleInPlaceObjectWindowless_InPlaceDeactivate(winobj);
539 IOleInPlaceObjectWindowless_Release(winobj);
540 }
541
542 if(This->view) {
543 IOleDocumentView_Show(This->view, FALSE);
544 IOleDocumentView_CloseView(This->view, 0);
545 IOleDocumentView_SetInPlaceSite(This->view, NULL);
546 IOleDocumentView_Release(This->view);
547 This->view = NULL;
548 }
549
550 hres = IUnknown_QueryInterface(This->document, &IID_IOleObject, (void**)&oleobj);
551 if(SUCCEEDED(hres))
552 IOleObject_Close(oleobj, OLECLOSE_NOSAVE);
553
554 hres = IUnknown_QueryInterface(This->document, &IID_IHlinkTarget, (void**)&hlink);
555 if(SUCCEEDED(hres)) {
556 IHlinkTarget_SetBrowseContext(hlink, NULL);
557 IHlinkTarget_Release(hlink);
558 }
559
560 if(oleobj) {
562
563 IOleObject_GetClientSite(oleobj, &client_site);
564 if(client_site) {
565 if(client_site == &This->IOleClientSite_iface)
566 IOleObject_SetClientSite(oleobj, NULL);
567 IOleClientSite_Release(client_site);
568 }
569
570 IOleObject_Release(oleobj);
571 }
572
573 IUnknown_Release(This->document);
574 This->document = NULL;
575}
#define FALSE
Definition: types.h:117
static void advise_prop_notif(DocHost *This, BOOL set)
Definition: dochost.c:209
static IOleClientSite * client_site
Definition: activex.c:198

Referenced by InternetExplorer_Release(), navigate_bsc(), OleObject_SetClientSite(), and release_extern_ref().

◆ detach_browser_service()

void detach_browser_service ( ShellBrowser *  sb)

Definition at line 975 of file shellbrowser.c.

976{
977 sb->doc_host = NULL;
978 IShellBrowser_Release(&sb->IShellBrowser_iface);
979}

Referenced by DocHost_ClientSite_Release().

◆ DocHost_ClientSite_Init()

void DocHost_ClientSite_Init ( DocHost *  This)

Definition at line 712 of file client.c.

713{
714 This->IOleClientSite_iface.lpVtbl = &OleClientSiteVtbl;
715 This->IOleInPlaceSiteEx_iface.lpVtbl = &OleInPlaceSiteExVtbl;
716 This->IOleDocumentSite_iface.lpVtbl = &OleDocumentSiteVtbl;
717 This->IOleControlSite_iface.lpVtbl = &OleControlSiteVtbl;
718 This->IDispatch_iface.lpVtbl = &DispatchVtbl;
719 This->IServiceProvider_iface.lpVtbl = &ServiceProviderVtbl;
720}
static const IOleClientSiteVtbl OleClientSiteVtbl
Definition: client.c:143
static const IOleInPlaceSiteExVtbl OleInPlaceSiteExVtbl
Definition: client.c:333
static IOleControlSiteVtbl OleControlSiteVtbl
Definition: client.c:510
static const IDispatchVtbl DispatchVtbl
Definition: client.c:627
static const IOleDocumentSiteVtbl OleDocumentSiteVtbl
Definition: client.c:406
static const IServiceProviderVtbl ServiceProviderVtbl
Definition: client.c:705

Referenced by DocHost_Init().

◆ DocHost_ClientSite_Release()

void DocHost_ClientSite_Release ( DocHost *  This)

Definition at line 722 of file client.c.

723{
724 if(This->browser_service)
725 detach_browser_service(This->browser_service);
726 if(This->view)
727 IOleDocumentView_Release(This->view);
728}
void detach_browser_service(ShellBrowser *)
Definition: shellbrowser.c:975

Referenced by DocHost_Release().

◆ DocHost_Frame_Init()

void DocHost_Frame_Init ( DocHost *  This)

Definition at line 182 of file frame.c.

183{
184 This->IOleInPlaceFrame_iface.lpVtbl = &OleInPlaceFrameVtbl;
185}
static const IOleInPlaceFrameVtbl OleInPlaceFrameVtbl
Definition: frame.c:164

Referenced by DocHost_Init().

◆ DocHost_Init()

void DocHost_Init ( DocHost *  This,
IWebBrowser2 *  wb,
const IDocHostContainerVtbl *  container 
)

Definition at line 1137 of file dochost.c.

1138{
1139 This->IDocHostUIHandler2_iface.lpVtbl = &DocHostUIHandler2Vtbl;
1140 This->IOleCommandTarget_iface.lpVtbl = &OleCommandTargetVtbl;
1141 This->IPropertyNotifySink_iface.lpVtbl = &PropertyNotifySinkVtbl;
1142
1143 This->wb = wb;
1144 This->container_vtbl = container;
1145
1146 This->ready_state = READYSTATE_UNINITIALIZED;
1147 list_init(&This->task_queue);
1148
1149 This->travellog.loading_pos = -1;
1150
1153
1157}
static void list_init(struct list_entry *head)
Definition: list.h:51
void DocHost_ClientSite_Init(DocHost *This)
Definition: client.c:712
void ConnectionPointContainer_Init(ConnectionPointContainer *This, IUnknown *impl)
Definition: events.c:430
void DocHost_Frame_Init(DocHost *This)
Definition: frame.c:182
static const IPropertyNotifySinkVtbl PropertyNotifySinkVtbl
Definition: dochost.c:1129
static const IDocHostUIHandler2Vtbl DocHostUIHandler2Vtbl
Definition: dochost.c:1047
static const IOleCommandTargetVtbl OleCommandTargetVtbl
Definition: dochost.c:813
void NewWindowManager_Init(DocHost *)
void IEHTMLWindow_Init(DocHost *)
Definition: iehtmlwnd.c:725
static IWebBrowser2 * wb
Definition: webbrowser.c:165

Referenced by create_ie(), and create_webbrowser().

◆ dochost_object_available()

HRESULT dochost_object_available ( DocHost *  This,
IUnknown *  doc 
)

Definition at line 304 of file dochost.c.

305{
306 READYSTATE ready_state;
308 IOleObject *oleobj;
310
311 IUnknown_AddRef(doc);
312 This->document = doc;
313
314 hres = IUnknown_QueryInterface(doc, &IID_IOleObject, (void**)&oleobj);
315 if(SUCCEEDED(hres)) {
316 CLSID clsid;
317
318 hres = IOleObject_GetUserClassID(oleobj, &clsid);
319 if(SUCCEEDED(hres))
320 TRACE("Got clsid %s\n",
321 IsEqualGUID(&clsid, &CLSID_HTMLDocument) ? "CLSID_HTMLDocument" : debugstr_guid(&clsid));
322
323 hres = IOleObject_SetClientSite(oleobj, &This->IOleClientSite_iface);
324 if(FAILED(hres))
325 FIXME("SetClientSite failed: %08lx\n", hres);
326
327 IOleObject_Release(oleobj);
328 }else {
329 FIXME("Could not get IOleObject iface: %08lx\n", hres);
330 }
331
332 /* FIXME: Call SetAdvise */
333
334 task = malloc(sizeof(*task));
336
337 hres = get_doc_ready_state(This, &ready_state);
338 if(SUCCEEDED(hres)) {
339 if(ready_state == READYSTATE_COMPLETE)
340 push_ready_state_task(This, READYSTATE_COMPLETE);
341 if(ready_state != READYSTATE_COMPLETE || This->doc_navigate)
343 }else if(!This->doc_navigate) {
344 /* If we can't get document's ready state, there is not much we can do.
345 * Assume that document is complete at this point. */
346 push_ready_state_task(This, READYSTATE_COMPLETE);
347 }
348
349 return S_OK;
350}
#define FIXME(fmt,...)
Definition: precomp.h:53
static void push_ready_state_task(DocHost *This, READYSTATE ready_state)
Definition: dochost.c:283
static void object_available_task_destr(task_header_t *task)
Definition: dochost.c:294
void push_dochost_task(DocHost *This, task_header_t *task, task_proc_t proc, task_destr_t destr, BOOL send)
Definition: dochost.c:39
static void object_available_proc(DocHost *This, task_header_t *task)
Definition: dochost.c:299
static HRESULT get_doc_ready_state(DocHost *This, READYSTATE *ret)
Definition: dochost.c:179
#define FAILED(hr)
Definition: intsafe.h:51
#define debugstr_guid
Definition: kernel32.h:35
const CLSID * clsid
Definition: msctf.cpp:50
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by BindStatusCallback_OnObjectAvailable().

◆ DocHost_Release()

void DocHost_Release ( DocHost *  This)

Definition at line 1159 of file dochost.c.

1160{
1161 if(This->shell_ui_helper)
1162 IShellUIHelper2_Release(This->shell_ui_helper);
1163
1167
1169
1170 while(This->travellog.length)
1171 free_travellog_entry(This->travellog.log + --This->travellog.length);
1172 free(This->travellog.log);
1173
1174 free(This->url);
1175}
#define free
Definition: debug_ros.c:5
void DocHost_ClientSite_Release(DocHost *This)
Definition: client.c:722
void ConnectionPointContainer_Destroy(ConnectionPointContainer *This)
Definition: events.c:441
void abort_dochost_tasks(DocHost *This, task_proc_t proc)
Definition: dochost.c:70
static void free_travellog_entry(travellog_entry_t *entry)
Definition: dochost.c:385
void release_dochost_client(DocHost *This)
Definition: dochost.c:632

Referenced by InternetExplorer_Release(), and WebBrowser_Release().

◆ error_url_frag()

const WCHAR * error_url_frag ( const WCHAR *  url)

Definition at line 32 of file shellbrowser.c.

33{
34 if(!wcsncmp(url, L"res://", ARRAY_SIZE(L"res://")-1)) {
37
38 if(len && !wcsncmp(url + ARRAY_SIZE(L"res://")-1, buf, len)) {
39 len += ARRAY_SIZE(L"res://")-1;
40 if(!wcsncmp(url + len, L"\\shdoclc.dll/ERROR.HTM", ARRAY_SIZE(L"\\shdoclc.dll/ERROR.HTM")-1)) {
41 len += ARRAY_SIZE(L"\\shdoclc.dll/ERROR.HTM")-1;
42 url = wcschr(url + len, '#');
43 return url ? url + 1 : NULL;
44 }
45 }
46 }
47 return NULL;
48}
#define ARRAY_SIZE(A)
Definition: main.h:20
#define wcschr
Definition: compat.h:17
#define MAX_PATH
Definition: compat.h:34
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
Definition: path.c:2331
_ACRTIMP int __cdecl wcsncmp(const wchar_t *, const wchar_t *, size_t)
Definition: wcs.c:523
#define L(x)
Definition: resources.c:13
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
unsigned int UINT
Definition: sysinfo.c:13
static const WCHAR url[]
Definition: encode.c:1384

Referenced by DocHostContainer_set_url(), DocObjectService_FireDocumentComplete(), DocObjectService_FireNavigateComplete2(), and DocObjectService_IsErrorUrl().

◆ get_location_url()

HRESULT get_location_url ( DocHost *  This,
BSTR *  ret 
)

Definition at line 1181 of file navigate.c.

1182{
1183 FIXME("semi-stub\n");
1184
1185 *ret = This->url ? SysAllocString(This->url) : SysAllocStringLen(NULL, 0);
1186 if(!*ret)
1187 return E_OUTOFMEMORY;
1188
1189 return This->url ? S_OK : S_FALSE;
1190}
BSTR WINAPI SysAllocString(LPCOLESTR str)
Definition: oleaut.c:240
BSTR WINAPI SysAllocStringLen(const OLECHAR *str, unsigned int len)
Definition: oleaut.c:341
#define S_FALSE
Definition: winerror.h:3451

Referenced by InternetExplorer_get_LocationURL(), WebBrowser_get_LocationName(), and WebBrowser_get_LocationURL().

◆ get_typeinfo()

HRESULT get_typeinfo ( tid_t  tid,
ITypeInfo **  typeinfo 
)

Definition at line 61 of file ieframe_main.c.

62{
64
65 if(!typelib)
67 if(!typelib)
68 return hres;
69
70 if(!typeinfos[tid]) {
72
73 hres = ITypeLib_GetTypeInfoOfGuid(typelib, tid_ids[tid], &ti);
74 if(FAILED(hres)) {
75 ERR("GetTypeInfoOfGuid(%s) failed: %08lx\n", debugstr_guid(tid_ids[tid]), hres);
76 return hres;
77 }
78
80 ITypeInfo_Release(ti);
81 }
82
84 return S_OK;
85}
#define ERR(fmt,...)
Definition: precomp.h:57
static HRESULT load_typelib(void)
Definition: ieframe_main.c:45
static REFIID tid_ids[]
Definition: ieframe_main.c:37
static ITypeInfo * typeinfos[LAST_tid]
Definition: ieframe_main.c:35
static TfClientId tid
#define InterlockedCompareExchangePointer
Definition: interlocked.h:144
SYMCRYPT_MAGIC_FIELD SYMCRYPT_ASYM_ALIGN union @5328 ti

◆ get_window()

HRESULT get_window ( DocHost *  doc_host,
IHTMLWindow2 **  ret 
)

Definition at line 25 of file iehtmlwnd.c.

26{
27 IHTMLDocument2 *doc_obj;
29
30 if(!doc_host->document) {
31 *ret = NULL;
32 return S_OK;
33 }
34
35 hres = IUnknown_QueryInterface(doc_host->document, &IID_IHTMLDocument2, (void**)&doc_obj);
36 if(FAILED(hres))
37 return hres;
38
39 hres = IHTMLDocument2_get_parentWindow(doc_obj, ret);
40 IHTMLDocument2_Release(doc_obj);
41 return hres;
42}
IUnknown * document
Definition: ieframe.h:139

Referenced by handle_navigation_error(), and IEHTMLWindow2_get_document().

◆ go_back()

HRESULT go_back ( DocHost *  This)

Definition at line 1161 of file navigate.c.

1162{
1163 if(!This->travellog.position) {
1164 WARN("No history available\n");
1165 return E_FAIL;
1166 }
1167
1168 return navigate_history(This, This->travellog.position-1);
1169}
#define WARN(fmt,...)
Definition: precomp.h:61
#define E_FAIL
Definition: ddrawi.h:102
static HRESULT navigate_history(DocHost *This, unsigned travellog_pos)
Definition: navigate.c:1129

Referenced by InternetExplorer_GoBack(), and WebBrowser_GoBack().

◆ go_forward()

HRESULT go_forward ( DocHost *  This)

Definition at line 1171 of file navigate.c.

1172{
1173 if(This->travellog.position >= This->travellog.length) {
1174 WARN("No history available\n");
1175 return E_FAIL;
1176 }
1177
1178 return navigate_history(This, This->travellog.position+1);
1179}

Referenced by InternetExplorer_GoForward(), and WebBrowser_GoForward().

◆ go_home()

HRESULT go_home ( DocHost *  This)

Definition at line 1104 of file navigate.c.

1105{
1106 HKEY hkey;
1107 DWORD res, type, size;
1108 WCHAR wszPageName[MAX_PATH];
1109 static const WCHAR wszAboutBlank[] = {'a','b','o','u','t',':','b','l','a','n','k',0};
1110 static const WCHAR wszStartPage[] = {'S','t','a','r','t',' ','P','a','g','e',0};
1111 static const WCHAR wszSubKey[] = {'S','o','f','t','w','a','r','e','\\',
1112 'M','i','c','r','o','s','o','f','t','\\',
1113 'I','n','t','e','r','n','e','t',' ','E','x','p','l','o','r','e','r','\\',
1114 'M','a','i','n',0};
1115
1116 res = RegOpenKeyW(HKEY_CURRENT_USER, wszSubKey, &hkey);
1117 if (res != ERROR_SUCCESS)
1118 return navigate_url(This, wszAboutBlank, NULL, NULL, NULL, NULL);
1119
1120 size = sizeof(wszPageName);
1121 res = RegQueryValueExW(hkey, wszStartPage, NULL, &type, (LPBYTE)wszPageName, &size);
1122 RegCloseKey(hkey);
1123 if (res != ERROR_SUCCESS || type != REG_SZ)
1124 return navigate_url(This, wszAboutBlank, NULL, NULL, NULL, NULL);
1125
1126 return navigate_url(This, wszPageName, NULL, NULL, NULL, NULL);
1127}
#define REG_SZ
Definition: layer.c:22
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3268
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
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLuint res
Definition: glext.h:9613
GLsizeiptr size
Definition: glext.h:5919
static const WCHAR * navigate_url
Definition: ie.c:64
unsigned char * LPBYTE
Definition: typedefs.h:53
#define HKEY_CURRENT_USER
Definition: winreg.h:11

Referenced by InternetExplorer_GoHome(), and WebBrowser_GoHome().

◆ handle_navigation_error()

void handle_navigation_error ( DocHost *  doc_host,
HRESULT  status_code,
BSTR  url,
IHTMLWindow2 *  win2 
)

Definition at line 313 of file navigate.c.

314{
315 VARIANT var_status_code, var_frame_name, var_url;
316 DISPPARAMS dispparams;
318 VARIANT_BOOL cancel = VARIANT_FALSE;
320
321 dispparams.cArgs = 5;
322 dispparams.cNamedArgs = 0;
323 dispparams.rgdispidNamedArgs = NULL;
324 dispparams.rgvarg = params;
325
327 V_BOOLREF(params) = &cancel;
328
330 V_VARIANTREF(params+1) = &var_status_code;
331 V_VT(&var_status_code) = VT_I4;
332 V_I4(&var_status_code) = status_code;
333
335 V_VARIANTREF(params+2) = &var_frame_name;
336 V_VT(&var_frame_name) = VT_BSTR;
337 if(win2) {
338 hres = IHTMLWindow2_get_name(win2, &V_BSTR(&var_frame_name));
339 if(FAILED(hres))
340 V_BSTR(&var_frame_name) = NULL;
341 } else
342 V_BSTR(&var_frame_name) = NULL;
343
345 V_VARIANTREF(params+3) = &var_url;
346 V_VT(&var_url) = VT_BSTR;
347 V_BSTR(&var_url) = url;
348
350 V_DISPATCH(params+4) = (IDispatch*)doc_host->wb;
351
352 call_sink(doc_host->cps.wbe2, DISPID_NAVIGATEERROR, &dispparams);
353 SysFreeString(V_BSTR(&var_frame_name));
354
355 if(!cancel) {
356 IHTMLPrivateWindow *priv_window;
357 IHTMLWindow2 *tmp;
358
359 if(win2)
360 hres = IHTMLWindow2_QueryInterface(win2, &IID_IHTMLPrivateWindow, (void**)&priv_window);
361 else {
362 hres = get_window(doc_host, &tmp);
363 if(SUCCEEDED(hres)) {
364 if(!tmp)
366 else {
367 hres = IHTMLWindow2_QueryInterface(tmp, &IID_IHTMLPrivateWindow, (void**)&priv_window);
368 IHTMLWindow2_Release(tmp);
369 }
370 }
371 }
372 if(SUCCEEDED(hres)) {
373 /* Error page navigation URL is a local resource (varies on native, also depending on error),
374 * with the fragment being the original URL of the page that failed to load. We add a query
375 * with the error code so the generic error page can display the actual error code there. */
376 WCHAR buf[32], sysdirbuf[MAX_PATH];
378 UINT len;
379
381 len = swprintf(buf, ARRAY_SIZE(buf), L"ERROR.HTM?HTTP %u", status_code);
382 else
383 len = swprintf(buf, ARRAY_SIZE(buf), L"ERROR.HTM?0x%08x", status_code);
384
385 len = 6 /* res:// */ + GetSystemDirectoryW(sysdirbuf, ARRAY_SIZE(sysdirbuf)) +
386 ARRAY_SIZE(L"\\shdoclc.dll/")-1 + len + 1 /* # */ + wcslen(url);
387
389 if(nav_url) {
390 swprintf(nav_url, len + 1, L"res://%s\\shdoclc.dll/%s#%s", sysdirbuf, buf, url);
391 IHTMLPrivateWindow_SuperNavigate(priv_window, nav_url, NULL, NULL, NULL, NULL, NULL, 2);
393 }
394 IHTMLPrivateWindow_Release(priv_window);
395 }
396 }
397}
OLECHAR * BSTR
Definition: compat.h:2293
short VARIANT_BOOL
Definition: compat.h:2290
@ VT_BSTR
Definition: compat.h:2303
@ VT_BYREF
Definition: compat.h:2342
@ VT_VARIANT
Definition: compat.h:2307
@ VT_I4
Definition: compat.h:2298
@ VT_BOOL
Definition: compat.h:2306
@ VT_DISPATCH
Definition: compat.h:2304
void call_sink(ConnectionPoint *This, DISPID dispid, DISPPARAMS *dispparams)
Definition: events.c:390
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
Definition: wcs.c:2988
#define DISPID_NAVIGATEERROR
Definition: exdispid.h:64
GLenum const GLfloat * params
Definition: glext.h:5645
HRESULT get_window(DocHost *, IHTMLWindow2 **)
Definition: iehtmlwnd.c:25
static const char * nav_url
Definition: htmldoc.c:217
interface IHTMLWindow2 IHTMLWindow2
Definition: mshtmhst.idl:64
struct stdole::DISPPARAMS DISPPARAMS
void WINAPI DECLSPEC_HOTPATCH SysFreeString(BSTR str)
Definition: oleaut.c:273
#define V_BOOLREF(A)
Definition: oleauto.h:225
#define V_VARIANTREF(A)
Definition: oleauto.h:283
#define V_VT(A)
Definition: oleauto.h:211
#define V_BSTR(A)
Definition: oleauto.h:226
#define V_I4(A)
Definition: oleauto.h:247
#define V_DISPATCH(A)
Definition: oleauto.h:239
ConnectionPoint * wbe2
Definition: ieframe.h:54
ConnectionPointContainer cps
Definition: ieframe.h:172
IWebBrowser2 * wb
Definition: ieframe.h:132
#define swprintf
Definition: winemm.h:209
#define E_UNEXPECTED
Definition: winerror.h:3528

Referenced by BindStatusCallback_OnProgress(), BindStatusCallback_OnStopBinding(), ClOleCommandTarget_Exec(), nsChannelBSC_on_progress(), and nsChannelBSC_stop_binding().

◆ HlinkFrame_Init()

void HlinkFrame_Init ( HlinkFrame *  This,
IUnknown *  outer,
DocHost *  doc_host 
)

Definition at line 1733 of file navigate.c.

1734{
1735 This->IHlinkFrame_iface.lpVtbl = &HlinkFrameVtbl;
1736 This->ITargetFrame_iface.lpVtbl = &TargetFrameVtbl;
1737 This->ITargetFrame2_iface.lpVtbl = &TargetFrame2Vtbl;
1738 This->ITargetFramePriv2_iface.lpVtbl = &TargetFramePriv2Vtbl;
1739 This->IWebBrowserPriv2IE9_iface.lpVtbl = &WebBrowserPriv2IE9Vtbl;
1740
1741 This->outer = outer;
1742 This->doc_host = doc_host;
1743}
static const ITargetFrame2Vtbl TargetFrame2Vtbl
Definition: navigate.c:1541
static const IWebBrowserPriv2IE9Vtbl WebBrowserPriv2IE9Vtbl
Definition: navigate.c:1698
static const ITargetFramePriv2Vtbl TargetFramePriv2Vtbl
Definition: navigate.c:1653
static const IHlinkFrameVtbl HlinkFrameVtbl
Definition: navigate.c:1280
static const ITargetFrameVtbl TargetFrameVtbl
Definition: navigate.c:1414
static IUnknown * outer
Definition: compobj.c:82

Referenced by create_ie(), and create_webbrowser().

◆ HlinkFrame_QI()

BOOL HlinkFrame_QI ( HlinkFrame *  This,
REFIID  riid,
void **  ppv 
)

Definition at line 1705 of file navigate.c.

1706{
1707 if(IsEqualGUID(&IID_IHlinkFrame, riid)) {
1708 TRACE("(%p)->(IID_IHlinkFrame %p)\n", This, ppv);
1709 *ppv = &This->IHlinkFrame_iface;
1710 }else if(IsEqualGUID(&IID_ITargetFrame, riid)) {
1711 TRACE("(%p)->(IID_ITargetFrame %p)\n", This, ppv);
1712 *ppv = &This->ITargetFrame_iface;
1713 }else if(IsEqualGUID(&IID_ITargetFrame2, riid)) {
1714 TRACE("(%p)->(IID_ITargetFrame2 %p)\n", This, ppv);
1715 *ppv = &This->ITargetFrame2_iface;
1716 }else if(IsEqualGUID(&IID_ITargetFramePriv, riid)) {
1717 TRACE("(%p)->(IID_ITargetFramePriv %p)\n", This, ppv);
1718 *ppv = &This->ITargetFramePriv2_iface;
1719 }else if(IsEqualGUID(&IID_ITargetFramePriv2, riid)) {
1720 TRACE("(%p)->(IID_ITargetFramePriv2 %p)\n", This, ppv);
1721 *ppv = &This->ITargetFramePriv2_iface;
1722 }else if(IsEqualGUID(&IID_IWebBrowserPriv2IE9, riid)) {
1723 TRACE("(%p)->(IID_IWebBrowserPriv2IE9 %p)\n", This, ppv);
1724 *ppv = &This->IWebBrowserPriv2IE9_iface;
1725 }else {
1726 return FALSE;
1727 }
1728
1729 IUnknown_AddRef((IUnknown*)*ppv);
1730 return TRUE;
1731}

Referenced by InternetExplorer_QueryInterface(), and WebBrowser_QueryInterface().

◆ IEHTMLWindow_Init()

void IEHTMLWindow_Init ( DocHost *  doc_host)

Definition at line 725 of file iehtmlwnd.c.

726{
728 doc_host->html_window.doc_host = doc_host;
729}
static const IHTMLWindow2Vtbl IEHTMLWindow2Vtbl
Definition: iehtmlwnd.c:645
IEHTMLWindow html_window
Definition: ieframe.h:173
DocHost * doc_host
Definition: ieframe.h:95
IHTMLWindow2 IHTMLWindow2_iface
Definition: ieframe.h:94

Referenced by DocHost_Init().

◆ InternetExplorer_Create()

HRESULT WINAPI InternetExplorer_Create ( IClassFactory *  iface,
IUnknown *  pOuter,
REFIID  riid,
void **  ppv 
)

Definition at line 841 of file iexplore.c.

842{
845
846 TRACE("(%p %s %p)\n", pOuter, debugstr_guid(riid), ppv);
847
848 hres = create_ie(&ret);
849 if(FAILED(hres))
850 return hres;
851
852 hres = IWebBrowser2_QueryInterface(&ret->IWebBrowser2_iface, riid, ppv);
853 IWebBrowser2_Release(&ret->IWebBrowser2_iface);
854 if(FAILED(hres))
855 return hres;
856
857 return S_OK;
858}
static HRESULT create_ie(InternetExplorer **ret_obj)
Definition: iexplore.c:817

◆ InternetExplorer_WebBrowser_Init()

void InternetExplorer_WebBrowser_Init ( InternetExplorer *  This)

Definition at line 872 of file ie.c.

873{
874 This->IWebBrowser2_iface.lpVtbl = &InternetExplorerVtbl;
875 This->IExternalConnection_iface.lpVtbl = &ExternalConnectionVtbl;
876 This->IServiceProvider_iface.lpVtbl = &ServiceProviderVtbl;
877}
static const IServiceProviderVtbl ServiceProviderVtbl
Definition: ie.c:864
static const IExternalConnectionVtbl ExternalConnectionVtbl
Definition: ie.c:817
static const IWebBrowser2Vtbl InternetExplorerVtbl
Definition: ie.c:670

Referenced by create_ie().

◆ InternetExplorerManager_Create()

HRESULT WINAPI InternetExplorerManager_Create ( IClassFactory *  iface,
IUnknown *  pOuter,
REFIID  riid,
void **  ppv 
)

Definition at line 930 of file iexplore.c.

931{
933 HRESULT hr;
934
935 TRACE("(%p %s %p)\n", pOuter, debugstr_guid(riid), ppv);
936
937 if (!(ret = calloc(1, sizeof(*ret))))
938 return E_OUTOFMEMORY;
939
940 ret->IInternetExplorerManager_iface.lpVtbl = &InternetExplorerManager_vtbl;
941 ret->ref = 1;
942
943 hr = IInternetExplorerManager_QueryInterface(&ret->IInternetExplorerManager_iface, riid, ppv);
944 IInternetExplorerManager_Release(&ret->IInternetExplorerManager_iface);
945
947 return hr;
948}
#define InterlockedIncrement
Definition: armddk.h:53
HRESULT hr
Definition: delayimp.cpp:582
static const IInternetExplorerManagerVtbl InternetExplorerManager_vtbl
Definition: iexplore.c:922
static LONG obj_cnt
Definition: iexplore.c:58
#define calloc
Definition: rosglue.h:14

◆ InternetShortcut_Create()

HRESULT WINAPI InternetShortcut_Create ( IClassFactory *  iface,
IUnknown *  outer,
REFIID  riid,
void **  ppv 
)

Definition at line 828 of file intshcut.c.

829{
832
833 TRACE("(%p, %s, %p)\n", outer, debugstr_guid(riid), ppv);
834
835 *ppv = NULL;
836
837 if(outer)
839
841 if(!This)
842 return E_OUTOFMEMORY;
843
846 return hres;
847}
static ULONG Unknown_Release(InternetShortcut *This)
Definition: intshcut.c:184
static InternetShortcut * create_shortcut(void)
Definition: intshcut.c:790
static HRESULT Unknown_QueryInterface(InternetShortcut *This, REFIID riid, PVOID *ppvObject)
Definition: intshcut.c:145

◆ lock_module()

static void lock_module ( void  )
inlinestatic

◆ navigate_url()

HRESULT navigate_url ( DocHost *  This,
LPCWSTR  url,
const VARIANT *  Flags,
const VARIANT *  TargetFrameName,
VARIANT *  PostData,
VARIANT *  Headers 
)

Definition at line 980 of file navigate.c.

982{
983 SAFEARRAY *post_array = NULL;
985 ULONG post_data_len = 0;
987 HRESULT hres = S_OK;
988
989 TRACE("navigating to %s\n", debugstr_w(url));
990
991 if((Flags && V_VT(Flags) != VT_EMPTY && V_VT(Flags) != VT_ERROR)
992 || (TargetFrameName && V_VT(TargetFrameName) != VT_EMPTY && V_VT(TargetFrameName) != VT_ERROR))
993 FIXME("Unsupported args (Flags %s; TargetFrameName %s)\n", debugstr_variant(Flags), debugstr_variant(TargetFrameName));
994
995 if(PostData) {
996 if(V_VT(PostData) & VT_ARRAY)
997 post_array = V_ISBYREF(PostData) ? *V_ARRAYREF(PostData) : V_ARRAY(PostData);
998 else
999 WARN("Invalid post data %s\n", debugstr_variant(PostData));
1000 }
1001
1002 if(post_array) {
1003 LONG elem_max;
1004 SafeArrayAccessData(post_array, (void**)&post_data);
1005 SafeArrayGetUBound(post_array, 1, &elem_max);
1006 post_data_len = (elem_max+1) * SafeArrayGetElemsize(post_array);
1007 }
1008
1009 if(Headers && V_VT(Headers) == VT_BSTR) {
1010 headers = V_BSTR(Headers);
1011 TRACE("Headers: %s\n", debugstr_w(headers));
1012 }
1013
1014 set_doc_state(This, READYSTATE_LOADING);
1015 This->ready_state = READYSTATE_LOADING;
1016
1017 if(This->doc_navigate) {
1019
1020 if(PathIsURLW(url)) {
1021 new_url[0] = 0;
1022 }else {
1023 DWORD size;
1024
1025 size = ARRAY_SIZE(new_url);
1026 hres = UrlApplySchemeW(url, new_url, &size,
1028 if(FAILED(hres)) {
1029 WARN("UrlApplyScheme failed: %08lx\n", hres);
1030 new_url[0] = 0;
1031 }
1032 }
1033
1034 hres = async_doc_navigate(This, *new_url ? new_url : url, headers, post_data,
1035 post_data_len, TRUE);
1036 }else {
1038
1039 task = malloc(sizeof(*task));
1040 task->bsc = create_callback(This, url, post_data, post_data_len, headers);
1042 }
1043
1044 if(post_data)
1045 SafeArrayUnaccessData(post_array);
1046
1047 return hres;
1048}
_In_ D3DDDI_VIDEO_PRESENT_TARGET_ID _In_ ULONG _In_ ULONG Flags
Definition: dispmprt.h:245
@ VT_ERROR
Definition: compat.h:2305
@ VT_ARRAY
Definition: compat.h:2341
@ VT_EMPTY
Definition: compat.h:2295
HRESULT WINAPI UrlApplySchemeW(const WCHAR *url, WCHAR *out, DWORD *length, DWORD flags)
Definition: path.c:4360
BOOL WINAPI PathIsURLW(const WCHAR *path)
Definition: path.c:3214
HRESULT WINAPI SafeArrayGetUBound(SAFEARRAY *psa, UINT nDim, LONG *plUbound)
Definition: safearray.c:1033
HRESULT WINAPI SafeArrayAccessData(SAFEARRAY *psa, void **ppvData)
Definition: safearray.c:1137
HRESULT WINAPI SafeArrayUnaccessData(SAFEARRAY *psa)
Definition: safearray.c:1168
UINT WINAPI SafeArrayGetElemsize(SAFEARRAY *psa)
Definition: safearray.c:1114
void set_doc_state(DocHost *This, READYSTATE doc_state)
Definition: dochost.c:234
static const char * debugstr_variant(const VARIANT *var)
Definition: dom.c:505
static BindStatusCallback * create_callback(DocHost *doc_host, LPCWSTR url, PBYTE post_data, ULONG post_data_len, LPCWSTR headers)
Definition: navigate.c:589
static HRESULT async_doc_navigate(DocHost *This, LPCWSTR url, LPCWSTR headers, PBYTE post_data, ULONG post_data_size, BOOL async_notif)
Definition: navigate.c:858
static void navigate_bsc_proc(DocHost *This, task_header_t *t)
Definition: navigate.c:969
static void navigate_bsc_task_destr(task_header_t *t)
Definition: navigate.c:961
#define debugstr_w
Definition: kernel32.h:32
static const CHAR post_data[]
Definition: protocol.c:222
#define V_ARRAY(A)
Definition: oleauto.h:222
#define V_ARRAYREF(A)
Definition: oleauto.h:223
#define V_ISBYREF(A)
Definition: oleauto.h:217
BYTE * PBYTE
Definition: pedump.c:66
long LONG
Definition: pedump.c:60
#define URL_APPLY_GUESSSCHEME
Definition: shlwapi.h:518
#define URL_APPLY_DEFAULT
Definition: shlwapi.h:517
#define URL_APPLY_GUESSFILE
Definition: shlwapi.h:519
vector< Header * > headers
Definition: sdkparse.cpp:39
uint16_t * LPWSTR
Definition: typedefs.h:56
uint32_t ULONG
Definition: typedefs.h:59
#define INTERNET_MAX_URL_LENGTH
Definition: wininet.h:51

◆ NewWindowManager_Init()

void NewWindowManager_Init ( DocHost *  doc_host)

Definition at line 1041 of file shellbrowser.c.

1042{
1044 doc_host->nwm.doc_host = doc_host;
1045}
static const INewWindowManagerVtbl NewWindowManagerVtbl
NewWindowManager nwm
Definition: ieframe.h:174
INewWindowManager INewWindowManager_iface
Definition: ieframe.h:99
DocHost * doc_host
Definition: ieframe.h:100

Referenced by DocHost_Init().

◆ notify_download_state()

void notify_download_state ( DocHost *  dochost,
BOOL  is_downloading 
)

Definition at line 151 of file navigate.c.

152{
153 DISPPARAMS dwl_dp = {NULL};
154 TRACE("(%x)\n", is_downloading);
155 dochost->busy = is_downloading ? VARIANT_TRUE : VARIANT_FALSE;
157}
#define DISPID_DOWNLOADCOMPLETE
Definition: exdispid.h:26
#define DISPID_DOWNLOADBEGIN
Definition: exdispid.h:28
static BOOL is_downloading
Definition: webbrowser.c:168
VARIANT_BOOL busy
Definition: ieframe.h:154

Referenced by BindStatusCallback_OnStopBinding(), ClOleCommandTarget_Exec(), and navigate_bsc().

◆ on_commandstate_change()

void on_commandstate_change ( DocHost *  doc_host,
LONG  command,
BOOL  enable 
)

Definition at line 83 of file dochost.c.

84{
85 DISPPARAMS dispparams;
87
88 TRACE("command=%ld enable=%d\n", command, enable);
89
90 dispparams.cArgs = 2;
91 dispparams.cNamedArgs = 0;
92 dispparams.rgdispidNamedArgs = NULL;
93 dispparams.rgvarg = params;
94
96 V_BOOL(params) = enable ? VARIANT_TRUE : VARIANT_FALSE;
97
98 V_VT(params+1) = VT_I4;
99 V_I4(params+1) = command;
100
101 call_sink(doc_host->cps.wbe2, DISPID_COMMANDSTATECHANGE, &dispparams);
102
104}
#define DISPID_COMMANDSTATECHANGE
Definition: exdispid.h:27
GLboolean enable
Definition: glext.h:11120
#define V_BOOL(A)
Definition: oleauto.h:224
const IDocHostContainerVtbl * container_vtbl
Definition: ieframe.h:143
void(* on_command_state_change)(DocHost *, LONG, BOOL)
Definition: ieframe.h:114

Referenced by navigate_bsc(), OleObject_SetClientSite(), and update_navigation_commands().

◆ process_dochost_tasks()

LRESULT process_dochost_tasks ( DocHost *  This)

Definition at line 55 of file dochost.c.

56{
58
59 while(!list_empty(&This->task_queue)) {
60 task = LIST_ENTRY(This->task_queue.next, task_header_t, entry);
61 list_remove(&task->entry);
62
63 task->proc(This, task);
64 task->destr(task);
65 }
66
67 return 0;
68}
static int list_empty(struct list_entry *head)
Definition: list.h:58
#define LIST_ENTRY(type)
Definition: queue.h:175

Referenced by ie_window_proc(), and shell_embedding_proc().

◆ push_dochost_task()

void push_dochost_task ( DocHost *  This,
task_header_t *  task,
task_proc_t  proc,
task_destr_t  destr,
BOOL  send 
)

Definition at line 39 of file dochost.c.

40{
41 BOOL is_empty;
42
43 task->proc = proc;
44 task->destr = destr;
45
46 is_empty = list_empty(&This->task_queue);
47 list_add_tail(&This->task_queue, &task->entry);
48
49 if(send)
50 SendMessageW(This->frame_hwnd, WM_DOCHOSTTASK, 0, 0);
51 else if(is_empty)
52 PostMessageW(This->frame_hwnd, WM_DOCHOSTTASK, 0, 0);
53}
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
Definition: list.h:83
INT WSAAPI send(IN SOCKET s, IN CONST CHAR FAR *buf, IN INT len, IN INT flags)
Definition: send.c:23
unsigned int BOOL
Definition: ntddk_ex.h:94
#define WM_DOCHOSTTASK
Definition: ieframe.h:300
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

Referenced by async_doc_navigate(), dochost_object_available(), navigate_url(), and push_ready_state_task().

◆ refresh_document()

HRESULT refresh_document ( DocHost *  This,
const VARIANT *  level 
)

Definition at line 577 of file dochost.c.

578{
579 IOleCommandTarget *cmdtrg;
580 VARIANT vin, vout;
582
583 if(level && (V_VT(level) != VT_I4 || V_I4(level) != REFRESH_NORMAL))
584 FIXME("Unsupported refresh level %s\n", debugstr_variant(level));
585
586 if(!This->document) {
587 FIXME("no document\n");
588 return E_FAIL;
589 }
590
591 hres = IUnknown_QueryInterface(This->document, &IID_IOleCommandTarget, (void**)&cmdtrg);
592 if(FAILED(hres))
593 return hres;
594
595 V_VT(&vin) = VT_EMPTY;
596 V_VT(&vout) = VT_EMPTY;
597 hres = IOleCommandTarget_Exec(cmdtrg, NULL, OLECMDID_REFRESH, OLECMDEXECOPT_PROMPTUSER, &vin, &vout);
598 IOleCommandTarget_Release(cmdtrg);
599 if(FAILED(hres))
600 return hres;
601
602 VariantClear(&vout);
603 return S_OK;
604}
GLint level
Definition: gl.h:1546
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
Definition: variant.c:626

Referenced by activate_document(), InternetExplorer_Refresh(), InternetExplorer_Refresh2(), WebBrowser_Refresh(), and WebBrowser_Refresh2().

◆ register_iewindow_class()

void register_iewindow_class ( void  )

Definition at line 713 of file iexplore.c.

714{
715 WNDCLASSEXW wc;
716
717 memset(&wc, 0, sizeof wc);
718 wc.cbSize = sizeof(wc);
719 wc.style = 0;
721 wc.cbClsExtra = 0;
722 wc.cbWndExtra = sizeof(InternetExplorer*);
728 wc.hbrBackground = 0;
730 wc.lpszMenuName = NULL;
731
732 RegisterClassExW(&wc);
733}
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
Definition: loader.c:838
static LRESULT WINAPI ie_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
Definition: iexplore.c:675
#define IDI_APPICON
Definition: iexplore.c:48
static const WCHAR szIEWinFrame[]
Definition: iexplore.c:52
#define IMAGE_ICON
Definition: winuser.h:212
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE hInst, _In_ LPCWSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
Definition: cursoricon.c:2572
#define IDC_ARROW
Definition: winuser.h:695
#define SM_CYSMICON
Definition: winuser.h:1024
HCURSOR WINAPI LoadCursorW(_In_opt_ HINSTANCE, _In_ LPCWSTR)
Definition: cursoricon.c:2474
#define SM_CXSMICON
Definition: winuser.h:1023
#define LR_SHARED
Definition: winuser.h:1111
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
HICON WINAPI LoadIconW(_In_opt_ HINSTANCE hInstance, _In_ LPCWSTR lpIconName)
Definition: cursoricon.c:2444
int WINAPI GetSystemMetrics(_In_ int)
#define memset(x, y, z)
Definition: compat.h:39
LPCWSTR lpszClassName
Definition: winuser.h:3334
LPCWSTR lpszMenuName
Definition: winuser.h:3333
HBRUSH hbrBackground
Definition: winuser.h:3332
WNDPROC lpfnWndProc
Definition: winuser.h:3326
UINT cbSize
Definition: winuser.h:3324
int cbWndExtra
Definition: winuser.h:3328
HCURSOR hCursor
Definition: winuser.h:3331
HICON hIconSm
Definition: winuser.h:3335
UINT style
Definition: winuser.h:3325
int cbClsExtra
Definition: winuser.h:3327
HICON hIcon
Definition: winuser.h:3330

Referenced by DllMain().

◆ release_dochost_client()

void release_dochost_client ( DocHost *  This)

Definition at line 632 of file dochost.c.

633{
634 if(This->hwnd) {
635 DestroyWindow(This->hwnd);
636 This->hwnd = NULL;
637 }
638
639 if(This->hostui) {
640 IDocHostUIHandler_Release(This->hostui);
641 This->hostui = NULL;
642 }
643
644 if(This->client_disp) {
645 IDispatch_Release(This->client_disp);
646 This->client_disp = NULL;
647 }
648
649 if(This->frame) {
650 IOleInPlaceFrame_Release(This->frame);
651 This->frame = NULL;
652 }
653
654 if(This->olecmd) {
655 IOleCommandTarget_Release(This->olecmd);
656 This->olecmd = NULL;
657 }
658}
BOOL WINAPI DestroyWindow(_In_ HWND)

Referenced by DocHost_Release(), and release_client_site().

◆ release_extern_ref()

DWORD release_extern_ref ( InternetExplorer *  This,
BOOL  last_closes 
)

Definition at line 756 of file ie.c.

757{
758 LONG ref = InterlockedDecrement(&This->extern_ref);
759
760 TRACE("ref = %ld\n", ref);
761
762 if(ref)
763 return ref;
764
765 if(!last_closes) {
766 WARN("Last external connection released with FALSE last_closes.\n");
767 return ref;
768 }
769
770 deactivate_document(&This->doc_host);
771 return ref;
772}
#define InterlockedDecrement
Definition: armddk.h:52
void deactivate_document(DocHost *This)
Definition: dochost.c:515
Definition: send.c:48

Referenced by ExternalConnection_ReleaseConnection(), and ie_window_proc().

◆ released_obj()

void released_obj ( void  )

Definition at line 950 of file iexplore.c.

951{
954}
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)

Referenced by InternetExplorer_Release(), and InternetExplorerManager_Release().

◆ set_doc_state()

void set_doc_state ( DocHost *  This,
READYSTATE  doc_state 
)

Definition at line 234 of file dochost.c.

235{
236 This->doc_state = doc_state;
237 if(doc_state > This->ready_state)
238 This->ready_state = doc_state;
239}

Referenced by html_window_navigate(), navigate_bsc(), navigate_url(), and update_ready_state().

◆ set_dochost_url()

HRESULT set_dochost_url ( DocHost *  This,
const WCHAR *  url 
)

Definition at line 132 of file navigate.c.

133{
134 WCHAR *new_url;
135
136 if(url) {
137 new_url = wcsdup(url);
138 if(!new_url)
139 return E_OUTOFMEMORY;
140 }else {
141 new_url = NULL;
142 }
143
144 free(This->url);
145 This->url = new_url;
146
147 This->container_vtbl->set_url(This, This->url);
148 return S_OK;
149}
static wchar_t * wcsdup(const wchar_t *str)
Definition: string.h:94

Referenced by bind_to_object(), BindStatusCallback_OnProgress(), DocObjectService_FireNavigateComplete2(), and html_window_navigate().

◆ SetQueryNetSessionCount()

LONG WINAPI SetQueryNetSessionCount ( DWORD  session_op)

Definition at line 295 of file ieframe_main.c.

296{
297 static LONG session_count;
298
299 TRACE("(%lx)\n", session_op);
300
301 switch(session_op)
302 {
303 case SESSION_QUERY:
304 return session_count;
306 return InterlockedIncrement(&session_count);
308 return InterlockedDecrement(&session_count);
309 };
310
311 return 0;
312}

Referenced by OleObject_SetClientSite().

◆ unlock_module()

static void unlock_module ( void  )
inlinestatic

◆ unregister_iewindow_class()

void unregister_iewindow_class ( void  )

Definition at line 735 of file iexplore.c.

736{
738}
BOOL WINAPI UnregisterClassW(_In_ LPCWSTR, HINSTANCE)

Referenced by DllMain().

◆ update_ie_statustext()

HRESULT update_ie_statustext ( InternetExplorer *  This,
LPCWSTR  text 
)

Definition at line 63 of file iexplore.c.

64{
66 return E_FAIL;
67
68 return S_OK;
69}
const WCHAR * text
Definition: package.c:1826
LONG_PTR LPARAM
Definition: minwindef.h:175
#define SB_SIMPLEID
Definition: precomp.h:15
#define SB_SETTEXTW
Definition: commctrl.h:1947
#define MAKEWORD(a, b)
Definition: typedefs.h:248

Referenced by DocHostContainer_set_status_text(), and InternetExplorer_put_StatusText().

◆ update_navigation_commands()

void update_navigation_commands ( DocHost *  dochost)

Definition at line 106 of file dochost.c.

107{
108 unsigned pos = dochost->travellog.loading_pos == -1 ? dochost->travellog.position : dochost->travellog.loading_pos;
109
110 on_commandstate_change(dochost, CSC_NAVIGATEBACK, pos > 0);
111 on_commandstate_change(dochost, CSC_NAVIGATEFORWARD, pos < dochost->travellog.length);
112}
void on_commandstate_change(DocHost *doc_host, LONG command, BOOL enable)
Definition: dochost.c:83
struct DocHost::@534 travellog

Referenced by ClOleCommandTarget_Exec(), DocObjectService_FireNavigateComplete2(), and navigate_history().

◆ WebBrowser_ClassInfo_Init()

void WebBrowser_ClassInfo_Init ( WebBrowser *  This)

Definition at line 100 of file classinfo.c.

101{
102 This->IProvideClassInfo2_iface.lpVtbl = &ProvideClassInfoVtbl;
103}
static const IProvideClassInfo2Vtbl ProvideClassInfoVtbl
Definition: classinfo.c:91

Referenced by create_webbrowser().

◆ WebBrowser_Create()

HRESULT WINAPI WebBrowser_Create ( IClassFactory *  iface,
IUnknown *  pOuter,
REFIID  riid,
void **  ppv 
)

Definition at line 1325 of file webbrowser.c.

1326{
1327 return create_webbrowser(2, pOuter, riid, ppv);
1328}
#define create_webbrowser()
Definition: webbrowser.c:237

◆ WebBrowser_OleObject_Destroy()

void WebBrowser_OleObject_Destroy ( WebBrowser *  This)

Definition at line 1275 of file oleobject.c.

1276{
1278}
static void release_client_site(WebBrowser *This, BOOL destroy_win)
Definition: oleobject.c:293

Referenced by WebBrowser_Release().

◆ WebBrowser_OleObject_Init()

void WebBrowser_OleObject_Init ( WebBrowser *  This)

Definition at line 1252 of file oleobject.c.

1253{
1254 DWORD dpi_x;
1255 DWORD dpi_y;
1256 HDC hdc;
1257
1258 /* default aspect ratio is 96dpi / 96dpi */
1259 hdc = GetDC(0);
1260 dpi_x = GetDeviceCaps(hdc, LOGPIXELSX);
1261 dpi_y = GetDeviceCaps(hdc, LOGPIXELSY);
1262 ReleaseDC(0, hdc);
1263
1264 This->IOleObject_iface.lpVtbl = &OleObjectVtbl;
1265 This->IOleInPlaceObject_iface.lpVtbl = &OleInPlaceObjectVtbl;
1266 This->IOleControl_iface.lpVtbl = &OleControlVtbl;
1267 This->IOleInPlaceActiveObject_iface.lpVtbl = &OleInPlaceActiveObjectVtbl;
1268 This->IOleCommandTarget_iface.lpVtbl = &OleCommandTargetVtbl;
1269
1270 /* Default size is 50x20 pixels, in himetric units */
1271 This->extent.cx = MulDiv( 50, 2540, dpi_x );
1272 This->extent.cy = MulDiv( 20, 2540, dpi_y );
1273}
HDC hdc
Definition: main.c:9
static HDC
Definition: imagelist.c:88
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
Definition: muldiv.c:25
static const IOleInPlaceObjectVtbl OleInPlaceObjectVtbl
Definition: oleobject.c:977
static const IOleInPlaceActiveObjectVtbl OleInPlaceActiveObjectVtbl
Definition: oleobject.c:1171
static const IOleObjectVtbl OleObjectVtbl
Definition: oleobject.c:853
static const IOleCommandTargetVtbl OleCommandTargetVtbl
Definition: oleobject.c:1244
static const IOleControlVtbl OleControlVtbl
Definition: oleobject.c:1066
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HDC WINAPI GetDC(_In_opt_ HWND)
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
#define LOGPIXELSY
Definition: wingdi.h:719
#define LOGPIXELSX
Definition: wingdi.h:718

Referenced by create_webbrowser().

◆ WebBrowser_Persist_Init()

void WebBrowser_Persist_Init ( WebBrowser *  This)

Definition at line 285 of file persist.c.

286{
287 This->IPersistStorage_iface.lpVtbl = &PersistStorageVtbl;
288 This->IPersistMemory_iface.lpVtbl = &PersistMemoryVtbl;
289 This->IPersistStreamInit_iface.lpVtbl = &PersistStreamInitVtbl;
290}
static const IPersistMemoryVtbl PersistMemoryVtbl
Definition: persist.c:189
static const IPersistStreamInitVtbl PersistStreamInitVtbl
Definition: persist.c:272
static const IPersistStorageVtbl PersistStorageVtbl
Definition: persist.c:105

Referenced by create_webbrowser().

◆ WebBrowser_ViewObject_Init()

void WebBrowser_ViewObject_Init ( WebBrowser *  This)

Definition at line 253 of file view.c.

254{
255 This->IViewObject2_iface.lpVtbl = &ViewObjectVtbl;
256 This->IDataObject_iface.lpVtbl = &DataObjectVtbl;
257}
static const IViewObject2Vtbl ViewObjectVtbl
Definition: view.c:135
static const IDataObjectVtbl DataObjectVtbl
Definition: view.c:238

Referenced by create_webbrowser().

◆ WebBrowserV1_Create()

HRESULT WINAPI WebBrowserV1_Create ( IClassFactory *  iface,
IUnknown *  pOuter,
REFIID  riid,
void **  ppv 
)

Definition at line 1320 of file webbrowser.c.

1321{
1322 return create_webbrowser(1, pOuter, riid, ppv);
1323}

Variable Documentation

◆ ieframe_instance

◆ InternetExplorerFactory

IClassFactory InternetExplorerFactory
extern

Definition at line 262 of file ieframe_main.c.

Referenced by IEWinMain().

◆ InternetExplorerManagerFactory

IClassFactory InternetExplorerManagerFactory
extern

Definition at line 272 of file ieframe_main.c.

Referenced by IEWinMain().

◆ module_ref

LONG module_ref
extern

Definition at line 31 of file ieframe_main.c.

Referenced by lock_module(), and unlock_module().