Add "http://" to the url if url hasn`t protocol
authorIvan Sinitsin <ivan@etersoft.ru>
Mon, 28 Apr 2008 14:00:56 +0000 (18:00 +0400)
committerKonstantin Kondratyuk <kondratyuk@etersoft.ru>
Mon, 28 Apr 2008 14:00:56 +0000 (18:00 +0400)
dlls/shdocvw/navigate.c

index 7ca0b0f56b357e6f3efabba53ed661b44de93ef5..25a6ae952ea41f057eb2856b214a5856b650e7d3 100644 (file)
@@ -689,8 +689,19 @@ HRESULT navigate_url(DocHost *This, LPCWSTR url, const VARIANT *Flags,
     PBYTE post_data = NULL;
     ULONG post_data_len = 0;
     LPWSTR headers = NULL;
+    static const WCHAR httpW[] = {'h','t','t','p',':','/','/',0};
+    WCHAR *new_url;
 
     TRACE("navigating to %s\n", debugstr_w(url));
+    if(!strchrW(url, ':')) {
+       new_url = HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*(strlenW(url)+8));
+       strcpyW(new_url, httpW);
+       new_url = strcatW(new_url,url);
+       TRACE("Add Default protocol /n");
+    } else {
+       new_url = HeapAlloc(GetProcessHeap(),0,sizeof(WCHAR)*strlenW(url)+1);
+       strcpyW(new_url, url);
+    }
 
     if((Flags && V_VT(Flags) != VT_EMPTY) 
        || (TargetFrameName && V_VT(TargetFrameName) != VT_EMPTY))
@@ -716,13 +727,14 @@ HRESULT navigate_url(DocHost *This, LPCWSTR url, const VARIANT *Flags,
     }
 
     task = heap_alloc(sizeof(*task));
-    task->bsc = create_callback(This, url, post_data, post_data_len, headers);
+    task->bsc = create_callback(This, new_url, post_data, post_data_len, headers);
 
     if(post_data)
         SafeArrayUnaccessData(V_ARRAY(PostData));
 
     push_dochost_task(This, &task->header, navigate_bsc_proc, This->url == NULL);
 
+    HeapFree(GetProcessHeap(),0,new_url);
     return S_OK;
 }