Use the data scheme to load resources in the WebKitGTK+ implementation, rather than temporary files.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/SOC2011_WEBVIEW@68648 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
#include "wx/gtk/control.h"
|
#include "wx/gtk/control.h"
|
||||||
#include "wx/gtk/private.h"
|
#include "wx/gtk/private.h"
|
||||||
#include "wx/filesys.h"
|
#include "wx/filesys.h"
|
||||||
|
#include "wx/base64.h"
|
||||||
#include "webkit/webkit.h"
|
#include "webkit/webkit.h"
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -352,19 +353,16 @@ wxgtk_webview_webkit_resource_req(WebKitWebView *,
|
|||||||
wxFSFile* file = handler->GetFile(uri);
|
wxFSFile* file = handler->GetFile(uri);
|
||||||
if(file)
|
if(file)
|
||||||
{
|
{
|
||||||
//We redirect to a temp file for now, small things could be loaded
|
//We load the data into a data url to save it being written out again
|
||||||
//using the data scheme
|
|
||||||
size_t size = file->GetStream()->GetLength();
|
size_t size = file->GetStream()->GetLength();
|
||||||
char *buffer = new char[size];
|
char *buffer = new char[size];
|
||||||
wxFile tempfile;
|
|
||||||
wxString path = wxFileName::CreateTempFileName("wxwebview_", &tempfile);
|
|
||||||
//We can then stream from the archive to the temp file
|
|
||||||
file->GetStream()->Read(buffer, size);
|
file->GetStream()->Read(buffer, size);
|
||||||
tempfile.Write(buffer, size);
|
wxString data = wxBase64Encode(buffer, size);
|
||||||
tempfile.Close();
|
|
||||||
delete[] buffer;
|
delete[] buffer;
|
||||||
|
wxString mime = file->GetMimeType();
|
||||||
|
wxString path = "data:" + mime + ";base64," + data;
|
||||||
//Then we can redirect the call
|
//Then we can redirect the call
|
||||||
webkit_network_request_set_uri(request, "file://" + path);
|
webkit_network_request_set_uri(request, path);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user