Index: rlz/chromeos/lib/rlz_value_store_chromeos.cc |
diff --git a/rlz/chromeos/lib/rlz_value_store_chromeos.cc b/rlz/chromeos/lib/rlz_value_store_chromeos.cc |
index 6c72bff7cb2c8ea2ce9ab4a84a078747d0456062..347f7e5b7226e87979cb14aac05db63b63cdc1f4 100644 |
--- a/rlz/chromeos/lib/rlz_value_store_chromeos.cc |
+++ b/rlz/chromeos/lib/rlz_value_store_chromeos.cc |
@@ -9,6 +9,7 @@ |
#include "base/files/important_file_writer.h" |
#include "base/json/json_file_value_serializer.h" |
#include "base/json/json_string_value_serializer.h" |
+#include "base/lazy_instance.h" |
#include "base/logging.h" |
#include "base/memory/ptr_util.h" |
#include "base/path_service.h" |
@@ -41,24 +42,25 @@ const base::FilePath::CharType kRLZLockFileName[] = |
FILE_PATH_LITERAL("RLZ Data.lock"); |
// RLZ store path for testing. |
-base::FilePath g_testing_rlz_store_path_; |
+base::LazyInstance<base::FilePath>::Leaky g_testing_rlz_store_path = |
+ LAZY_INSTANCE_INITIALIZER; |
-// Returns file path of the RLZ storage. |
-base::FilePath GetRlzStorePath() { |
+base::FilePath GetRlzStorePathCommon() { |
base::FilePath homedir; |
PathService::Get(base::DIR_HOME, &homedir); |
- return g_testing_rlz_store_path_.empty() ? |
- homedir.Append(kRLZDataFileName) : |
- g_testing_rlz_store_path_.Append(kRLZDataFileName); |
+ return g_testing_rlz_store_path.Get().empty() |
+ ? homedir |
+ : g_testing_rlz_store_path.Get(); |
+} |
+ |
+// Returns file path of the RLZ storage. |
+base::FilePath GetRlzStorePath() { |
+ return GetRlzStorePathCommon().Append(kRLZDataFileName); |
} |
// Returns file path of the RLZ storage lock file. |
base::FilePath GetRlzStoreLockPath() { |
- base::FilePath homedir; |
- PathService::Get(base::DIR_HOME, &homedir); |
- return g_testing_rlz_store_path_.empty() ? |
- homedir.Append(kRLZLockFileName) : |
- g_testing_rlz_store_path_.Append(kRLZLockFileName); |
+ return GetRlzStorePathCommon().Append(kRLZLockFileName); |
} |
// Returns the dictionary key for storing access point-related prefs. |
@@ -155,7 +157,7 @@ bool RlzValueStoreChromeOS::ReadProductEvents( |
Product product, |
std::vector<std::string>* events) { |
DCHECK(CalledOnValidThread()); |
- base::ListValue* events_list = NULL; ; |
+ base::ListValue* events_list = nullptr; |
if (!rlz_store_->GetList(GetKeyName(kProductEventKey, product), &events_list)) |
return false; |
events->clear(); |
@@ -311,7 +313,7 @@ ScopedRlzValueStoreLock::ScopedRlzValueStoreLock() { |
ScopedRlzValueStoreLock::~ScopedRlzValueStoreLock() { |
--g_lock_depth; |
- DCHECK(g_lock_depth >= 0); |
+ DCHECK_GE(g_lock_depth, 0); |
if (g_lock_depth > 0) { |
// Other locks are still using store_, so don't free it yet. |
@@ -331,7 +333,7 @@ RlzValueStore* ScopedRlzValueStoreLock::GetStore() { |
namespace testing { |
void SetRlzStoreDirectory(const base::FilePath& directory) { |
- g_testing_rlz_store_path_ = directory; |
+ g_testing_rlz_store_path.Get() = directory; |
} |
std::string RlzStoreFilenameStr() { |