]> git.saurik.com Git - wxWidgets.git/commitdiff
Overhaul wxWebHandler naming to try and make it consistent with the rest of wxWidgets...
authorSteve Lamerton <steve.lamerton@gmail.com>
Sat, 30 Jul 2011 14:22:15 +0000 (14:22 +0000)
committerSteve Lamerton <steve.lamerton@gmail.com>
Sat, 30 Jul 2011 14:22:15 +0000 (14:22 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/SOC2011_WEBVIEW@68461 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

build/bakefiles/files.bkl
include/wx/gtk/webview_webkit.h
include/wx/msw/webview_ie.h
include/wx/osx/webview_webkit.h
include/wx/webview.h
include/wx/webviewfilehandler.h [new file with mode: 0644]
samples/web/web.cpp
src/common/webview.cpp
src/common/webviewfilehandler.cpp [new file with mode: 0644]
src/msw/webview_ie.cpp

index 2aed8c9f3ad7a79cfb28005c2f84cb31e128bfef..bcdbd3c225f497a387375ea4166e06154cbb58f9 100644 (file)
@@ -3357,6 +3357,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
 <set var="WEB_SRC" hints="files">
     $(WEB_SRC_PLATFORM)
     src/common/webview.cpp
+    src/common/webviewfilehandler.cpp
 </set>
 
 <set var="WEB_HDR_PLATFORM" hints="files">
@@ -3367,6 +3368,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
 <set var="WEB_HDR" hints="files">
     $(WEB_HDR_PLATFORM)
     wx/webview.h
+    wx/webviewfilehandler.h
 </set>
 
 <!-- ====================================================================== -->
index fbbf5da93601afeb68b76c68428812aba502f8f2..1775b704f8bfee0cb47371384d22f6bdb5c01029 100644 (file)
@@ -152,7 +152,7 @@ public:
     virtual void RunScript(const wxString& javascript);
     
     //Virtual Filesystem Support
-    virtual void RegisterProtocol(wxWebProtocolHandler* hanlder);
+    virtual void RegisterHandler(wxWebHandler* handler);
 
     /** FIXME: hack to work around signals being received too early */
     bool m_ready;
index f8245644fcb37aa109fc623f04488a3fbefc1e39..938cf0ce41782fe27d844c63d980fe75317c9543 100644 (file)
@@ -110,7 +110,7 @@ public:
     virtual void RunScript(const wxString& javascript);
 
     //Virtual Filesystem Support
-    virtual void RegisterProtocol(wxWebProtocolHandler* hanlder);
+    virtual void RegisterHandler(wxWebHandler* handler);
 
     // ---- IE-specific methods
 
@@ -168,10 +168,10 @@ protected:
     VOID * fileP;
 
     wxFSFile* m_file;
-    wxWebProtocolHandler* m_handler;
+    wxWebHandler* m_handler;
 
 public:
-    VirtualProtocol(wxWebProtocolHandler *handler);
+    VirtualProtocol(wxWebHandler *handler);
     ~VirtualProtocol();
 
     //IUnknown
@@ -229,7 +229,7 @@ class ClassFactory : public IClassFactory
 private:
     ULONG m_refCount;
 public:
-    ClassFactory(wxWebProtocolHandler* handler) : m_handler(handler) {}
+    ClassFactory(wxWebHandler* handler) : m_handler(handler) {}
     //IUnknown
     ULONG STDMETHODCALLTYPE AddRef();
     HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppvObject);
@@ -240,7 +240,7 @@ public:
                                              REFIID riid, void** ppvObject);
     HRESULT STDMETHODCALLTYPE LockServer(BOOL fLock);
 private:
-    wxWebProtocolHandler* m_handler;
+    wxWebHandler* m_handler;
 };
 
 #endif // wxUSE_WEBVIEW_IE
index 8ce778ba9770325d2f7fab8602f5f10842e0e239..e83b1ccdb500e9ab72fc46dfab9785382467e84f 100644 (file)
@@ -117,7 +117,7 @@ public:
     void RunScript(const wxString& javascript);
     
     //Virtual Filesystem Support
-    virtual void RegisterProtocol(wxWebProtocolHandler* hanlder) {};
+    virtual void RegisterHandler(wxWebHandler* handler) {};
 
     // ---- methods not from the parent (common) interface
     bool  CanGetPageSource();
index da306c1be1d5cf38b0b23cb063afb7c5c98ec2d2..bb1a8fbcb722cf58744b93a76a5c3791002780ca 100644 (file)
@@ -107,29 +107,15 @@ enum wxWebViewBackend
     wxWEB_VIEW_BACKEND_IE
 };
 
-//Base class for custom protocol handlers
-class WXDLLIMPEXP_WEB wxWebProtocolHandler
+//Base class for custom scheme handlers
+class WXDLLIMPEXP_WEB wxWebHandler
 {
 public:
-    virtual wxString GetProtocol() = 0;
+    virtual wxString GetName() const = 0;
     virtual wxFSFile* GetFile(const wxString &uri) = 0;
     virtual wxString CombineURIs(const wxString &baseuri, const wxString &newuri) = 0;
 };
 
-//Loads from uris such as file:///C:/example/example.html or archives such as
-//file:///C:/example/example.zip?protocol=zip;path=example.html 
-class WXDLLIMPEXP_WEB wxWebFileProtocolHandler : public wxWebProtocolHandler
-{
-public:
-    wxWebFileProtocolHandler();
-    virtual wxString GetProtocol() { return m_protocol; }
-    virtual wxFSFile* GetFile(const wxString &uri);
-    virtual wxString CombineURIs(const wxString &baseuri, const wxString &newuri);
-private:
-    wxString m_protocol;
-    wxFileSystem* m_fileSystem;
-};
-
 extern WXDLLIMPEXP_DATA_WEB(const char) wxWebViewNameStr[];
 extern WXDLLIMPEXP_DATA_WEB(const char) wxWebViewDefaultURLStr[];
 
@@ -361,7 +347,7 @@ public:
     virtual void Redo() = 0;
 
     //Virtual Filesystem Support
-    virtual void RegisterProtocol(wxWebProtocolHandler* handler) = 0;
+    virtual void RegisterHandler(wxWebHandler* handler) = 0;
 };
 
 class WXDLLIMPEXP_WEB wxWebNavigationEvent : public wxCommandEvent
diff --git a/include/wx/webviewfilehandler.h b/include/wx/webviewfilehandler.h
new file mode 100644 (file)
index 0000000..a3ea436
--- /dev/null
@@ -0,0 +1,39 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        webviewfilehandler.h
+// Purpose:     Custom handler for the file scheme to allow archive browsing
+// Author:      Steven Lamerton
+// Id:          $Id$
+// Copyright:   (c) 2011 Steven Lamerton
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_WEB_VIEW_FILE_HANDLER_H_
+#define _WX_WEB_VIEW_FILE_HANDLER_H_
+
+#include "wx/setup.h"
+
+#if wxUSE_WEB
+
+class wxFSFile;
+class wxFileSystem;
+
+#include "wx/webview.h"
+
+//Loads from uris such as file:///C:/example/example.html or archives such as
+//file:///C:/example/example.zip?protocol=zip;path=example.html 
+
+class WXDLLIMPEXP_WEB wxWebFileHandler : public wxWebHandler
+{
+public:
+    wxWebFileHandler();
+    virtual wxString GetName() const { return m_name; }
+    virtual wxFSFile* GetFile(const wxString &uri);
+    virtual wxString CombineURIs(const wxString &baseuri, const wxString &newuri);
+private:
+    wxString m_name;
+    wxFileSystem* m_fileSystem;
+};
+
+#endif
+
+#endif // _WX_WEB_VIEW_FILE_HANDLER_H_
index 97f20bf99a5212837ba6bbc623b9cd881eb9a511..a5d45980767d9961433542fa14a82bb72befd3d2 100644 (file)
@@ -26,6 +26,7 @@
 #include <wx/notifmsg.h>
 #include <wx/settings.h>
 #include <wx/webview.h>
+#include <wx/webviewfilehandler.h>
 #include <wx/infobar.h>
 #include <wx/filesys.h>
 #include <wx/fs_arc.h>
@@ -191,7 +192,7 @@ WebFrame::WebFrame() : wxFrame(NULL, wxID_ANY, "wxWebView Sample")
     topsizer->Add(m_browser, wxSizerFlags().Expand().Proportion(1));
 
     //We register the test:// protocol for testing purposes
-    m_browser->RegisterProtocol(new wxWebFileProtocolHandler());
+    m_browser->RegisterHandler(new wxWebFileHandler());
 
     SetSizer(topsizer);
 
index 113f96ad687a37bdccde754c7c903b9d95ffa58a..8abac2300c14be95ee099d99e1f98908384cdd0e 100644 (file)
@@ -21,8 +21,6 @@
 #include "wx/osx/webview_webkit.h"
 #include "wx/gtk/webview_webkit.h"
 #include "wx/msw/webview_ie.h"
-#include "wx/filesys.h"
-#include "wx/tokenzr.h"
 
 // DLL options compatibility check:
 #include "wx/app.h"
@@ -40,197 +38,6 @@ wxDEFINE_EVENT( wxEVT_COMMAND_WEB_VIEW_ERROR, wxWebNavigationEvent );
 wxDEFINE_EVENT( wxEVT_COMMAND_WEB_VIEW_NEWWINDOW, wxWebNavigationEvent );
 wxDEFINE_EVENT( wxEVT_COMMAND_WEB_VIEW_TITLE_CHANGED, wxWebNavigationEvent );
 
-//Taken from wx/filesys.cpp
-static wxString EscapeFileNameCharsInURL(const char *in)
-{
-    wxString s;
-
-    for ( const unsigned char *p = (const unsigned char*)in; *p; ++p )
-    {
-        const unsigned char c = *p;
-
-        if ( c == '/' || c == '-' || c == '.' || c == '_' || c == '~' ||
-             (c >= '0' && c <= '9') ||
-             (c >= 'a' && c <= 'z') ||
-             (c >= 'A' && c <= 'Z') )
-        {
-            s << c;
-        }
-        else
-        {
-            s << wxString::Format("%%%02x", c);
-        }
-    }
-
-    return s;
-}
-
-wxWebFileProtocolHandler::wxWebFileProtocolHandler()
-{
-    m_protocol = "test";
-    m_fileSystem = new wxFileSystem();
-}
-
-wxFSFile* wxWebFileProtocolHandler::GetFile(const wxString &uri)
-{
-    size_t pos = uri.find('?');
-    //There is no query string so we can load the file directly
-    if(pos == wxString::npos)
-    {
-        size_t doubleslash = uri.find("//");
-        //The path is incorrectly formed without // after the first protocol
-        if(doubleslash == wxString::npos)
-            return NULL;
-
-        wxString fspath = "file:" + 
-                          EscapeFileNameCharsInURL(uri.substr(doubleslash + 2));
-        return m_fileSystem->OpenFile(fspath);
-    }
-    //Otherwise we have a query string of some kind that we need to extract
-    else{
-        //First we extract the query string, this should have two parameters, 
-        //protocol=type and path=path
-        wxString query = uri.substr(pos + 1), protocol, path;
-        //We also trim the query off the end as we handle it alone
-        wxString lefturi = uri.substr(0, pos);
-        wxStringTokenizer tokenizer(query, ";");
-        while(tokenizer.HasMoreTokens() && (protocol == "" || path == ""))
-        {
-            wxString token = tokenizer.GetNextToken();
-            if(token.substr(0, 9) == "protocol=")
-            {
-                protocol = token.substr(9);
-            }
-            else if(token.substr(0, 5) == "path=")
-            {
-                path = token.substr(5);
-            }
-        }
-        if(protocol == "" || path == "")
-            return NULL;
-
-        //We now have the path and the protocol and so can format a correct uri
-        //to pass to wxFileSystem to get a wxFSFile
-        size_t doubleslash = uri.find("//");
-        //The path is incorrectly formed without // after the first protocol
-        if(doubleslash == wxString::npos)
-            return NULL;
-
-        wxString fspath = "file:" + 
-                          EscapeFileNameCharsInURL(lefturi.substr(doubleslash + 2))
-                          + "#" + protocol +":" + path;
-        return m_fileSystem->OpenFile(fspath);
-    }
-}
-
-wxString wxWebFileProtocolHandler::CombineURIs(const wxString &baseuri, 
-                                               const wxString &newuri)
-{
-    //If there is a colon in the path then we just return it
-    if(newuri.find(':') != wxString::npos)
-    {
-        return newuri;
-    }
-    //We have an absolute path and no query string
-    else if(newuri.substr(0, 1) == "/" && baseuri.find('?') == wxString::npos)
-    {
-        //By finding the next / after file:// we get to the end of the 
-        //(optional) hostname
-        size_t pos = baseuri.find('/', 7);
-        //So we return up to the end of the hostname, plus the newuri
-        return baseuri.substr(0, pos) + newuri;
-    }
-    //We have an absolute path and a query string
-    else if(newuri.substr(0, 1) == "/" && baseuri.find('?') != wxString::npos)
-    {
-        wxString query = baseuri.substr(baseuri.find('?') + 1);
-        wxString newquery;
-        wxStringTokenizer tokenizer(query, ";");
-        while(tokenizer.HasMoreTokens())
-        {
-            wxString token = tokenizer.GetNextToken();
-            if(token.substr(0, 5) == "path=")
-            {
-                //As the path is absolue simply replace the old path with the
-                //new one
-                newquery = newquery + "path=" + newuri;
-            }
-            else
-            {
-                newquery += token;
-            }
-            //We need to add the separators back
-            if(tokenizer.HasMoreTokens())
-                newquery += ';';
-        }
-        return baseuri.substr(0, baseuri.find('?')) + "?" + newquery;
-    }
-    //We have a relative path and no query string
-    else if(baseuri.find('?') == wxString::npos)
-    {
-        //By finding the next / after file:// we get to the end of the 
-        //(optional) hostname
-        size_t pos = baseuri.find('/', 7);
-        wxString path = baseuri.substr(pos);
-        //Then we remove the last filename
-        path = path.BeforeLast('/') + '/';
-        //Ensure that we have the leading / so we can normalise properly
-        if(path.substr(0, 1) != "/")
-            path = "/" + path;
-
-        //If we have a colon in the path (i.e. we are on windows) we need to 
-        //handle it specially
-        if(path.find(':') != wxString::npos)
-        {
-            wxFileName fn(path.AfterFirst('/').AfterFirst('/') + newuri);
-            fn.Normalize(wxPATH_NORM_DOTS, "", wxPATH_UNIX);
-            return baseuri.substr(0, pos) + '/' + 
-                   path.AfterFirst('/').BeforeFirst('/') + '/' + 
-                   fn.GetFullPath(wxPATH_UNIX);
-        }
-        else
-        {
-            //We can now use wxFileName to perform the normalisation
-            wxFileName fn(path + newuri);
-            fn.Normalize(wxPATH_NORM_DOTS, "", wxPATH_UNIX);
-            return baseuri.substr(0, pos) + fn.GetFullPath(wxPATH_UNIX);
-        }
-    }
-    //We have a relative path and a query string
-    else
-    {
-        wxString query = baseuri.substr(baseuri.find('?') + 1);
-        wxString newquery;
-        wxStringTokenizer tokenizer(query, ";");
-        while(tokenizer.HasMoreTokens())
-        {
-            wxString token = tokenizer.GetNextToken();
-            if(token.substr(0, 5) == "path=")
-            {
-                wxString path = token.substr(6);
-                //Then we remove the last filename
-                path = path.BeforeLast('/') + '/';
-                //Ensure that we have the leading / so we can normalise properly
-                //if(path.substr(0, 1) != "/")
-                //    path = "/" + path;
-
-                //We can now use wxFileName to perform the normalisation
-                wxFileName fn(path + newuri);
-                fn.Normalize(wxPATH_NORM_DOTS, "", wxPATH_UNIX);
-                newquery = newquery + "path=" + fn.GetFullPath(wxPATH_UNIX);
-            }
-            else
-            {
-                newquery += token;
-            }
-            //We need to add the separators back
-            if(tokenizer.HasMoreTokens())
-                newquery += ';';
-        }
-        return baseuri.substr(0, baseuri.find('?')) + "?" + newquery;
-    }
-}
-
 // static
 wxWebView* wxWebView::New(wxWebViewBackend backend)
 {
diff --git a/src/common/webviewfilehandler.cpp b/src/common/webviewfilehandler.cpp
new file mode 100644 (file)
index 0000000..2f35f73
--- /dev/null
@@ -0,0 +1,213 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        webviewfilehandler.cpp
+// Purpose:     Custom handler for the file scheme to allow archive browsing
+// Author:      Steven Lamerton
+// Id:          $Id$
+// Copyright:   (c) 2011 Steven Lamerton
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+// For compilers that support precompilation, includes "wx.h".
+#include "wx/wxprec.h"
+
+#if wxUSE_WEB
+
+#if defined(__BORLANDC__)
+    #pragma hdrstop
+#endif
+
+#include "wx/webviewfilehandler.h"
+#include "wx/filesys.h"
+#include "wx/tokenzr.h"
+
+//Taken from wx/filesys.cpp
+static wxString EscapeFileNameCharsInURL(const char *in)
+{
+    wxString s;
+
+    for ( const unsigned char *p = (const unsigned char*)in; *p; ++p )
+    {
+        const unsigned char c = *p;
+
+        if ( c == '/' || c == '-' || c == '.' || c == '_' || c == '~' ||
+             (c >= '0' && c <= '9') ||
+             (c >= 'a' && c <= 'z') ||
+             (c >= 'A' && c <= 'Z') )
+        {
+            s << c;
+        }
+        else
+        {
+            s << wxString::Format("%%%02x", c);
+        }
+    }
+
+    return s;
+}
+
+wxWebFileHandler::wxWebFileHandler()
+{
+    m_name = "test";
+    m_fileSystem = new wxFileSystem();
+}
+
+wxFSFile* wxWebFileHandler::GetFile(const wxString &uri)
+{
+    size_t pos = uri.find('?');
+    //There is no query string so we can load the file directly
+    if(pos == wxString::npos)
+    {
+        size_t doubleslash = uri.find("//");
+        //The path is incorrectly formed without // after the first protocol
+        if(doubleslash == wxString::npos)
+            return NULL;
+
+        wxString fspath = "file:" + 
+                          EscapeFileNameCharsInURL(uri.substr(doubleslash + 2));
+        return m_fileSystem->OpenFile(fspath);
+    }
+    //Otherwise we have a query string of some kind that we need to extract
+    else{
+        //First we extract the query string, this should have two parameters, 
+        //protocol=type and path=path
+        wxString query = uri.substr(pos + 1), protocol, path;
+        //We also trim the query off the end as we handle it alone
+        wxString lefturi = uri.substr(0, pos);
+        wxStringTokenizer tokenizer(query, ";");
+        while(tokenizer.HasMoreTokens() && (protocol == "" || path == ""))
+        {
+            wxString token = tokenizer.GetNextToken();
+            if(token.substr(0, 9) == "protocol=")
+            {
+                protocol = token.substr(9);
+            }
+            else if(token.substr(0, 5) == "path=")
+            {
+                path = token.substr(5);
+            }
+        }
+        if(protocol == "" || path == "")
+            return NULL;
+
+        //We now have the path and the protocol and so can format a correct uri
+        //to pass to wxFileSystem to get a wxFSFile
+        size_t doubleslash = uri.find("//");
+        //The path is incorrectly formed without // after the first protocol
+        if(doubleslash == wxString::npos)
+            return NULL;
+
+        wxString fspath = "file:" + 
+                          EscapeFileNameCharsInURL(lefturi.substr(doubleslash + 2))
+                          + "#" + protocol +":" + path;
+        return m_fileSystem->OpenFile(fspath);
+    }
+}
+
+wxString wxWebFileHandler::CombineURIs(const wxString &baseuri, 
+                                               const wxString &newuri)
+{
+    //If there is a colon in the path then we just return it
+    if(newuri.find(':') != wxString::npos)
+    {
+        return newuri;
+    }
+    //We have an absolute path and no query string
+    else if(newuri.substr(0, 1) == "/" && baseuri.find('?') == wxString::npos)
+    {
+        //By finding the next / after file:// we get to the end of the 
+        //(optional) hostname
+        size_t pos = baseuri.find('/', 7);
+        //So we return up to the end of the hostname, plus the newuri
+        return baseuri.substr(0, pos) + newuri;
+    }
+    //We have an absolute path and a query string
+    else if(newuri.substr(0, 1) == "/" && baseuri.find('?') != wxString::npos)
+    {
+        wxString query = baseuri.substr(baseuri.find('?') + 1);
+        wxString newquery;
+        wxStringTokenizer tokenizer(query, ";");
+        while(tokenizer.HasMoreTokens())
+        {
+            wxString token = tokenizer.GetNextToken();
+            if(token.substr(0, 5) == "path=")
+            {
+                //As the path is absolue simply replace the old path with the
+                //new one
+                newquery = newquery + "path=" + newuri;
+            }
+            else
+            {
+                newquery += token;
+            }
+            //We need to add the separators back
+            if(tokenizer.HasMoreTokens())
+                newquery += ';';
+        }
+        return baseuri.substr(0, baseuri.find('?')) + "?" + newquery;
+    }
+    //We have a relative path and no query string
+    else if(baseuri.find('?') == wxString::npos)
+    {
+        //By finding the next / after file:// we get to the end of the 
+        //(optional) hostname
+        size_t pos = baseuri.find('/', 7);
+        wxString path = baseuri.substr(pos);
+        //Then we remove the last filename
+        path = path.BeforeLast('/') + '/';
+        //Ensure that we have the leading / so we can normalise properly
+        if(path.substr(0, 1) != "/")
+            path = "/" + path;
+
+        //If we have a colon in the path (i.e. we are on windows) we need to 
+        //handle it specially
+        if(path.find(':') != wxString::npos)
+        {
+            wxFileName fn(path.AfterFirst('/').AfterFirst('/') + newuri);
+            fn.Normalize(wxPATH_NORM_DOTS, "", wxPATH_UNIX);
+            return baseuri.substr(0, pos) + '/' + 
+                   path.AfterFirst('/').BeforeFirst('/') + '/' + 
+                   fn.GetFullPath(wxPATH_UNIX);
+        }
+        else
+        {
+            //We can now use wxFileName to perform the normalisation
+            wxFileName fn(path + newuri);
+            fn.Normalize(wxPATH_NORM_DOTS, "", wxPATH_UNIX);
+            return baseuri.substr(0, pos) + fn.GetFullPath(wxPATH_UNIX);
+        }
+    }
+    //We have a relative path and a query string
+    else
+    {
+        wxString query = baseuri.substr(baseuri.find('?') + 1);
+        wxString newquery;
+        wxStringTokenizer tokenizer(query, ";");
+        while(tokenizer.HasMoreTokens())
+        {
+            wxString token = tokenizer.GetNextToken();
+            if(token.substr(0, 5) == "path=")
+            {
+                wxString path = token.substr(6);
+                //Then we remove the last filename
+                path = path.BeforeLast('/') + '/';
+                //Ensure that we have the leading / so we can normalise properly
+                //if(path.substr(0, 1) != "/")
+                //    path = "/" + path;
+
+                //We can now use wxFileName to perform the normalisation
+                wxFileName fn(path + newuri);
+                fn.Normalize(wxPATH_NORM_DOTS, "", wxPATH_UNIX);
+                newquery = newquery + "path=" + fn.GetFullPath(wxPATH_UNIX);
+            }
+            else
+            {
+                newquery += token;
+            }
+            //We need to add the separators back
+            if(tokenizer.HasMoreTokens())
+                newquery += ';';
+        }
+        return baseuri.substr(0, baseuri.find('?')) + "?" + newquery;
+    }
+}
+#endif // wxUSE_WEB
index 07cda9f9d59a53df126ac75a8da2bd1705212093..f8e01432e6e06d4dd7e5c0387eb53bfaf699c27c 100644 (file)
@@ -663,7 +663,7 @@ void wxWebViewIE::RunScript(const wxString& javascript)
     document->Release();
 }
 
-void wxWebViewIE::RegisterProtocol(wxWebProtocolHandler* handler)
+void wxWebViewIE::RegisterHandler(wxWebHandler* handler)
 {
     ClassFactory* cf = new ClassFactory(handler);
     IInternetSession* session;
@@ -672,7 +672,7 @@ void wxWebViewIE::RegisterProtocol(wxWebProtocolHandler* handler)
         wxFAIL_MSG("Could not retrive internet session");
     }
 
-    HRESULT hr = session->RegisterNameSpace(cf, CLSID_FileProtocol, handler->GetProtocol(), 0, NULL, 0);
+    HRESULT hr = session->RegisterNameSpace(cf, CLSID_FileProtocol, handler->GetName(), 0, NULL, 0);
     if(FAILED(hr))
     {
         wxFAIL_MSG("Could not register protocol");
@@ -957,7 +957,7 @@ void wxWebViewIE::onActiveXEvent(wxActiveXEvent& evt)
     evt.Skip();
 }
 
-VirtualProtocol::VirtualProtocol(wxWebProtocolHandler *handler)
+VirtualProtocol::VirtualProtocol(wxWebHandler *handler)
 {
     m_refCount = 0;
     m_file = NULL;