Ensure wxWebViewIE::SetPage clears the existing content before writing the new output. Also add a basic unit test to verify correctness in the future.
Fixes #13770 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70041 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -102,43 +102,63 @@ void wxWebViewIE::LoadURL(const wxString& url)
|
||||
|
||||
void wxWebViewIE::SetPage(const wxString& html, const wxString& baseUrl)
|
||||
{
|
||||
BSTR bstr = SysAllocString(html.wc_str());
|
||||
|
||||
// Creates a new one-dimensional array
|
||||
BSTR bstr = SysAllocString(OLESTR(""));
|
||||
SAFEARRAY *psaStrings = SafeArrayCreateVector(VT_VARIANT, 0, 1);
|
||||
if (psaStrings != NULL)
|
||||
{
|
||||
VARIANT *param;
|
||||
|
||||
HRESULT hr = SafeArrayAccessData(psaStrings, (LPVOID*)¶m);
|
||||
param->vt = VT_BSTR;
|
||||
param->bstrVal = bstr;
|
||||
hr = SafeArrayUnaccessData(psaStrings);
|
||||
|
||||
hr = SafeArrayUnaccessData(psaStrings);
|
||||
|
||||
IHTMLDocument2* document = GetDocument();
|
||||
document->write(psaStrings);
|
||||
document->close();
|
||||
document->Release();
|
||||
|
||||
// SafeArrayDestroy calls SysFreeString for each BSTR
|
||||
SafeArrayDestroy(psaStrings);
|
||||
|
||||
//We send the events when we are done to mimic webkit
|
||||
//Navigated event
|
||||
wxWebViewEvent event(wxEVT_COMMAND_WEB_VIEW_NAVIGATED,
|
||||
GetId(), baseUrl, "");
|
||||
event.SetEventObject(this);
|
||||
HandleWindowEvent(event);
|
||||
bstr = SysAllocString(html.wc_str());
|
||||
|
||||
//Document complete event
|
||||
event.SetEventType(wxEVT_COMMAND_WEB_VIEW_LOADED);
|
||||
event.SetEventObject(this);
|
||||
HandleWindowEvent(event);
|
||||
// Creates a new one-dimensional array
|
||||
psaStrings = SafeArrayCreateVector(VT_VARIANT, 0, 1);
|
||||
if (psaStrings != NULL)
|
||||
{
|
||||
hr = SafeArrayAccessData(psaStrings, (LPVOID*)¶m);
|
||||
param->vt = VT_BSTR;
|
||||
param->bstrVal = bstr;
|
||||
hr = SafeArrayUnaccessData(psaStrings);
|
||||
|
||||
document = GetDocument();
|
||||
document->write(psaStrings);
|
||||
document->Release();
|
||||
|
||||
// SafeArrayDestroy calls SysFreeString for each BSTR
|
||||
SafeArrayDestroy(psaStrings);
|
||||
|
||||
//We send the events when we are done to mimic webkit
|
||||
//Navigated event
|
||||
wxWebViewEvent event(wxEVT_COMMAND_WEB_VIEW_NAVIGATED,
|
||||
GetId(), baseUrl, "");
|
||||
event.SetEventObject(this);
|
||||
HandleWindowEvent(event);
|
||||
|
||||
//Document complete event
|
||||
event.SetEventType(wxEVT_COMMAND_WEB_VIEW_LOADED);
|
||||
event.SetEventObject(this);
|
||||
HandleWindowEvent(event);
|
||||
}
|
||||
else
|
||||
{
|
||||
wxLogError("wxWebViewIE::SetPage() : psaStrings is NULL");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
wxLogError("wxWebViewIE::SetPage() : psaStrings is NULL");
|
||||
wxLogError("wxWebViewIE::SetPage() : psaStrings is NULL during clear");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
wxString wxWebViewIE::GetPageSource() const
|
||||
|
||||
Reference in New Issue
Block a user