DWORD WINAPI CIEBrowserEngine::NavigationTimeoutThread( LPVOID lpParameter ) { CIEBrowserEngine* pIEEng = reinterpret_cast<CIEBrowserEngine*>(lpParameter); if (pIEEng->m_dwNavigationTimeout != 0) { LOG(TRACE) + "Mobile NavThread Started\n"; if(pIEEng->m_hNavigated==NULL) pIEEng->m_hNavigated = CreateEvent(NULL, TRUE, FALSE, L"PB_IEENGINE_NAVIGATION_IN_PROGRESS"); if(WaitForSingleObject(pIEEng->m_hNavigated, pIEEng->m_dwNavigationTimeout) != WAIT_OBJECT_0) { //no point in doing anything as there is no event handler pIEEng->StopOnTab(0); CloseHandle(pIEEng->m_hNavigated); pIEEng->m_hNavigated = NULL; SendMessage(pIEEng->m_parentHWND, WM_BROWSER_ONNAVIGATIONTIMEOUT, (WPARAM)pIEEng->m_tabID, (LPARAM)pIEEng->m_tcNavigatedURL); } LOG(TRACE) + "NavThread Ended\n"; } return 0; }
DWORD WINAPI CIEBrowserEngine::NavigationTimeoutThread( LPVOID lpParameter ) { CIEBrowserEngine* pIEEng = reinterpret_cast<CIEBrowserEngine*>(lpParameter); DWORD dwWaitResult; bool flag=false; HWND authwindowhandle; if (pIEEng->m_dwNavigationTimeout != 0) { LOG(TRACE) + "Mobile NavThread Started\n"; do { dwWaitResult = WaitForSingleObject(pIEEng->m_hNavigated, pIEEng->m_dwNavigationTimeout); switch (dwWaitResult) { // Event object was signaled case WAIT_OBJECT_0: // // TODO: Read from the shared buffer // LOG(INFO) + "NavigationTimeoutThread:Event object was signaled\n"; CloseHandle(pIEEng->m_hNavigated); pIEEng->m_hNavigated = NULL; flag=false; break; case WAIT_TIMEOUT: // // TODO: Read from the shared buffer // LOG(INFO) + "NavigationTimeoutThread:timeout\n"; HWND currentForeGroundWindowHandle; currentForeGroundWindowHandle = GetForegroundWindow(); wchar_t szBuf[200]; if(currentForeGroundWindowHandle!=NULL) { GetWindowText(currentForeGroundWindowHandle,szBuf,199); LOG(INFO) + szBuf; } authwindowhandle = FindWindow(null,L"Enter Network Password"); if(authwindowhandle) { LOG(INFO) + "Authentication window present"; LOG(INFO) + "NavigationTimeoutThread:Authentication popup\n"; flag=true; break; } else { flag=false; LOG(INFO) + "NavigationTimeoutThread:Navigation Timed out\n"; LOG(INFO) + "Authentication window not present"; } pIEEng->StopOnTab(0); CloseHandle(pIEEng->m_hNavigated); pIEEng->m_hNavigated = NULL; SendMessage(pIEEng->m_parentHWND, WM_BROWSER_ONNAVIGATIONTIMEOUT, (WPARAM)pIEEng->m_tabID, (LPARAM)_tcsdup(pIEEng->m_tcNavigatedURL)); break; // An error occurred default: LOG(INFO) + "Wait error GetLastError()=\n"+ GetLastError(); flag=false; return 0; } LOG(TRACE) + "NavThread Ended\n"; }while(flag); } return 0; }