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

Side by Side Diff: chrome/browser/ui/webui/settings/languages_handler.cc

Issue 2822863002: MD Settings: Languages; limit platform specific code to the respective platform. (Closed)
Patch Set: Address @michaelpg feedback Created 3 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/settings/languages_handler.h" 5 #include "chrome/browser/ui/webui/settings/languages_handler.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/values.h" 8 #include "base/values.h"
9 #include "build/build_config.h" 9 #include "build/build_config.h"
10 #include "chrome/browser/browser_process.h"
10 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/profiles/profile.h"
11 #include "content/public/browser/web_ui.h"
12
13 #if defined(OS_WIN) || defined(OS_CHROMEOS)
14 #include "chrome/browser/browser_process.h"
15 #include "chrome/common/pref_names.h" 12 #include "chrome/common/pref_names.h"
16 #include "components/prefs/pref_service.h" 13 #include "components/prefs/pref_service.h"
17 #endif 14 #include "content/public/browser/web_ui.h"
18 15
19 #if defined(OS_CHROMEOS) 16 #if defined(OS_CHROMEOS)
20 #include "chrome/browser/chromeos/profiles/profile_helper.h" 17 #include "chrome/browser/chromeos/profiles/profile_helper.h"
21 #include "components/user_manager/user_manager.h" 18 #include "components/user_manager/user_manager.h"
22 #include "components/user_manager/user_type.h" 19 #include "components/user_manager/user_type.h"
23 #endif 20 #endif
24 21
25 namespace settings { 22 namespace settings {
26 23
27 LanguagesHandler::LanguagesHandler(content::WebUI* webui) 24 LanguagesHandler::LanguagesHandler(content::WebUI* webui)
28 : profile_(Profile::FromWebUI(webui)) { 25 : profile_(Profile::FromWebUI(webui)) {
29 } 26 }
30 27
31 LanguagesHandler::~LanguagesHandler() { 28 LanguagesHandler::~LanguagesHandler() {
32 } 29 }
33 30
34 void LanguagesHandler::RegisterMessages() { 31 void LanguagesHandler::RegisterMessages() {
35 web_ui()->RegisterMessageCallback( 32 web_ui()->RegisterMessageCallback(
36 "getProspectiveUILanguage", 33 "getProspectiveUILanguage",
37 base::Bind(&LanguagesHandler::HandleGetProspectiveUILanguage, 34 base::Bind(&LanguagesHandler::HandleGetProspectiveUILanguage,
38 base::Unretained(this))); 35 base::Unretained(this)));
39 web_ui()->RegisterMessageCallback( 36 web_ui()->RegisterMessageCallback(
40 "setProspectiveUILanguage", 37 "setProspectiveUILanguage",
41 base::Bind(&LanguagesHandler::HandleSetProspectiveUILanguage, 38 base::Bind(&LanguagesHandler::HandleSetProspectiveUILanguage,
42 base::Unretained(this))); 39 base::Unretained(this)));
43 } 40 }
44 41
45 void LanguagesHandler::HandleGetProspectiveUILanguage( 42 void LanguagesHandler::HandleGetProspectiveUILanguage(
46 const base::ListValue* args) { 43 const base::ListValue* args) {
47 #if defined(OS_WIN) || defined(OS_CHROMEOS)
48 const base::Value* callback_id; 44 const base::Value* callback_id;
49 CHECK(args->Get(0, &callback_id)); 45 CHECK(args->Get(0, &callback_id));
50 46
51 AllowJavascript(); 47 AllowJavascript();
52 48
53 std::string locale; 49 std::string locale;
54 #if defined(OS_CHROMEOS) 50 #if defined(OS_CHROMEOS)
55 // On Chrome OS, an individual profile may have a preferred locale. 51 // On Chrome OS, an individual profile may have a preferred locale.
56 locale = profile_->GetPrefs()->GetString(prefs::kApplicationLocale); 52 locale = profile_->GetPrefs()->GetString(prefs::kApplicationLocale);
57 #endif // defined(OS_CHROMEOS) 53 #endif // defined(OS_CHROMEOS)
58 54
59 if (locale.empty()) { 55 if (locale.empty()) {
60 locale = 56 locale =
61 g_browser_process->local_state()->GetString(prefs::kApplicationLocale); 57 g_browser_process->local_state()->GetString(prefs::kApplicationLocale);
62 } 58 }
63 59
64 ResolveJavascriptCallback(*callback_id, base::Value(locale)); 60 ResolveJavascriptCallback(*callback_id, base::Value(locale));
65 #else
66 NOTREACHED() << "Attempting to get locale on unsupported platform";
67 #endif // defined(OS_WIN) || defined(OS_CHROMEOS)
68 } 61 }
69 62
70 void LanguagesHandler::HandleSetProspectiveUILanguage( 63 void LanguagesHandler::HandleSetProspectiveUILanguage(
71 const base::ListValue* args) { 64 const base::ListValue* args) {
72 AllowJavascript(); 65 AllowJavascript();
73 CHECK_EQ(1U, args->GetSize()); 66 CHECK_EQ(1U, args->GetSize());
74 67
75 std::string language_code; 68 std::string language_code;
76 CHECK(args->GetString(0, &language_code)); 69 CHECK(args->GetString(0, &language_code));
77 70
78 #if defined(OS_WIN) 71 #if defined(OS_WIN)
79 PrefService* prefs = g_browser_process->local_state(); 72 PrefService* prefs = g_browser_process->local_state();
80 prefs->SetString(prefs::kApplicationLocale, language_code); 73 prefs->SetString(prefs::kApplicationLocale, language_code);
81 #elif defined(OS_CHROMEOS) 74 #elif defined(OS_CHROMEOS)
82 // Secondary users and public session users cannot change the locale. 75 // Secondary users and public session users cannot change the locale.
83 user_manager::UserManager* user_manager = user_manager::UserManager::Get(); 76 user_manager::UserManager* user_manager = user_manager::UserManager::Get();
84 const user_manager::User* user = 77 const user_manager::User* user =
85 chromeos::ProfileHelper::Get()->GetUserByProfile(profile_); 78 chromeos::ProfileHelper::Get()->GetUserByProfile(profile_);
86 if (user && 79 if (user &&
87 user->GetAccountId() == user_manager->GetPrimaryUser()->GetAccountId() && 80 user->GetAccountId() == user_manager->GetPrimaryUser()->GetAccountId() &&
88 user->GetType() != user_manager::USER_TYPE_PUBLIC_ACCOUNT) { 81 user->GetType() != user_manager::USER_TYPE_PUBLIC_ACCOUNT) {
89 profile_->ChangeAppLocale(language_code, 82 profile_->ChangeAppLocale(language_code,
90 Profile::APP_LOCALE_CHANGED_VIA_SETTINGS); 83 Profile::APP_LOCALE_CHANGED_VIA_SETTINGS);
91 } 84 }
92 #else
93 NOTREACHED() << "Attempting to set locale on unsupported platform";
94 #endif 85 #endif
95 } 86 }
96 87
97 } // namespace settings 88 } // namespace settings
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698