Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: src/plugin/PluginClass.cpp

Issue 11043057: First run page triggering (Closed)
Patch Set: Comments addressed Created July 20, 2013, 8:11 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 #include "PluginStdAfx.h" 1 #include "PluginStdAfx.h"
2 2
3 #include "PluginClass.h" 3 #include "PluginClass.h"
4 #include "PluginSettings.h" 4 #include "PluginSettings.h"
5 #include "PluginSystem.h" 5 #include "PluginSystem.h"
6 #ifdef SUPPORT_FILTER 6 #ifdef SUPPORT_FILTER
7 #include "PluginFilter.h" 7 #include "PluginFilter.h"
8 #endif 8 #endif
9 #include "PluginMimeFilterClient.h" 9 #include "PluginMimeFilterClient.h"
10 #include "PluginClient.h" 10 #include "PluginClient.h"
(...skipping 804 matching lines...) Expand 10 before | Expand all | Expand 10 after
815 815
816 // Create status pane 816 // Create status pane
817 if (bBHO) 817 if (bBHO)
818 { 818 {
819 if (!CreateStatusBarPane()) 819 if (!CreateStatusBarPane())
820 { 820 {
821 return false; 821 return false;
822 } 822 }
823 } 823 }
824 824
825 if (CPluginClient::GetInstance()->IsFirstRun())
826 {
827 CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)CPluginClass::FirstRunThrea d, NULL, NULL, NULL);
828 }
829
825 CPluginSettings* settings = CPluginSettings::GetInstance(); 830 CPluginSettings* settings = CPluginSettings::GetInstance();
826 return true; 831 return true;
827 } 832 }
828 833
829 bool CPluginClass::CreateStatusBarPane() 834 bool CPluginClass::CreateStatusBarPane()
830 { 835 {
831 DEBUG_GENERAL(L"Getting client"); 836 DEBUG_GENERAL(L"Getting client");
832 837
833 CPluginClient* client = CPluginClient::GetInstance(); 838 CPluginClient* client = CPluginClient::GetInstance();
834 839
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
992 997
993 ::SendMessage(m_hStatusBarWnd, SB_GETPARTS, nPartCount, (LPARAM)pData); 998 ::SendMessage(m_hStatusBarWnd, SB_GETPARTS, nPartCount, (LPARAM)pData);
994 ::SendMessage(m_hStatusBarWnd, SB_SETPARTS, nPartCount, (LPARAM)pData); 999 ::SendMessage(m_hStatusBarWnd, SB_SETPARTS, nPartCount, (LPARAM)pData);
995 1000
996 delete[] pData; 1001 delete[] pData;
997 } 1002 }
998 HDC hdc = GetWindowDC(m_hStatusBarWnd); 1003 HDC hdc = GetWindowDC(m_hStatusBarWnd);
999 SendMessage(m_hStatusBarWnd, WM_PAINT, (WPARAM)hdc, 0); 1004 SendMessage(m_hStatusBarWnd, WM_PAINT, (WPARAM)hdc, 0);
1000 ReleaseDC(m_hStatusBarWnd, hdc); 1005 ReleaseDC(m_hStatusBarWnd, hdc);
1001 1006
1002 if (CPluginClient::GetInstance()->GetIsFirstRun())
1003 {
1004 CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)CPluginClass::FirstRunThrea d, NULL, NULL, NULL);
1005 }
1006
1007 return true; 1007 return true;
1008 } 1008 }
1009 1009
1010 void CPluginClass::FirstRunThread() 1010 void CPluginClass::FirstRunThread()
1011 { 1011 {
1012 // IE may still be not ready to navigate. Try until it is.
1013 VARIANT_BOOL isBusy = VARIANT_FALSE;
1014 while (GetAsyncBrowser()->get_Busy(&isBusy) == S_OK && isBusy != VARIANT_FALSE )
1015 {
1016 Sleep(100);
1017 }
1018 VARIANT vFlags; 1012 VARIANT vFlags;
1019 vFlags.vt = VT_I4; 1013 vFlags.vt = VT_I4;
1020 vFlags.intVal = navOpenInNewTab; 1014 vFlags.intVal = navOpenInNewTab;
1021 1015
1022 READYSTATE readyState;
1023 HRESULT hr;
1024 while ((hr = GetAsyncBrowser()->get_ReadyState(&readyState) == S_OK) && (ready State <= READYSTATE_LOADED))
1025 {
1026 Sleep(100);
1027 }
1028 CComBSTR bTest = CComBSTR(UserSettingsFirstRunPageUrl().c_str()); 1016 CComBSTR bTest = CComBSTR(UserSettingsFirstRunPageUrl().c_str());
1029 1017
1030 //Try 10 times, or until successful 1018 //Try 10 times, or until successful
1031 int numberOfAttempts = 0; 1019 int numberOfAttempts = 0;
1032 while ((hr != S_OK) && (numberOfAttempts < 10)) 1020 HRESULT hr = S_FALSE;
1021 hr = GetAsyncBrowser()->Navigate(bTest, &vFlags, NULL, NULL, NULL);
1022 if (FAILED(hr))
1033 { 1023 {
1034 hr = GetAsyncBrowser()->Navigate(bTest, &vFlags, NULL, NULL, NULL); 1024 vFlags.intVal = navOpenInNewWindow;
1035 if (FAILED(hr)) 1025 hr = GetAsyncBrowser()->Navigate(bTest, &vFlags, NULL, NULL, NULL);
Wladimir Palant 2013/07/21 11:53:45 Wrong indentation here?
1036 { 1026 }
1037 vFlags.intVal = navOpenInNewWindow;
1038 1027
1039 hr = GetAsyncBrowser()->Navigate(bTest, &vFlags, NULL, NULL, NULL); 1028
1040 if (FAILED(hr))
1041 {
1042 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION_SET TINGS, "Navigation::Failed")
1043 }
1044 }
1045 Sleep(100);
1046 }
1047 if (FAILED(hr)) 1029 if (FAILED(hr))
1048 { 1030 {
1049 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION_WELCOME , "Navigation::Welcome page failed") 1031 DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION_WELCOME , "Navigation::Welcome page failed")
1050 } 1032 }
1051 } 1033 }
1052 void CPluginClass::CloseTheme() 1034 void CPluginClass::CloseTheme()
1053 { 1035 {
1054 if (m_hTheme) 1036 if (m_hTheme)
1055 { 1037 {
1056 if (pfnClose) 1038 if (pfnClose)
(...skipping 872 matching lines...) Expand 10 before | Expand all | Expand 10 after
1929 } 1911 }
1930 } 1912 }
1931 } 1913 }
1932 1914
1933 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT); 1915 hTabWnd = ::GetWindow(hTabWnd, GW_HWNDNEXT);
1934 } 1916 }
1935 1917
1936 return hTabWnd; 1918 return hTabWnd;
1937 1919
1938 } 1920 }
OLDNEW

Powered by Google App Engine
This is Rietveld