HRESULT WinLauncher::loadURL(const BSTR& passedURL) { _bstr_t urlBStr(passedURL); if (!!urlBStr && (::PathFileExists(urlBStr) || ::PathIsUNC(urlBStr))) { TCHAR fileURL[INTERNET_MAX_URL_LENGTH]; DWORD fileURLLength = sizeof(fileURL) / sizeof(fileURL[0]); if (SUCCEEDED(::UrlCreateFromPath(urlBStr, fileURL, &fileURLLength, 0))) urlBStr = fileURL; } IWebFramePtr frame; HRESULT hr = m_webView->mainFrame(&frame.GetInterfacePtr()); if (FAILED(hr)) return hr; IWebMutableURLRequestPtr request; hr = WebKitCreateInstance(CLSID_WebMutableURLRequest, 0, IID_IWebMutableURLRequest, (void**)&request); if (FAILED(hr)) return hr; hr = request->initWithURL(wcsstr(static_cast<wchar_t*>(urlBStr), L"://") ? urlBStr : _bstr_t(L"http://") + urlBStr, WebURLRequestUseProtocolCachePolicy, 60); if (FAILED(hr)) return hr; _bstr_t methodBStr(L"GET"); hr = request->setHTTPMethod(methodBStr); if (FAILED(hr)) return hr; hr = frame->loadRequest(request); return hr; }
HRESULT MiniBrowserWebHost::updateAddressBar(IWebView& webView) { IWebFramePtr mainFrame; HRESULT hr = webView.mainFrame(&mainFrame.GetInterfacePtr()); if (FAILED(hr)) return hr; IWebDataSourcePtr dataSource; hr = mainFrame->dataSource(&dataSource.GetInterfacePtr()); if (FAILED(hr) || !dataSource) hr = mainFrame->provisionalDataSource(&dataSource.GetInterfacePtr()); if (FAILED(hr) || !dataSource) return hr; IWebMutableURLRequestPtr request; hr = dataSource->request(&request.GetInterfacePtr()); if (FAILED(hr) || !request) return hr; _bstr_t frameURL; hr = request->mainDocumentURL(frameURL.GetAddress()); if (FAILED(hr)) return hr; if (frameURL.length()) { m_client->pageLoadTestClient().setPageURL(frameURL); m_client->pageLoadTestClient().didCommitLoad(); } loadURL(frameURL); return S_OK; }
HRESULT WinLauncherWebHost::updateAddressBar(IWebView* webView) { IWebFramePtr mainFrame; HRESULT hr = webView->mainFrame(&mainFrame.GetInterfacePtr()); if (FAILED(hr)) return 0; IWebDataSourcePtr dataSource; hr = mainFrame->dataSource(&dataSource.GetInterfacePtr()); if (FAILED(hr) || !dataSource) hr = mainFrame->provisionalDataSource(&dataSource.GetInterfacePtr()); if (FAILED(hr) || !dataSource) return 0; IWebMutableURLRequestPtr request; hr = dataSource->request(&request.GetInterfacePtr()); if (FAILED(hr) || !request) return 0; _bstr_t frameURL; hr = request->mainDocumentURL(frameURL.GetAddress()); if (FAILED(hr)) return 0; ::SendMessage(hURLBarWnd, static_cast<UINT>(WM_SETTEXT), 0, reinterpret_cast<LPARAM>(frameURL.GetBSTR())); return 0; }
HRESULT MiniBrowserWebHost::didHandleOnloadEventsForFrame(_In_opt_ IWebView* sender, _In_opt_ IWebFrame* frame) { IWebDataSourcePtr dataSource; HRESULT hr = frame->dataSource(&dataSource.GetInterfacePtr()); if (FAILED(hr) || !dataSource) hr = frame->provisionalDataSource(&dataSource.GetInterfacePtr()); if (FAILED(hr) || !dataSource) return hr; IWebMutableURLRequestPtr request; hr = dataSource->request(&request.GetInterfacePtr()); if (FAILED(hr) || !request) return hr; _bstr_t frameURL; hr = request->mainDocumentURL(frameURL.GetAddress()); if (FAILED(hr)) return hr; if (frameURL.length()) m_client->pageLoadTestClient().didHandleOnLoadEvents(); return S_OK; }