OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 //------------------------------------------------------------------------------ | 5 //------------------------------------------------------------------------------ |
6 // Description of the life cycle of a instance of MetricsService. | 6 // Description of the life cycle of a instance of MetricsService. |
7 // | 7 // |
8 // OVERVIEW | 8 // OVERVIEW |
9 // | 9 // |
10 // A MetricsService instance is typically created at application startup. It | 10 // A MetricsService instance is typically created at application startup. It |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 #include "chrome/browser/metrics/metrics_service.h" | 145 #include "chrome/browser/metrics/metrics_service.h" |
146 | 146 |
147 #include "base/bind.h" | 147 #include "base/bind.h" |
148 #include "base/callback.h" | 148 #include "base/callback.h" |
149 #include "base/command_line.h" | 149 #include "base/command_line.h" |
150 #include "base/md5.h" | 150 #include "base/md5.h" |
151 #include "base/metrics/histogram.h" | 151 #include "base/metrics/histogram.h" |
152 #include "base/string_number_conversions.h" | 152 #include "base/string_number_conversions.h" |
153 #include "base/threading/platform_thread.h" | 153 #include "base/threading/platform_thread.h" |
154 #include "base/threading/thread.h" | 154 #include "base/threading/thread.h" |
| 155 #include "base/threading/thread_restrictions.h" |
155 #include "base/utf_string_conversions.h" | 156 #include "base/utf_string_conversions.h" |
156 #include "base/values.h" | 157 #include "base/values.h" |
157 #include "chrome/browser/bookmarks/bookmark_model.h" | 158 #include "chrome/browser/bookmarks/bookmark_model.h" |
158 #include "chrome/browser/browser_process.h" | 159 #include "chrome/browser/browser_process.h" |
159 #include "chrome/browser/extensions/extension_service.h" | 160 #include "chrome/browser/extensions/extension_service.h" |
160 #include "chrome/browser/extensions/process_map.h" | 161 #include "chrome/browser/extensions/process_map.h" |
161 #include "chrome/browser/io_thread.h" | 162 #include "chrome/browser/io_thread.h" |
162 #include "chrome/browser/memory_details.h" | 163 #include "chrome/browser/memory_details.h" |
163 #include "chrome/browser/metrics/histogram_synchronizer.h" | 164 #include "chrome/browser/metrics/histogram_synchronizer.h" |
164 #include "chrome/browser/metrics/metrics_log.h" | 165 #include "chrome/browser/metrics/metrics_log.h" |
(...skipping 1266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1431 PrefService* pref = g_browser_process->local_state(); | 1432 PrefService* pref = g_browser_process->local_state(); |
1432 pref->SetBoolean(prefs::kStabilityExitedCleanly, true); | 1433 pref->SetBoolean(prefs::kStabilityExitedCleanly, true); |
1433 pref->CommitPendingWrite(); | 1434 pref->CommitPendingWrite(); |
1434 // Hack: TBD: Remove this wait. | 1435 // Hack: TBD: Remove this wait. |
1435 // We are so concerned that the pref gets written, we are now willing to stall | 1436 // We are so concerned that the pref gets written, we are now willing to stall |
1436 // the UI thread until we get assurance that a pref-writing task has | 1437 // the UI thread until we get assurance that a pref-writing task has |
1437 // completed. | 1438 // completed. |
1438 base::WaitableEvent done_writing(false, false); | 1439 base::WaitableEvent done_writing(false, false); |
1439 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, | 1440 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
1440 base::Bind(Signal, &done_writing)); | 1441 base::Bind(Signal, &done_writing)); |
| 1442 // http://crbug.com/124954 |
| 1443 base::ThreadRestrictions::ScopedAllowWait allow_wait; |
1441 done_writing.TimedWait(base::TimeDelta::FromHours(1)); | 1444 done_writing.TimedWait(base::TimeDelta::FromHours(1)); |
1442 | 1445 |
1443 // Redundant setting to assure that we always reset this value at shutdown | 1446 // Redundant setting to assure that we always reset this value at shutdown |
1444 // (and that we don't use some alternate path, and not call LogCleanShutdown). | 1447 // (and that we don't use some alternate path, and not call LogCleanShutdown). |
1445 clean_shutdown_status_ = CLEANLY_SHUTDOWN; | 1448 clean_shutdown_status_ = CLEANLY_SHUTDOWN; |
1446 | 1449 |
1447 RecordBooleanPrefValue(prefs::kStabilityExitedCleanly, true); | 1450 RecordBooleanPrefValue(prefs::kStabilityExitedCleanly, true); |
1448 } | 1451 } |
1449 | 1452 |
1450 #if defined(OS_CHROMEOS) | 1453 #if defined(OS_CHROMEOS) |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1670 if (local_state) { | 1673 if (local_state) { |
1671 const PrefService::Preference* uma_pref = | 1674 const PrefService::Preference* uma_pref = |
1672 local_state->FindPreference(prefs::kMetricsReportingEnabled); | 1675 local_state->FindPreference(prefs::kMetricsReportingEnabled); |
1673 if (uma_pref) { | 1676 if (uma_pref) { |
1674 bool success = uma_pref->GetValue()->GetAsBoolean(&result); | 1677 bool success = uma_pref->GetValue()->GetAsBoolean(&result); |
1675 DCHECK(success); | 1678 DCHECK(success); |
1676 } | 1679 } |
1677 } | 1680 } |
1678 return result; | 1681 return result; |
1679 } | 1682 } |
OLD | NEW |