From: Steve Lamerton Date: Mon, 4 Jul 2011 18:46:01 +0000 (+0000) Subject: Factor logic that returns an IHTMLDocument2 into a separate function to reduce repeti... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/617227c3094486c88b74d8133134a8049b0f0119?ds=sidebyside Factor logic that returns an IHTMLDocument2 into a separate function to reduce repetition. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/SOC2011_WEBVIEW@68156 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/msw/webview_ie.h b/include/wx/msw/webview_ie.h index 522690c88e..2907de503d 100644 --- a/include/wx/msw/webview_ie.h +++ b/include/wx/msw/webview_ie.h @@ -21,6 +21,8 @@ #include "wx/sharedptr.h" #include "wx/vector.h" +class IHTMLDocument2; + class WXDLLIMPEXP_WEB wxWebViewIE : public wxWebView { public: @@ -141,6 +143,7 @@ private: //Generic helper functions for IHtmlDocument commands bool CanExecCommand(wxString command); void ExecCommand(wxString command); + IHTMLDocument2* GetDocument(); }; diff --git a/src/msw/webview_ie.cpp b/src/msw/webview_ie.cpp index 18f56588e2..9451961d8b 100644 --- a/src/msw/webview_ie.cpp +++ b/src/msw/webview_ie.cpp @@ -138,11 +138,6 @@ void wxWebViewIE::SetPage(const wxString& html, const wxString& baseUrl) // FIXME: calling wxYield is not elegant nor very reliable probably wxYield(); - wxVariant documentVariant = m_ie.GetProperty("Document"); - void* documentPtr = documentVariant.GetVoidPtr(); - - wxASSERT (documentPtr != NULL); - // TODO: consider the "baseUrl" parameter if possible // TODO: consider encoding BSTR bstr = SysAllocString(html.wc_str()); @@ -157,8 +152,7 @@ void wxWebViewIE::SetPage(const wxString& html, const wxString& baseUrl) param->bstrVal = bstr; hr = SafeArrayUnaccessData(psaStrings); - - IHTMLDocument2* document = (IHTMLDocument2*)documentPtr; + IHTMLDocument2* document = GetDocument(); document->write(psaStrings); // SafeArrayDestroy calls SysFreeString for each BSTR @@ -173,16 +167,7 @@ void wxWebViewIE::SetPage(const wxString& html, const wxString& baseUrl) wxString wxWebViewIE::GetPageSource() { - wxVariant documentVariant = m_ie.GetProperty("Document"); - void* documentPtr = documentVariant.GetVoidPtr(); - - if (documentPtr == NULL) - { - return wxEmptyString; - } - - IHTMLDocument2* document = (IHTMLDocument2*)documentPtr; - + IHTMLDocument2* document = GetDocument(); IHTMLElement *bodyTag = NULL; IHTMLElement *htmlTag = NULL; document->get_body(&bodyTag); @@ -504,11 +489,7 @@ wxString wxWebViewIE::GetCurrentURL() wxString wxWebViewIE::GetCurrentTitle() { - wxVariant documentVariant = m_ie.GetProperty("Document"); - void* documentPtr = documentVariant.GetVoidPtr(); - IHTMLDocument2* document = (IHTMLDocument2*)documentPtr; - - wxASSERT(documentPtr && document); + IHTMLDocument2* document = GetDocument(); BSTR title; document->get_nameProp(&title); @@ -565,11 +546,7 @@ void wxWebViewIE::Redo() bool wxWebViewIE::CanExecCommand(wxString command) { - wxVariant documentVariant = m_ie.GetProperty("Document"); - void* documentPtr = documentVariant.GetVoidPtr(); - IHTMLDocument2* document = (IHTMLDocument2*)documentPtr; - - wxASSERT(documentPtr && document); + IHTMLDocument2* document = GetDocument(); VARIANT_BOOL enabled; document->queryCommandEnabled(SysAllocString(command.wc_str()), &enabled); @@ -579,13 +556,18 @@ bool wxWebViewIE::CanExecCommand(wxString command) void wxWebViewIE::ExecCommand(wxString command) { - wxVariant documentVariant = m_ie.GetProperty("Document"); - void* documentPtr = documentVariant.GetVoidPtr(); - IHTMLDocument2* document = (IHTMLDocument2*)documentPtr; + IHTMLDocument2* document = GetDocument(); + document->execCommand(SysAllocString(command.wc_str()), VARIANT_FALSE, VARIANT(), NULL); +} - wxASSERT(documentPtr && document); +IHTMLDocument2* wxWebViewIE::GetDocument() +{ + wxVariant variant = m_ie.GetProperty("Document"); + IHTMLDocument2* document = (IHTMLDocument2*)variant.GetVoidPtr(); - document->execCommand(SysAllocString(command.wc_str()), VARIANT_FALSE, VARIANT(), NULL); + wxASSERT(document); + + return document; } void wxWebViewIE::onActiveXEvent(wxActiveXEvent& evt)