]> git.saurik.com Git - wxWidgets.git/commitdiff
Factor logic that returns an IHTMLDocument2 into a separate function to reduce repeti...
authorSteve Lamerton <steve.lamerton@gmail.com>
Mon, 4 Jul 2011 18:46:01 +0000 (18:46 +0000)
committerSteve Lamerton <steve.lamerton@gmail.com>
Mon, 4 Jul 2011 18:46:01 +0000 (18:46 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/SOC2011_WEBVIEW@68156 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/msw/webview_ie.h
src/msw/webview_ie.cpp

index 522690c88ef765269917d67810d6fe89a507f52d..2907de503d92c57a94b0dbeae5ef25db57e1cf21 100644 (file)
@@ -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();
 
 };
 
index 18f56588e24d83f7341f4c655a9e31660f2f8a5a..9451961d8b0effcd9ddb8429045ab06ece804aa2 100644 (file)
@@ -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)