Codebase list mozc / 67fd68f
Deprecate |ConfigHandler::GetConfig()| Returning an object reference to a global object is considered harmful. Suppose the following code: const auto &config = ConfigHandler::GetConfig(); // Observe the contents of |config| here (*1) ConfigHandler::SetConfig(new_config); // Observe the contents of |config| here (*2) Since const reference does not necessary mean that the object is immutable, you can observe that the contents of |config| was changed between (*1) and (*2). We really should use |ConfigHandler::GetConfig(Config *config)| instead to avoid this kind of troubles. BUG= TEST= REF_BUG=19188911,27179403 REF_CL=114656064 REF_TIME=2016-02-14T17:36:30-08:00 REF_TIME_RAW=1455500190 -0800 Yohei Yukawa 8 years ago
13 changed file(s) with 43 addition(s) and 31 deletion(s). Raw diff Collapse all Expand all
585585 }
586586
587587 CharacterFormManager::CharacterFormManager() : data_(new Data) {
588 ReloadConfig(ConfigHandler::GetConfig());
588 Config config;
589 ConfigHandler::GetConfig(&config);
590 ReloadConfig(config);
589591 }
590592
591593 CharacterFormManager::~CharacterFormManager() {
8484 ConfigHandler::GetDefaultConfig(&default_config_);
8585 }
8686 virtual ~ConfigHandlerImpl() {}
87 const Config &GetConfig() const;
8887 bool GetConfig(Config *config) const;
8988 const Config &DefaultConfig() const;
9089 bool GetStoredConfig(Config *config) const;
112111 return Singleton<ConfigHandlerImpl>::get();
113112 }
114113
115 const Config &ConfigHandlerImpl::GetConfig() const {
116 return merged_config_;
117 }
118
119114 // return current Config
120115 bool ConfigHandlerImpl::GetConfig(Config *config) const {
121116 config->CopyFrom(merged_config_);
237232 return filename_;
238233 }
239234 } // namespace
240
241 const Config &ConfigHandler::GetConfig() {
242 return GetConfigHandlerImpl()->GetConfig();
243 }
244235
245236 // Returns current Config
246237 bool ConfigHandler::GetConfig(Config *config) {
4747 class ConfigHandler {
4848 public:
4949 // Returns current config.
50 static const Config &GetConfig();
51
52 // Returns current config.
5350 static bool GetConfig(Config *config);
5451
5552 // Returns stored config.
7774
7875 // Gets default config value.
7976 //
80 // Using this function is safer than
81 // using an uninitialized config value.
77 // Using these functions are safer than using an uninitialized config value.
78 // These functions are also thread-safe.
8279 static void GetDefaultConfig(Config *config);
8380 static const Config &DefaultConfig();
8481
189189 output.Clear();
190190 EXPECT_TRUE(config::ConfigHandler::GetConfig(&output));
191191 EXPECT_EQ(expected, output.incognito_mode());
192 output = config::ConfigHandler::GetConfig();
192 config::ConfigHandler::GetConfig(&output);
193193 EXPECT_EQ(expected, output.incognito_mode());
194194 config::ConfigHandler::GetStoredConfig(&output);
195195 EXPECT_EQ(stored_config_value, output.incognito_mode());
200200 output.Clear();
201201 EXPECT_TRUE(config::ConfigHandler::GetConfig(&output));
202202 EXPECT_EQ(expected, output.incognito_mode());
203 output = config::ConfigHandler::GetConfig();
203 config::ConfigHandler::GetConfig(&output);
204204 EXPECT_EQ(expected, output.incognito_mode());
205205 config::ConfigHandler::GetStoredConfig(&output);
206206 EXPECT_EQ(stored_config_value, output.incognito_mode());
212212 output.Clear();
213213 EXPECT_TRUE(config::ConfigHandler::GetConfig(&output));
214214 EXPECT_EQ(stored_config_value, output.incognito_mode());
215 output = config::ConfigHandler::GetConfig();
215 config::ConfigHandler::GetConfig(&output);
216216 EXPECT_EQ(stored_config_value, output.incognito_mode());
217217 config::ConfigHandler::GetStoredConfig(&output);
218218 EXPECT_EQ(stored_config_value, output.incognito_mode());
239239 ScopedSetConfigFileName scoped_config_file_name(
240240 "memory://set_config_file_name_test.db");
241241 // After SetConfigFileName called, settings are set as default.
242 EXPECT_EQ(default_incognito_mode,
243 config::ConfigHandler::GetConfig().incognito_mode());
242 config::Config updated_config;
243 config::ConfigHandler::GetConfig(&updated_config);
244 EXPECT_EQ(default_incognito_mode, updated_config.incognito_mode());
244245 }
245246
246247 #if !defined(OS_ANDROID) && !defined(OS_NACL)
233233 virtual ~AndroidStatsConfigUtilImpl() {
234234 }
235235 virtual bool IsEnabled() {
236 return ConfigHandler::GetConfig().general_config().upload_usage_stats();
236 Config config;
237 ConfigHandler::GetConfig(&config);
238 return config.general_config().upload_usage_stats();
237239 }
238240 virtual bool SetEnabled(bool val) {
239241 // TODO(horo): Implement this.
253255 virtual ~NaclStatsConfigUtilImpl() {
254256 }
255257 virtual bool IsEnabled() {
256 return ConfigHandler::GetConfig().general_config().upload_usage_stats();
258 Config config;
259 ConfigHandler::GetConfig(&config);
260 return config.general_config().upload_usage_stats();
257261 }
258262 virtual bool SetEnabled(bool val) {
259263 return false;
00 MAJOR=2
11 MINOR=17
2 BUILD=2482
2 BUILD=2483
33 REVISION=102
44 # NACL_DICTIONARY_VERSION is the target version of the system dictionary to be
55 # downloaded by NaCl Mozc.
181181 VLOG(2) << "timeout is set to be : " << timeout_;
182182
183183 #ifndef NO_LOGGING
184 const config::Config &config = config::ConfigHandler::GetConfig();
184 config::Config config;
185 config::ConfigHandler::GetConfig(&config);
185186 Logging::SetConfigVerboseLevel(config.verbose_level());
186187 #endif // NO_LOGGING
187188 }
4646 class ImeSwitchUtilImpl {
4747 public:
4848 ImeSwitchUtilImpl() {
49 ReloadConfig(config::ConfigHandler::GetConfig());
49 config::Config config;
50 config::ConfigHandler::GetConfig(&config);
51 ReloadConfig(config);
5052 }
5153
5254 bool IsDirectModeCommand(const commands::KeyEvent &key) const {
257257
258258 bool SessionHandler::Reload(commands::Command *command) {
259259 VLOG(1) << "Reloading server";
260 SetConfig(config::ConfigHandler::GetConfig());
260 {
261 config::Config config;
262 config::ConfigHandler::GetConfig(&config);
263 SetConfig(config);
264 }
261265 engine_->Reload();
262266 return true;
263267 }
655659
656660 // Ensure the onmemory config is same as the locally stored one
657661 // because the local data could be changed by sync.
658 SetConfig(config::ConfigHandler::GetConfig());
662 {
663 config::Config config;
664 config::ConfigHandler::GetConfig(&config);
665 SetConfig(config);
666 }
659667
660668 // session is not empty.
661669 last_session_empty_time_ = 0;
4949
5050 // Prints a greeting message when a process starts.
5151 void PrintGreetingMessage() {
52 const mozc::config::Config &config = mozc::config::ConfigHandler::GetConfig();
52 mozc::config::Config config;
53 mozc::config::ConfigHandler::GetConfig(&config);
5354 const char *preedit_method = "unknown";
5455 switch (config.preedit_method()) {
5556 case mozc::config::Config::ROMAN:
356356 AndroidUtil::kSystemPropertyModel, "Unknown")));
357357 #endif // OS_ANDROID
358358
359 UsageStatsUpdater::UpdateStats(config::ConfigHandler::GetConfig());
359 {
360 config::Config config;
361 config::ConfigHandler::GetConfig(&config);
362 UsageStatsUpdater::UpdateStats(config);
363 }
360364
361365 UploadUtil uploader;
362366 uploader.SetHeader("Daily", elapsed_sec, params);
7373 StaticConfigSnapshot GetConfigSnapshotForNonSandboxedProcess() {
7474 Config config;
7575 // config1.db should be readable in this case.
76 config.CopyFrom(config::ConfigHandler::GetConfig());
76 config::ConfigHandler::GetConfig(&config);
7777
7878 StaticConfigSnapshot snapshot = {};
7979 snapshot.use_kana_input = (config.preedit_method() == Config::KANA);
9797 static once_t g_launch_set_default_dialog = MOZC_ONCE_INIT;
9898
9999 void LaunchSetDefaultDialog() {
100 const config::Config &config = config::ConfigHandler::GetConfig();
100 config::Config config;
101 config::ConfigHandler::GetConfig(&config);
101102 if (config.has_check_default() && !config.check_default()) {
102103 // User opted out the default IME checking. Do nothing.
103104 return;