]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/webviewfilehandler.cpp
Use the data scheme to load resources in the WebKitGTK+ implementation, rather than...
[wxWidgets.git] / src / common / webviewfilehandler.cpp
index 4c87f547b022b973d16d2430b1919f36fc6eada7..3dbbbb3398f94c21af679e1d7b2a92531715d650 100644 (file)
@@ -52,11 +52,20 @@ wxWebFileHandler::wxWebFileHandler()
 
 wxFSFile* wxWebFileHandler::GetFile(const wxString &uri)
 {
 
 wxFSFile* wxWebFileHandler::GetFile(const wxString &uri)
 {
+    //If there is a fragment at the end of the path then we need to strip it
+    //off as not all backends do this for us
+    wxString path = uri;
+    size_t hashloc = uri.find('#');
+    if(hashloc != wxString::npos)
+    {
+        path = uri.substr(0, hashloc);
+    }
+
     //We iterate through the string to see if there is a protocol description
     //We iterate through the string to see if there is a protocol description
-    int start = -1;
-    for(int i = 0; i < uri.length(); i++)
+    size_t start = wxString::npos;
+    for(size_t i = 0; i < path.length(); i++)
     {
     {
-        if(uri[i] == ';' && uri.substr(i, 10) == ";protocol=")
+        if(path[i] == ';' && path.substr(i, 10) == ";protocol=")
         {
             start = i;
             break;
         {
             start = i;
             break;
@@ -64,32 +73,32 @@ wxFSFile* wxWebFileHandler::GetFile(const wxString &uri)
     }
 
     //We do not have a protocol string so we just pass the path withouth the 
     }
 
     //We do not have a protocol string so we just pass the path withouth the 
-    if(start == -1)
+    if(start == wxString::npos)
     {
     {
-        size_t doubleslash = uri.find("//");
+        size_t doubleslash = path.find("//");
         //The path is incorrectly formed without // after the scheme
         if(doubleslash == wxString::npos)
             return NULL;
 
         wxString fspath = "file:" + 
         //The path is incorrectly formed without // after the scheme
         if(doubleslash == wxString::npos)
             return NULL;
 
         wxString fspath = "file:" + 
-                          EscapeFileNameCharsInURL(uri.substr(doubleslash + 2));
+                          EscapeFileNameCharsInURL(path.substr(doubleslash + 2));
         return m_fileSystem->OpenFile(fspath);
     }
     //Otherwise we need to extract the protocol
     else
     {
         return m_fileSystem->OpenFile(fspath);
     }
     //Otherwise we need to extract the protocol
     else
     {
-        int end = uri.find('/', start);
+        size_t end = path.find('/', start);
         //For the path to be valid there must to a path after the protocol
         if(end == wxString::npos)
         {
             return NULL;
         }
         //For the path to be valid there must to a path after the protocol
         if(end == wxString::npos)
         {
             return NULL;
         }
-        wxString mainpath = uri.substr(0, start);
-        wxString archivepath = uri.substr(end);
-        wxString protstring = uri.substr(start, end - start);
+        wxString mainpath = path.substr(0, start);
+        wxString archivepath = path.substr(end);
+        wxString protstring = path.substr(start, end - start);
         wxString protocol = protstring.substr(10);
         //We can now construct the correct path
         wxString protocol = protstring.substr(10);
         //We can now construct the correct path
-        size_t doubleslash = uri.find("//");
+        size_t doubleslash = path.find("//");
         //The path is incorrectly formed without // after the first protocol
         if(doubleslash == wxString::npos)
             return NULL;
         //The path is incorrectly formed without // after the first protocol
         if(doubleslash == wxString::npos)
             return NULL;