Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1809)

Unified Diff: components/metrics/file_metrics_provider.cc

Issue 2965753002: [Cleanup] Migrate the FileMetricsProvider to use the Task Scheduler. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/metrics/file_metrics_provider.h ('k') | components/metrics/file_metrics_provider_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/metrics/file_metrics_provider.cc
diff --git a/components/metrics/file_metrics_provider.cc b/components/metrics/file_metrics_provider.cc
index 61297c6e32b198084f64e80e1f2d339cbb8c3b6f..71f9c7739d77a38b3a09744b69e271ade30ee8c2 100644
--- a/components/metrics/file_metrics_provider.cc
+++ b/components/metrics/file_metrics_provider.cc
@@ -17,6 +17,8 @@
#include "base/metrics/persistent_memory_allocator.h"
#include "base/strings/string_piece.h"
#include "base/task_runner.h"
+#include "base/task_scheduler/post_task.h"
+#include "base/task_scheduler/task_traits.h"
#include "base/time/time.h"
#include "components/metrics/metrics_pref_names.h"
#include "components/metrics/metrics_service.h"
@@ -93,6 +95,20 @@ void DeleteFileWhenPossible(const base::FilePath& path) {
base::File::FLAG_DELETE_ON_CLOSE);
}
+// A task runner to use for testing.
+base::TaskRunner* g_task_runner_for_testing = nullptr;
+
+// Returns a task runner appropriate for running background tasks that perform
+// file I/O.
+scoped_refptr<base::TaskRunner> CreateBackgroundTaskRunner() {
+ if (g_task_runner_for_testing)
+ return scoped_refptr<base::TaskRunner>(g_task_runner_for_testing);
+
+ return base::CreateTaskRunnerWithTraits(
+ {base::MayBlock(), base::TaskPriority::BACKGROUND,
+ base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN});
bcwhite 2017/07/04 14:50:31 I don't think there's anything in here that needs
Ilya Sherman 2017/07/05 18:15:56 Done.
+}
+
} // namespace
// This structure stores all the information about the sources being monitored
@@ -133,10 +149,8 @@ struct FileMetricsProvider::SourceInfo {
DISALLOW_COPY_AND_ASSIGN(SourceInfo);
};
-FileMetricsProvider::FileMetricsProvider(
- const scoped_refptr<base::TaskRunner>& task_runner,
- PrefService* local_state)
- : task_runner_(task_runner),
+FileMetricsProvider::FileMetricsProvider(PrefService* local_state)
+ : task_runner_(CreateBackgroundTaskRunner()),
pref_service_(local_state),
weak_factory_(this) {
base::StatisticsRecorder::RegisterHistogramProvider(
@@ -149,7 +163,7 @@ void FileMetricsProvider::RegisterSource(const base::FilePath& path,
SourceType type,
SourceAssociation source_association,
const base::StringPiece prefs_key) {
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Ensure that kSourceOptions has been filled for this type.
DCHECK_GT(arraysize(kSourceOptions), static_cast<size_t>(type));
@@ -197,6 +211,12 @@ void FileMetricsProvider::RegisterPrefs(PrefRegistrySimple* prefs,
prefs_key.as_string(), 0);
}
+// static
+void FileMetricsProvider::SetTaskRunnerForTesting(
+ const scoped_refptr<base::TaskRunner>& task_runner) {
+ g_task_runner_for_testing = task_runner.get();
bcwhite 2017/07/04 14:50:31 Delete the existing one if set.
Ilya Sherman 2017/07/05 18:15:56 There's no ownership, so it doesn't make sense to
bcwhite 2017/07/05 18:31:51 Acknowledged.
+}
+
// static
bool FileMetricsProvider::LocateNextFileInDirectory(SourceInfo* source) {
DCHECK_EQ(SOURCE_HISTOGRAMS_ATOMIC_DIR, source->type);
@@ -438,7 +458,7 @@ void FileMetricsProvider::RecordHistogramSnapshotsFromSource(
}
void FileMetricsProvider::ScheduleSourcesCheck() {
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
if (sources_to_check_.empty())
return;
@@ -457,7 +477,7 @@ void FileMetricsProvider::ScheduleSourcesCheck() {
}
void FileMetricsProvider::RecordSourcesChecked(SourceInfoList* checked) {
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Sources that still have an allocator at this point are read/write "active"
// files that may need their contents merged on-demand. If there is no
@@ -498,7 +518,7 @@ void FileMetricsProvider::DeleteFileAsync(const base::FilePath& path) {
}
void FileMetricsProvider::RecordSourceAsRead(SourceInfo* source) {
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Persistently record the "last seen" timestamp of the source file to
// ensure that the file is never read again unless it is modified again.
@@ -510,7 +530,7 @@ void FileMetricsProvider::RecordSourceAsRead(SourceInfo* source) {
}
void FileMetricsProvider::OnDidCreateMetricsLog() {
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Schedule a check to see if there are new metrics to load. If so, they
// will be reported during the next collection run after this one. The
@@ -531,7 +551,7 @@ void FileMetricsProvider::OnDidCreateMetricsLog() {
bool FileMetricsProvider::ProvideIndependentMetrics(
SystemProfileProto* system_profile_proto,
base::HistogramSnapshotManager* snapshot_manager) {
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
while (!sources_with_profile_.empty()) {
SourceInfo* source = sources_with_profile_.begin()->get();
@@ -562,7 +582,7 @@ bool FileMetricsProvider::ProvideIndependentMetrics(
}
bool FileMetricsProvider::HasInitialStabilityMetrics() {
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Measure the total time spent checking all sources as well as the time
// per individual file. This method is called during startup and thus blocks
@@ -618,7 +638,7 @@ bool FileMetricsProvider::HasInitialStabilityMetrics() {
void FileMetricsProvider::RecordInitialHistogramSnapshots(
base::HistogramSnapshotManager* snapshot_manager) {
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Measure the total time spent processing all sources as well as the time
// per individual file. This method is called during startup and thus blocks
@@ -645,7 +665,7 @@ void FileMetricsProvider::RecordInitialHistogramSnapshots(
}
void FileMetricsProvider::MergeHistogramDeltas() {
- DCHECK(thread_checker_.CalledOnValidThread());
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Measure the total time spent processing all sources as well as the time
// per individual file. This method is called on the UI thread so it's
« no previous file with comments | « components/metrics/file_metrics_provider.h ('k') | components/metrics/file_metrics_provider_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698