summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/metrics/chrome_metrics_service_client.cc8
-rw-r--r--chrome/browser/metrics/chrome_metrics_service_client.h4
-rw-r--r--chrome/chrome_browser.gypi7
-rw-r--r--chrome/chrome_tests_unit.gypi1
-rw-r--r--components/components_tests.gyp1
-rw-r--r--components/metrics.gypi7
-rw-r--r--components/metrics/BUILD.gn8
-rw-r--r--components/metrics/drive_metrics_provider.cc (renamed from chrome/browser/metrics/drive_metrics_provider.cc)29
-rw-r--r--components/metrics/drive_metrics_provider.h (renamed from chrome/browser/metrics/drive_metrics_provider.h)36
-rw-r--r--components/metrics/drive_metrics_provider_android.cc (renamed from chrome/browser/metrics/drive_metrics_provider_android.cc)6
-rw-r--r--components/metrics/drive_metrics_provider_ios.mm (renamed from chrome/browser/metrics/drive_metrics_provider_ios.mm)6
-rw-r--r--components/metrics/drive_metrics_provider_linux.cc (renamed from chrome/browser/metrics/drive_metrics_provider_linux.cc)6
-rw-r--r--components/metrics/drive_metrics_provider_mac.mm (renamed from chrome/browser/metrics/drive_metrics_provider_mac.mm)14
-rw-r--r--components/metrics/drive_metrics_provider_unittest.cc (renamed from chrome/browser/metrics/drive_metrics_provider_unittest.cc)6
-rw-r--r--components/metrics/drive_metrics_provider_win.cc (renamed from chrome/browser/metrics/drive_metrics_provider_win.cc)22
15 files changed, 106 insertions, 55 deletions
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc
index e77d03c..ae947c3 100644
--- a/chrome/browser/metrics/chrome_metrics_service_client.cc
+++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
@@ -20,17 +20,18 @@
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/google/google_brand.h"
#include "chrome/browser/metrics/chrome_stability_metrics_provider.h"
-#include "chrome/browser/metrics/drive_metrics_provider.h"
#include "chrome/browser/metrics/omnibox_metrics_provider.h"
#include "chrome/browser/metrics/time_ticks_experiment_win.h"
#include "chrome/browser/process_resource_usage.h"
#include "chrome/browser/ui/browser_otr_state.h"
#include "chrome/common/chrome_constants.h"
+#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/crash_keys.h"
#include "chrome/common/metrics/version_utils.h"
#include "chrome/common/pref_names.h"
#include "components/metrics/call_stack_profile_metrics_provider.h"
+#include "components/metrics/drive_metrics_provider.h"
#include "components/metrics/gpu/gpu_metrics_provider.h"
#include "components/metrics/metrics_service.h"
#include "components/metrics/net/net_metrics_log_uploader.h"
@@ -350,7 +351,10 @@ void ChromeMetricsServiceClient::Initialize() {
metrics_service_->RegisterMetricsProvider(
scoped_ptr<metrics::MetricsProvider>(new metrics::GPUMetricsProvider));
- drive_metrics_provider_ = new DriveMetricsProvider;
+ drive_metrics_provider_ = new metrics::DriveMetricsProvider(
+ content::BrowserThread::GetMessageLoopProxyForThread(
+ content::BrowserThread::FILE),
+ chrome::FILE_LOCAL_STATE);
metrics_service_->RegisterMetricsProvider(
scoped_ptr<metrics::MetricsProvider>(drive_metrics_provider_));
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.h b/chrome/browser/metrics/chrome_metrics_service_client.h
index d4fe09c..ee879a5 100644
--- a/chrome/browser/metrics/chrome_metrics_service_client.h
+++ b/chrome/browser/metrics/chrome_metrics_service_client.h
@@ -20,7 +20,6 @@
#include "content/public/browser/notification_registrar.h"
class ChromeOSMetricsProvider;
-class DriveMetricsProvider;
class GoogleUpdateMetricsProviderWin;
class PluginMetricsProvider;
class PrefRegistrySimple;
@@ -36,6 +35,7 @@ class FilePath;
} // namespace base
namespace metrics {
+class DriveMetricsProvider;
class MetricsService;
class MetricsStateManager;
class ProfilerMetricsProvider;
@@ -174,7 +174,7 @@ class ChromeMetricsServiceClient
// The DriveMetricsProvider instance that was registered with MetricsService.
// Has the same lifetime as |metrics_service_|.
- DriveMetricsProvider* drive_metrics_provider_;
+ metrics::DriveMetricsProvider* drive_metrics_provider_;
// Callback that is called when initial metrics gathering is complete.
base::Closure finished_gathering_initial_metrics_callback_;
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index aff840c..61b279a 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -1817,13 +1817,6 @@
'browser/metrics/chrome_metrics_service_client.h',
'browser/metrics/chrome_stability_metrics_provider.cc',
'browser/metrics/chrome_stability_metrics_provider.h',
- 'browser/metrics/drive_metrics_provider.cc',
- 'browser/metrics/drive_metrics_provider.h',
- 'browser/metrics/drive_metrics_provider_android.cc',
- 'browser/metrics/drive_metrics_provider_ios.mm',
- 'browser/metrics/drive_metrics_provider_linux.cc',
- 'browser/metrics/drive_metrics_provider_mac.mm',
- 'browser/metrics/drive_metrics_provider_win.cc',
'browser/metrics/field_trial_synchronizer.cc',
'browser/metrics/field_trial_synchronizer.h',
'browser/metrics/first_web_contents_profiler.cc',
diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi
index dd1dfa3..55b1702 100644
--- a/chrome/chrome_tests_unit.gypi
+++ b/chrome/chrome_tests_unit.gypi
@@ -131,7 +131,6 @@
'browser/metrics/chrome_browser_main_extra_parts_metrics_unittest.cc',
'browser/metrics/chrome_metrics_service_accessor_unittest.cc',
'browser/metrics/cloned_install_detector_unittest.cc',
- 'browser/metrics/drive_metrics_provider_unittest.cc',
'browser/metrics/perf_provider_chromeos_unittest.cc',
'browser/metrics/signin_status_metrics_provider_chromeos_unittest.cc',
'browser/metrics/signin_status_metrics_provider_unittest.cc',
diff --git a/components/components_tests.gyp b/components/components_tests.gyp
index 4b4b2dd..75943fb 100644
--- a/components/components_tests.gyp
+++ b/components/components_tests.gyp
@@ -306,6 +306,7 @@
'metrics/call_stack_profile_metrics_provider_unittest.cc',
'metrics/compression_utils_unittest.cc',
'metrics/daily_event_unittest.cc',
+ 'metrics/drive_metrics_provider_unittest.cc',
'metrics/gpu/gpu_metrics_provider_unittest.cc',
'metrics/histogram_encoder_unittest.cc',
'metrics/machine_id_provider_win_unittest.cc',
diff --git a/components/metrics.gypi b/components/metrics.gypi
index e2e1c49..d6bdbdc 100644
--- a/components/metrics.gypi
+++ b/components/metrics.gypi
@@ -35,6 +35,13 @@
'metrics/compression_utils.h',
'metrics/daily_event.cc',
'metrics/daily_event.h',
+ 'metrics/drive_metrics_provider.cc',
+ 'metrics/drive_metrics_provider.h',
+ 'metrics/drive_metrics_provider_android.cc',
+ 'metrics/drive_metrics_provider_ios.mm',
+ 'metrics/drive_metrics_provider_linux.cc',
+ 'metrics/drive_metrics_provider_mac.mm',
+ 'metrics/drive_metrics_provider_win.cc',
'metrics/histogram_encoder.cc',
'metrics/histogram_encoder.h',
'metrics/machine_id_provider.h',
diff --git a/components/metrics/BUILD.gn b/components/metrics/BUILD.gn
index 90e1c6a..58e88bf 100644
--- a/components/metrics/BUILD.gn
+++ b/components/metrics/BUILD.gn
@@ -17,6 +17,13 @@ source_set("metrics") {
"compression_utils.h",
"daily_event.cc",
"daily_event.h",
+ "drive_metrics_provider.cc",
+ "drive_metrics_provider.h",
+ "drive_metrics_provider_android.cc",
+ "drive_metrics_provider_ios.mm",
+ "drive_metrics_provider_linux.cc",
+ "drive_metrics_provider_mac.mm",
+ "drive_metrics_provider_win.cc",
"histogram_encoder.cc",
"histogram_encoder.h",
"machine_id_provider.h",
@@ -172,6 +179,7 @@ source_set("unit_tests") {
sources = [
"compression_utils_unittest.cc",
"daily_event_unittest.cc",
+ "drive_metrics_provider_unittest.cc",
"histogram_encoder_unittest.cc",
"machine_id_provider_win_unittest.cc",
"metrics_hashes_unittest.cc",
diff --git a/chrome/browser/metrics/drive_metrics_provider.cc b/components/metrics/drive_metrics_provider.cc
index 4b88849..2df320d 100644
--- a/chrome/browser/metrics/drive_metrics_provider.cc
+++ b/components/metrics/drive_metrics_provider.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/metrics/drive_metrics_provider.h"
+#include "components/metrics/drive_metrics_provider.h"
#include "base/base_paths.h"
#include "base/bind.h"
@@ -11,11 +11,17 @@
#include "base/logging.h"
#include "base/metrics/histogram_macros.h"
#include "base/path_service.h"
+#include "base/task_runner_util.h"
#include "base/time/time.h"
-#include "chrome/common/chrome_paths.h"
-#include "content/public/browser/browser_thread.h"
-DriveMetricsProvider::DriveMetricsProvider() : weak_ptr_factory_(this) {}
+namespace metrics {
+
+DriveMetricsProvider::DriveMetricsProvider(
+ scoped_refptr<base::SequencedTaskRunner> file_thread,
+ int local_state_path_key)
+ : file_thread_(file_thread),
+ local_state_path_key_(local_state_path_key),
+ weak_ptr_factory_(this) {}
DriveMetricsProvider::~DriveMetricsProvider() {}
@@ -30,9 +36,10 @@ void DriveMetricsProvider::ProvideSystemProfileMetrics(
void DriveMetricsProvider::GetDriveMetrics(const base::Closure& done) {
got_metrics_callback_ = done;
- content::BrowserThread::PostTaskAndReplyWithResult(
- content::BrowserThread::FILE, FROM_HERE,
- base::Bind(&DriveMetricsProvider::GetDriveMetricsOnFileThread),
+ base::PostTaskAndReplyWithResult(
+ file_thread_.get(), FROM_HERE,
+ base::Bind(&DriveMetricsProvider::GetDriveMetricsOnFileThread,
+ local_state_path_key_),
base::Bind(&DriveMetricsProvider::GotDriveMetrics,
weak_ptr_factory_.GetWeakPtr()));
}
@@ -42,12 +49,10 @@ DriveMetricsProvider::SeekPenaltyResponse::SeekPenaltyResponse()
// static
DriveMetricsProvider::DriveMetrics
-DriveMetricsProvider::GetDriveMetricsOnFileThread() {
- DCHECK_CURRENTLY_ON(content::BrowserThread::FILE);
-
+DriveMetricsProvider::GetDriveMetricsOnFileThread(int local_state_path_key) {
DriveMetricsProvider::DriveMetrics metrics;
QuerySeekPenalty(base::FILE_EXE, &metrics.app_drive);
- QuerySeekPenalty(chrome::FILE_LOCAL_STATE, &metrics.user_data_drive);
+ QuerySeekPenalty(local_state_path_key, &metrics.user_data_drive);
return metrics;
}
@@ -88,3 +93,5 @@ void DriveMetricsProvider::FillDriveMetrics(
if (response.success)
drive->set_has_seek_penalty(response.has_seek_penalty);
}
+
+} // namespace metrics
diff --git a/chrome/browser/metrics/drive_metrics_provider.h b/components/metrics/drive_metrics_provider.h
index 6ddccec..f936d98 100644
--- a/chrome/browser/metrics/drive_metrics_provider.h
+++ b/components/metrics/drive_metrics_provider.h
@@ -2,13 +2,15 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef CHROME_BROWSER_METRICS_DRIVE_METRICS_PROVIDER_H_
-#define CHROME_BROWSER_METRICS_DRIVE_METRICS_PROVIDER_H_
+#ifndef COMPONENTS_METRICS_DRIVE_METRICS_PROVIDER_H_
+#define COMPONENTS_METRICS_DRIVE_METRICS_PROVIDER_H_
#include "base/callback.h"
#include "base/gtest_prod_util.h"
#include "base/macros.h"
+#include "base/memory/ref_counted.h"
#include "base/memory/weak_ptr.h"
+#include "base/sequenced_task_runner.h"
#include "base/threading/thread_checker.h"
#include "components/metrics/metrics_provider.h"
#include "components/metrics/proto/system_profile.pb.h"
@@ -17,21 +19,24 @@ namespace base {
class FilePath;
}
+namespace metrics {
+
// Provides metrics about the local drives on a user's computer. Currently only
// checks to see if they incur a seek-time penalty (e.g. if they're SSDs).
//
// Defers gathering metrics until after "rush hour" (startup) so as to not bog
-// down the FILE thread.
+// down the file thread.
class DriveMetricsProvider : public metrics::MetricsProvider {
public:
- DriveMetricsProvider();
+ DriveMetricsProvider(scoped_refptr<base::SequencedTaskRunner> file_thread,
+ int local_state_path_key);
~DriveMetricsProvider() override;
// metrics::MetricsDataProvider:
void ProvideSystemProfileMetrics(
metrics::SystemProfileProto* system_profile_proto) override;
- // Called by ChromeMetricsServiceClient to start gathering metrics.
+ // Called to start gathering metrics.
void GetDriveMetrics(const base::Closure& done);
private:
@@ -55,8 +60,8 @@ class DriveMetricsProvider : public metrics::MetricsProvider {
static bool HasSeekPenalty(const base::FilePath& path,
bool* has_seek_penalty);
- // Gather metrics about various drives on the FILE thread.
- static DriveMetrics GetDriveMetricsOnFileThread();
+ // Gather metrics about various drives on |file_thread_|.
+ static DriveMetrics GetDriveMetricsOnFileThread(int local_state_path_key);
// Tries to determine whether there is a penalty for seeking on the drive that
// hosts |path_service_key| (for example: the drive that holds "Local State").
@@ -67,9 +72,16 @@ class DriveMetricsProvider : public metrics::MetricsProvider {
void GotDriveMetrics(const DriveMetrics& metrics);
// Fills |drive| with information from successful |response|s.
- void FillDriveMetrics(
- const SeekPenaltyResponse& response,
- metrics::SystemProfileProto::Hardware::Drive* drive);
+ void FillDriveMetrics(const SeekPenaltyResponse& response,
+ metrics::SystemProfileProto::Hardware::Drive* drive);
+
+ // The thread on which file operations are performed (supplied by the
+ // embedder).
+ scoped_refptr<base::SequencedTaskRunner> file_thread_;
+
+ // The key to give to base::PathService to obtain the path to local state
+ // (supplied by the embedder).
+ int local_state_path_key_;
// Information gathered about various important drives.
DriveMetrics metrics_;
@@ -83,4 +95,6 @@ class DriveMetricsProvider : public metrics::MetricsProvider {
DISALLOW_COPY_AND_ASSIGN(DriveMetricsProvider);
};
-#endif // CHROME_BROWSER_METRICS_DRIVE_METRICS_PROVIDER_H_
+} // namespace metrics
+
+#endif // COMPONENTS_METRICS_DRIVE_METRICS_PROVIDER_H_
diff --git a/chrome/browser/metrics/drive_metrics_provider_android.cc b/components/metrics/drive_metrics_provider_android.cc
index beb9e8c..a653dd6 100644
--- a/chrome/browser/metrics/drive_metrics_provider_android.cc
+++ b/components/metrics/drive_metrics_provider_android.cc
@@ -2,7 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/metrics/drive_metrics_provider.h"
+#include "components/metrics/drive_metrics_provider.h"
+
+namespace metrics {
// static
bool DriveMetricsProvider::HasSeekPenalty(const base::FilePath& path,
@@ -10,3 +12,5 @@ bool DriveMetricsProvider::HasSeekPenalty(const base::FilePath& path,
*has_seek_penalty = false;
return true;
}
+
+} // namespace metrics
diff --git a/chrome/browser/metrics/drive_metrics_provider_ios.mm b/components/metrics/drive_metrics_provider_ios.mm
index beb9e8c..a653dd6 100644
--- a/chrome/browser/metrics/drive_metrics_provider_ios.mm
+++ b/components/metrics/drive_metrics_provider_ios.mm
@@ -2,7 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/metrics/drive_metrics_provider.h"
+#include "components/metrics/drive_metrics_provider.h"
+
+namespace metrics {
// static
bool DriveMetricsProvider::HasSeekPenalty(const base::FilePath& path,
@@ -10,3 +12,5 @@ bool DriveMetricsProvider::HasSeekPenalty(const base::FilePath& path,
*has_seek_penalty = false;
return true;
}
+
+} // namespace metrics
diff --git a/chrome/browser/metrics/drive_metrics_provider_linux.cc b/components/metrics/drive_metrics_provider_linux.cc
index 93c37a0..4655bf9 100644
--- a/chrome/browser/metrics/drive_metrics_provider_linux.cc
+++ b/components/metrics/drive_metrics_provider_linux.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/metrics/drive_metrics_provider.h"
+#include "components/metrics/drive_metrics_provider.h"
#include <linux/kdev_t.h> // For MAJOR()/MINOR().
#include <sys/stat.h>
@@ -17,6 +17,8 @@
#include "base/sys_info.h"
#endif
+namespace metrics {
+
namespace {
// See http://www.kernel.org/doc/Documentation/devices.txt for more info.
@@ -58,3 +60,5 @@ bool DriveMetricsProvider::HasSeekPenalty(const base::FilePath& path,
*has_seek_penalty = rotates.substr(0, 1) == "1";
return true;
}
+
+} // namespace metrics
diff --git a/chrome/browser/metrics/drive_metrics_provider_mac.mm b/components/metrics/drive_metrics_provider_mac.mm
index 565acd8..a6a3761 100644
--- a/chrome/browser/metrics/drive_metrics_provider_mac.mm
+++ b/components/metrics/drive_metrics_provider_mac.mm
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/metrics/drive_metrics_provider.h"
+#include "components/metrics/drive_metrics_provider.h"
#include <CoreFoundation/CoreFoundation.h>
#include <DiskArbitration/DiskArbitration.h>
@@ -18,6 +18,8 @@
#include "base/mac/scoped_cftyperef.h"
#include "base/mac/scoped_ioobject.h"
+namespace metrics {
+
// static
bool DriveMetricsProvider::HasSeekPenalty(const base::FilePath& path,
bool* has_seek_penalty) {
@@ -37,17 +39,15 @@ bool DriveMetricsProvider::HasSeekPenalty(const base::FilePath& path,
if (!session)
return false;
- base::ScopedCFTypeRef<DADiskRef> disk(DADiskCreateFromBSDName(
- kCFAllocatorDefault, session, bsd_name.c_str()));
+ base::ScopedCFTypeRef<DADiskRef> disk(
+ DADiskCreateFromBSDName(kCFAllocatorDefault, session, bsd_name.c_str()));
if (!disk)
return false;
base::mac::ScopedIOObject<io_object_t> io_media(DADiskCopyIOMedia(disk));
base::ScopedCFTypeRef<CFDictionaryRef> characteristics(
static_cast<CFDictionaryRef>(IORegistryEntrySearchCFProperty(
- io_media,
- kIOServicePlane,
- CFSTR(kIOPropertyDeviceCharacteristicsKey),
+ io_media, kIOServicePlane, CFSTR(kIOPropertyDeviceCharacteristicsKey),
kCFAllocatorDefault,
kIORegistryIterateRecursively | kIORegistryIterateParents)));
if (!characteristics)
@@ -72,3 +72,5 @@ bool DriveMetricsProvider::HasSeekPenalty(const base::FilePath& path,
// type? Assume rotational?
return false;
}
+
+} // namespace metrics
diff --git a/chrome/browser/metrics/drive_metrics_provider_unittest.cc b/components/metrics/drive_metrics_provider_unittest.cc
index 7e78442..142faf7 100644
--- a/chrome/browser/metrics/drive_metrics_provider_unittest.cc
+++ b/components/metrics/drive_metrics_provider_unittest.cc
@@ -2,15 +2,19 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/metrics/drive_metrics_provider.h"
+#include "components/metrics/drive_metrics_provider.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "testing/gtest/include/gtest/gtest.h"
+namespace metrics {
+
TEST(DriveMetricsProviderTest, HasSeekPenalty) {
base::FilePath tmp_path;
ASSERT_TRUE(base::GetTempDir(&tmp_path));
bool unused;
DriveMetricsProvider::HasSeekPenalty(tmp_path, &unused);
}
+
+} // namespace metrics
diff --git a/chrome/browser/metrics/drive_metrics_provider_win.cc b/components/metrics/drive_metrics_provider_win.cc
index 70cf322..3e190d5 100644
--- a/chrome/browser/metrics/drive_metrics_provider_win.cc
+++ b/components/metrics/drive_metrics_provider_win.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "chrome/browser/metrics/drive_metrics_provider.h"
+#include "components/metrics/drive_metrics_provider.h"
#include <windows.h>
#include <ntddscsi.h>
@@ -15,6 +15,8 @@
#include "base/strings/stringprintf.h"
#include "base/win/windows_version.h"
+namespace metrics {
+
namespace {
// Semi-copy of similarly named struct from ata.h in WinDDK.
@@ -54,11 +56,9 @@ bool DriveMetricsProvider::HasSeekPenalty(const base::FilePath& path,
DEVICE_SEEK_PENALTY_DESCRIPTOR result;
DWORD bytes_returned;
- BOOL success = DeviceIoControl(volume.GetPlatformFile(),
- IOCTL_STORAGE_QUERY_PROPERTY,
- &query, sizeof(query),
- &result, sizeof(result),
- &bytes_returned, NULL);
+ BOOL success = DeviceIoControl(
+ volume.GetPlatformFile(), IOCTL_STORAGE_QUERY_PROPERTY, &query,
+ sizeof(query), &result, sizeof(result), &bytes_returned, NULL);
if (success == FALSE || bytes_returned < sizeof(result))
return false;
@@ -73,11 +73,9 @@ bool DriveMetricsProvider::HasSeekPenalty(const base::FilePath& path,
request.query.TimeOutValue = 10;
DWORD bytes_returned;
- BOOL success = DeviceIoControl(volume.GetPlatformFile(),
- IOCTL_ATA_PASS_THROUGH,
- &request, sizeof(request),
- &request, sizeof(request),
- &bytes_returned, NULL);
+ BOOL success = DeviceIoControl(
+ volume.GetPlatformFile(), IOCTL_ATA_PASS_THROUGH, &request,
+ sizeof(request), &request, sizeof(request), &bytes_returned, NULL);
if (success == FALSE || bytes_returned < sizeof(request) ||
request.query.CurrentTaskFile[0]) {
return false;
@@ -88,3 +86,5 @@ bool DriveMetricsProvider::HasSeekPenalty(const base::FilePath& path,
return true;
}
+
+} // namespace metrics