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

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

Issue 10800092: Use libadblockplus update checker (Closed)
Patch Set: Addressed review comments Created June 7, 2013, 5:27 a.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 <ctime> 3 #include <ctime>
4 4
5 #include "PluginClass.h" 5 #include "PluginClass.h"
6 #include "PluginDictionary.h" 6 #include "PluginDictionary.h"
7 #include "PluginSettings.h" 7 #include "PluginSettings.h"
8 #include "PluginSystem.h" 8 #include "PluginSystem.h"
9 #include "PluginConfiguration.h" 9 #include "PluginConfiguration.h"
10 #ifdef SUPPORT_FILTER 10 #ifdef SUPPORT_FILTER
11 #include "PluginFilter.h" 11 #include "PluginFilter.h"
12 #endif 12 #endif
13 #ifdef SUPPORT_CONFIG 13 #ifdef SUPPORT_CONFIG
14 #include "PluginConfig.h" 14 #include "PluginConfig.h"
15 #endif 15 #endif
16 #include "PluginMimeFilterClient.h" 16 #include "PluginMimeFilterClient.h"
17 17
18 #include "PluginUpdateDialog.h"
19 #include "PluginDownloadDialog.h"
20 #include "PluginClient.h" 18 #include "PluginClient.h"
21 #include "PluginClientFactory.h" 19 #include "PluginClientFactory.h"
22 #include "PluginWbPassThrough.h" 20 #include "PluginWbPassThrough.h"
23 #include "PluginHttpRequest.h" 21 #include "PluginHttpRequest.h"
24 22
25 #include "ProtocolImpl.h" 23 #include "ProtocolImpl.h"
26 #include "ProtocolCF.h" 24 #include "ProtocolCF.h"
27 25
28 HANDLE CPluginClass::s_hMainThread = NULL; 26 HANDLE CPluginClass::s_hMainThread = NULL;
29 bool CPluginClass::s_isMainThreadDone = false; 27 bool CPluginClass::s_isMainThreadDone = false;
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 130
133 if (wInfoSettings == wInfo) 131 if (wInfoSettings == wInfo)
134 { 132 {
135 settings->Remove(SETTING_PLUGIN_INFO_PANEL); 133 settings->Remove(SETTING_PLUGIN_INFO_PANEL);
136 settings->Write(); 134 settings->Write();
137 } 135 }
138 } 136 }
139 } 137 }
140 138
141 // -------------------------------------------------------------------- 139 // --------------------------------------------------------------------
142 // Should update plugin ?
143 // --------------------------------------------------------------------
144
145 if (!IsMainThreadDone(hMainThread) && settings->IsPluginUpdateAvailable())
146 {
147 DEBUG_THREAD(L"Thread::Should update plugin");
148
149 CString lastUpdateStr = settings->GetString(SETTING_PLUGIN_UPDATE_TIME);
150
151 std::time_t today = std::time(NULL);
152 std::time_t lastUpdate = lastUpdateStr.IsEmpty() ? today : _wtoi(lastUpdateS tr.GetBuffer());
153
154 if (today != (std::time_t)(-1) && lastUpdate != (std::time_t)(-1))
155 {
156 if (today == lastUpdate || std::difftime(today, lastUpdate) / (60 * 60 * 2 4) >= 5.0)
157 {
158 CString updateVersion = settings->GetString(SETTING_PLUGIN_UPDATE_VERSIO N);
159
160 DEBUG_GENERAL(L"*** Displaying update plugin dialog for version " + upda teVersion);
161
162 // Show update dialog
163 CUpdateDialog uDlg;
164
165 uDlg.SetVersions(updateVersion, IEPLUGIN_VERSION);
166
167 if (uDlg.DoModal(::GetDesktopWindow()) == IDOK)
168 {
169 s_isPluginToBeUpdated = true;
170 }
171
172 settings->SetValue(SETTING_PLUGIN_UPDATE_TIME, (int)today);
173 settings->Write();
174 }
175 }
176 }
177
178 // --------------------------------------------------------------------
179 // Main loop 140 // Main loop
180 // -------------------------------------------------------------------- 141 // --------------------------------------------------------------------
181 142
182 DWORD mainLoopIteration = 1; 143 DWORD mainLoopIteration = 1;
183 144
184 while (!IsMainThreadDone(hMainThread)) 145 while (!IsMainThreadDone(hMainThread))
185 { 146 {
186 CString sMainLoopIteration; 147 CString sMainLoopIteration;
187 sMainLoopIteration.Format(L"%u", mainLoopIteration); 148 sMainLoopIteration.Format(L"%u", mainLoopIteration);
188 149
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 #ifdef SUPPORT_FILTER 197 #ifdef SUPPORT_FILTER
237 DEBUG_GENERAL("*** before isNewFilterVersion"); 198 DEBUG_GENERAL("*** before isNewFilterVersion");
238 199
239 // Update filters, if needed (5 days * (random() * 0.4 + 0.8)) 200 // Update filters, if needed (5 days * (random() * 0.4 + 0.8))
240 if (isNewFilterVersion) 201 if (isNewFilterVersion)
241 { 202 {
242 203
243 DEBUG_GENERAL("*** before CheckFilterAndDownload"); 204 DEBUG_GENERAL("*** before CheckFilterAndDownload");
244 settings->RefreshFilterlist(); 205 settings->RefreshFilterlist();
245 206
246 settings->MakeRequestForUpdate();
247
248 207
249 settings->Write(); 208 settings->Write();
250 209
251 tab->OnUpdate(); 210 tab->OnUpdate();
252 } 211 }
253 #endif // SUPPORT_FILTER 212 #endif // SUPPORT_FILTER
254 } 213 }
255 } 214 }
256 215
257 216
258 #ifndef ENTERPRISE
259 // --------------------------------------------------------------------
260 // Update plugin
261 // --------------------------------------------------------------------
262
263 if (!IsMainThreadDone(hMainThread) && s_isPluginToBeUpdated)
264 {
265 DEBUG_GENERAL(L"*** Displaying download plugin dialog");
266
267 s_isPluginToBeUpdated = false;
268
269 try
270 {
271 CString updateUrl = settings->GetString(SETTING_PLUGIN_UPDATE_URL);
272 CString updatePath = L"";
273 if (updateUrl.Find(L".exe") == updateUrl.GetLength() - 4)
274 {
275 updatePath = CPluginSettings::GetTempPath(INSTALL_EXE_FILE);
276 // Delete old installer
277 ::DeleteFile(CPluginSettings::GetTempPath(INSTALL_EXE_FILE));
278 }
279 else
280 {
281 updatePath = CPluginSettings::GetTempPath(INSTALL_MSI_FILE);
282 // Delete old installer
283 ::DeleteFile(CPluginSettings::GetTempPath(INSTALL_MSI_FILE));
284 }
285
286 CPluginDownloadDialog dlDlg;
287
288 dlDlg.SetUrlAndPath(updateUrl, updatePath);
289 if (dlDlg.DoModal(::GetDesktopWindow()) == IDC_INSTALLBTN)
290 {
291 LaunchUpdater(updatePath);
292 #ifdef AUTOMATIC_SHUTDOWN
293 settings->EraseTab();
294 ::ExitProcess(0);
295 #endif // AUTOMATIC_SHUTDOWN
296 }
297 }
298 catch (std::runtime_error& er)
299 {
300 DEBUG_ERROR(er.what());
301 }
302 }
303 #endif
304 // ---------------------------------------------------------------- 217 // ----------------------------------------------------------------
305 // End loop 218 // End loop
306 // ---------------------------------------------------------------- 219 // ----------------------------------------------------------------
307 220
308 if (!IsMainThreadDone(hMainThread)) 221 if (!IsMainThreadDone(hMainThread))
309 { 222 {
310 bool isDone = false; 223 bool isDone = false;
311 DWORD sleepLoopIteration = 1; 224 DWORD sleepLoopIteration = 1;
312 225
313 // Sleep loop 226 // Sleep loop
314 while (!isDone && !IsMainThreadDone(hMainThread) && !s_isPluginToBeUpdat ed) 227 while (!isDone && !IsMainThreadDone(hMainThread))
315 { 228 {
316 // Non-hanging sleep 229 // Non-hanging sleep
317 Sleep(5000); 230 Sleep(5000);
318 231
319 if (sleepLoopIteration++ % (TIMER_THREAD_SLEEP_USER_REGISTRATION) == 0 ) 232 if (sleepLoopIteration++ % (TIMER_THREAD_SLEEP_USER_REGISTRATION) == 0 )
320 { 233 {
321 isDone = true; 234 isDone = true;
322 } 235 }
323 } 236 }
324 } 237 }
(...skipping 24 matching lines...) Expand all
349 bool isDone = false; 262 bool isDone = false;
350 263
351 s_criticalSectionLocal.Lock(); 264 s_criticalSectionLocal.Lock();
352 { 265 {
353 isDone = s_isMainThreadDone || mainThread != s_hMainThread; 266 isDone = s_isMainThreadDone || mainThread != s_hMainThread;
354 } 267 }
355 s_criticalSectionLocal.Unlock(); 268 s_criticalSectionLocal.Unlock();
356 269
357 return isDone; 270 return isDone;
358 } 271 }
OLDNEW

Powered by Google App Engine
This is Rietveld