Skip to content

Commit 1607af5

Browse files
committed
Remove Singleton from stats_config_util.cc
As part of our ongoing efforts to remove the dependency on Singleton, this commit rewrites config/stats_config_util.cc without the Singleton class dependency. There should be no user observable change, including the fact that OSS builds have been fixed to use NullStatsConfigUtilImpl at build time.
1 parent 9df9774 commit 1607af5

4 files changed

Lines changed: 16 additions & 113 deletions

File tree

src/config/BUILD.bazel

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,7 @@ mozc_cc_library(
9898
visibility = [
9999
"//:__subpackages__",
100100
],
101-
deps = [
102-
"//base:singleton",
103-
] + mozc_select(
101+
deps = mozc_select(
104102
android = [
105103
":config_handler",
106104
"//protocol:config_cc_proto",
@@ -152,13 +150,6 @@ mozc_cc_test(
152150
),
153151
)
154152

155-
mozc_cc_library(
156-
name = "stats_config_util_mock",
157-
testonly = True,
158-
hdrs = ["stats_config_util_mock.h"],
159-
deps = [":stats_config_util"],
160-
)
161-
162153
mozc_cc_library(
163154
name = "character_form_manager",
164155
srcs = ["character_form_manager.cc"],

src/config/stats_config_util.cc

Lines changed: 15 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@
2929

3030
#include "config/stats_config_util.h"
3131

32-
#include "base/singleton.h"
33-
3432
#ifdef _WIN32
3533
#include <atlbase.h>
3634
#include <lmcons.h>
@@ -80,10 +78,10 @@ constexpr wchar_t kOmahaUsageKeyForEveryone[] =
8078

8179
constexpr wchar_t kSendStatsName[] = L"usagestats";
8280

83-
class WinStatsConfigUtilImpl : public StatsConfigUtilInterface {
81+
class WinStatsConfigUtilImpl {
8482
public:
85-
bool IsEnabled() override;
86-
bool SetEnabled(bool val) override;
83+
static bool IsEnabled();
84+
static bool SetEnabled(bool val);
8785
};
8886

8987
bool WinStatsConfigUtilImpl::IsEnabled() {
@@ -156,10 +154,10 @@ std::string GetConfigFilePath() {
156154
"/.usagestats.db"); // hidden file
157155
}
158156

159-
class MacStatsConfigUtilImpl : public StatsConfigUtilInterface {
157+
class MacStatsConfigUtilImpl {
160158
public:
161-
bool IsEnabled() override;
162-
bool SetEnabled(bool val) override;
159+
static bool IsEnabled();
160+
static bool SetEnabled(bool val);
163161
};
164162

165163
bool MacStatsConfigUtilImpl::IsEnabled() {
@@ -216,12 +214,12 @@ bool MacStatsConfigUtilImpl::SetEnabled(bool val) {
216214
#endif // MACOSX
217215

218216
#ifdef __ANDROID__
219-
class AndroidStatsConfigUtilImpl : public StatsConfigUtilInterface {
217+
class AndroidStatsConfigUtilImpl {
220218
public:
221-
bool IsEnabled() override {
219+
static bool IsEnabled() {
222220
return ConfigHandler::GetSharedConfig()->upload_usage_stats();
223221
}
224-
bool SetEnabled(bool val) override {
222+
static bool SetEnabled(bool val) {
225223
// TODO(horo): Implement this.
226224
return false;
227225
}
@@ -230,16 +228,12 @@ class AndroidStatsConfigUtilImpl : public StatsConfigUtilInterface {
230228

231229
#endif // GOOGLE_JAPANESE_INPUT_BUILD
232230

233-
class NullStatsConfigUtilImpl : public StatsConfigUtilInterface {
231+
class NullStatsConfigUtilImpl {
234232
public:
235-
bool IsEnabled() override { return false; }
236-
bool SetEnabled(bool val) override { return true; }
233+
static bool IsEnabled() { return false; }
234+
static bool SetEnabled(bool val) { return true; }
237235
};
238236

239-
StatsConfigUtilInterface* g_stats_config_util_handler = nullptr;
240-
241-
// GetStatsConfigUtil and SetHandler are not thread safe.
242-
243237
#if !defined(GOOGLE_JAPANESE_INPUT_BUILD)
244238
// For non-official build, use null implementation.
245239
typedef NullStatsConfigUtilImpl DefaultConfigUtilImpl;
@@ -254,23 +248,14 @@ typedef AndroidStatsConfigUtilImpl DefaultConfigUtilImpl;
254248
typedef NullStatsConfigUtilImpl DefaultConfigUtilImpl;
255249
#endif // Platforms
256250

257-
StatsConfigUtilInterface& GetStatsConfigUtil() {
258-
if (g_stats_config_util_handler == nullptr) {
259-
return *(Singleton<DefaultConfigUtilImpl>::get());
260-
} else {
261-
return *g_stats_config_util_handler;
262-
}
263-
}
264251
} // namespace
265252

266-
void StatsConfigUtil::SetHandler(StatsConfigUtilInterface* handler) {
267-
g_stats_config_util_handler = handler;
253+
bool StatsConfigUtil::IsEnabled() {
254+
return DefaultConfigUtilImpl::IsEnabled();
268255
}
269256

270-
bool StatsConfigUtil::IsEnabled() { return GetStatsConfigUtil().IsEnabled(); }
271-
272257
bool StatsConfigUtil::SetEnabled(bool val) {
273-
return GetStatsConfigUtil().SetEnabled(val);
258+
return DefaultConfigUtilImpl::SetEnabled(val);
274259
}
275260

276261
} // namespace config

src/config/stats_config_util.h

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,6 @@
3333
namespace mozc {
3434
namespace config {
3535

36-
// Interface class
37-
class StatsConfigUtilInterface {
38-
public:
39-
StatsConfigUtilInterface() = default;
40-
StatsConfigUtilInterface(const StatsConfigUtilInterface&) = delete;
41-
StatsConfigUtilInterface& operator=(const StatsConfigUtilInterface&) = delete;
42-
virtual ~StatsConfigUtilInterface() = default;
43-
44-
virtual bool IsEnabled() = 0;
45-
virtual bool SetEnabled(bool val) = 0;
46-
};
47-
4836
class StatsConfigUtil {
4937
public:
5038
StatsConfigUtil() = delete;
@@ -62,11 +50,6 @@ class StatsConfigUtil {
6250
// Note: Administrative privilege is required in Windows.
6351
// Returns true if succeeded.
6452
static bool SetEnabled(bool val);
65-
66-
// Inject a dependency
67-
static void SetHandler(StatsConfigUtilInterface* handler);
68-
69-
// Should never be allocated.
7053
};
7154

7255
} // namespace config

src/config/stats_config_util_mock.h

Lines changed: 0 additions & 56 deletions
This file was deleted.

0 commit comments

Comments
 (0)