// Purpose: wxMSW wxWebViewIE class implementation for web view component
// Author: Marianne Gagnon
// Id: $Id$
-// Copyright: (c) 2010 Marianne Gagnon, Steven Lamerton
+// Copyright: (c) 2010 Marianne Gagnon, 2011 Steven Lamerton
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/msw/missing.h"
#include "wx/filesys.h"
+wxIMPLEMENT_DYNAMIC_CLASS(wxWebViewIE, wxWebView);
+
//We link to urlmon as it is required for CoInternetGetSession
#pragma comment(lib, "urlmon")
document->Release();
}
-void wxWebViewIE::RegisterProtocol(wxWebProtocolHandler* handler)
+void wxWebViewIE::RegisterHandler(wxWebHandler* handler)
{
ClassFactory* cf = new ClassFactory(handler);
IInternetSession* session;
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");
case DISPID_TITLECHANGE:
{
+ wxString title = evt[0].GetString();
+
+ wxWebNavigationEvent event(wxEVT_COMMAND_WEB_VIEW_TITLE_CHANGED,
+ GetId(), GetCurrentURL(), wxEmptyString, true);
+ event.SetString(title);
+ event.SetEventObject(this);
+ HandleWindowEvent(event);
break;
}
evt.Skip();
}
-VirtualProtocol::VirtualProtocol(wxWebProtocolHandler *handler)
+VirtualProtocol::VirtualProtocol(wxWebHandler *handler)
{
m_refCount = 0;
m_file = NULL;
}
HRESULT VirtualProtocol::CombineUrl(LPCWSTR pwzBaseUrl, LPCWSTR pwzRelativeUrl,
- DWORD dwCombineFlags, LPWSTR pwzResult,
+ DWORD WXUNUSED(dwCombineFlags),
+ LPWSTR pwzResult,
DWORD cchResult, DWORD *pcchResult,
- DWORD dwReserved)
+ DWORD WXUNUSED(dwReserved))
{
- return INET_E_DEFAULT_ACTION;
+
+ wxString newuri = m_handler->CombineURIs(pwzBaseUrl, pwzRelativeUrl);
+ //Check the buffer we are given can hold the new url
+ if(wxStrlen(newuri) > cchResult)
+ return S_FALSE;
+
+ wxStrcpy(pwzResult, newuri.c_str());
+ *pcchResult = wxStrlen(newuri);
+ return S_OK;
}
-HRESULT VirtualProtocol::ParseUrl(LPCWSTR pwzUrl, PARSEACTION ParseAction,
- DWORD dwParseFlags, LPWSTR pwzResult,
+HRESULT VirtualProtocol::ParseUrl(LPCWSTR pwzUrl,
+ PARSEACTION WXUNUSED(ParseAction),
+ DWORD WXUNUSED(dwParseFlags),
+ LPWSTR pwzResult,
DWORD cchResult, DWORD *pcchResult,
- DWORD dwReserved)
+ DWORD WXUNUSED(dwReserved))
{
- //return INET_E_DEFAULT_ACTION;
- wcscpy(pwzResult, pwzUrl);
- *pcchResult = wcslen(pwzResult);
+ //Check the buffer we are given can hold the new url
+ if(wxStrlen(pwzUrl) > cchResult)
+ return S_FALSE;
+
+ wxStrcpy(pwzResult, pwzUrl);
+ *pcchResult = wxStrlen(pwzResult);
return S_OK;
}
-HRESULT VirtualProtocol::QueryInfo(LPCWSTR pwzUrl, QUERYOPTION OueryOption,
- DWORD dwQueryFlags, LPVOID pBuffer,
- DWORD cbBuffer, DWORD *pcbBuf,
- DWORD dwReserved)
+HRESULT VirtualProtocol::QueryInfo(LPCWSTR WXUNUSED(pwzUrl),
+ QUERYOPTION WXUNUSED(OueryOption),
+ DWORD WXUNUSED(dwQueryFlags),
+ LPVOID WXUNUSED(pBuffer),
+ DWORD WXUNUSED(cbBuffer),
+ DWORD* WXUNUSED(pcbBuf),
+ DWORD WXUNUSED(dwReserved))
{
return INET_E_DEFAULT_ACTION;
}