OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 // | 4 // |
5 // This code glues the RLZ library DLL with Chrome. It allows Chrome to work | 5 // This code glues the RLZ library DLL with Chrome. It allows Chrome to work |
6 // with or without the DLL being present. If the DLL is not present the | 6 // with or without the DLL being present. If the DLL is not present the |
7 // functions do nothing and just return false. | 7 // functions do nothing and just return false. |
8 | 8 |
9 #include "chrome/browser/rlz/rlz.h" | 9 #include "chrome/browser/rlz/rlz.h" |
10 | 10 |
11 #include <windows.h> | |
12 #include <process.h> | |
13 | |
14 #include <algorithm> | 11 #include <algorithm> |
15 | 12 |
16 #include "base/bind.h" | 13 #include "base/bind.h" |
17 #include "base/bind_helpers.h" | 14 #include "base/bind_helpers.h" |
18 #include "base/file_path.h" | 15 #include "base/file_path.h" |
19 #include "base/message_loop.h" | 16 #include "base/message_loop.h" |
20 #include "base/path_service.h" | 17 #include "base/path_service.h" |
21 #include "base/string_util.h" | 18 #include "base/string_util.h" |
22 #include "base/synchronization/lock.h" | 19 #include "base/synchronization/lock.h" |
23 #include "base/threading/thread.h" | 20 #include "base/threading/thread.h" |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
224 schedule_ping = true; | 221 schedule_ping = true; |
225 } | 222 } |
226 | 223 |
227 already_ran_ = true; | 224 already_ran_ = true; |
228 | 225 |
229 if (schedule_ping) | 226 if (schedule_ping) |
230 ScheduleFinancialPing(); | 227 ScheduleFinancialPing(); |
231 } | 228 } |
232 | 229 |
233 void RLZTracker::ScheduleFinancialPing() { | 230 void RLZTracker::ScheduleFinancialPing() { |
234 // Investigate why _beginthread() is used here, and not chrome's threading | 231 // TODO(thakis): Once akalin's TaskRunner around PostTask() is done, |
235 // API. Tracked in bug http://crbug.com/106213 | 232 // use that instead of the file thread. |
236 _beginthread(PingNow, 0, this); | 233 BrowserThread::PostTask( |
237 } | 234 BrowserThread::FILE, |
238 | 235 FROM_HERE, |
239 // static | 236 base::Bind(&RLZTracker::PingNowImpl, base::Unretained(this))); |
240 void _cdecl RLZTracker::PingNow(void* arg) { | |
241 RLZTracker* tracker = reinterpret_cast<RLZTracker*>(arg); | |
242 tracker->PingNowImpl(); | |
243 } | 237 } |
244 | 238 |
245 void RLZTracker::PingNowImpl() { | 239 void RLZTracker::PingNowImpl() { |
246 // This is the entry point of a background thread, so I/O is allowed. | |
247 base::ThreadRestrictions::ScopedAllowIO allow_io; | |
248 | |
249 string16 lang; | 240 string16 lang; |
250 GoogleUpdateSettings::GetLanguage(&lang); | 241 GoogleUpdateSettings::GetLanguage(&lang); |
251 if (lang.empty()) | 242 if (lang.empty()) |
252 lang = L"en"; | 243 lang = L"en"; |
253 string16 referral; | 244 string16 referral; |
254 GoogleUpdateSettings::GetReferral(&referral); | 245 GoogleUpdateSettings::GetReferral(&referral); |
255 | 246 |
256 std::string brand; | 247 std::string brand; |
257 if (google_util::GetBrand(&brand) && !IsBrandOrganic(brand) && | 248 if (google_util::GetBrand(&brand) && !IsBrandOrganic(brand) && |
258 SendFinancialPing(brand, lang, referral)) { | 249 SendFinancialPing(brand, lang, referral)) { |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 base::Bind(base::IgnoreResult(&RLZTracker::GetAccessPointRlz), point, | 393 base::Bind(base::IgnoreResult(&RLZTracker::GetAccessPointRlz), point, |
403 not_used)); | 394 not_used)); |
404 return true; | 395 return true; |
405 } | 396 } |
406 | 397 |
407 // static | 398 // static |
408 void RLZTracker::CleanupRlz() { | 399 void RLZTracker::CleanupRlz() { |
409 GetInstance()->rlz_cache_.clear(); | 400 GetInstance()->rlz_cache_.clear(); |
410 GetInstance()->registrar_.RemoveAll(); | 401 GetInstance()->registrar_.RemoveAll(); |
411 } | 402 } |
OLD | NEW |