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

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

Issue 1351623008: MD Settings: Languages model for language pages (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@SingletonPrefs
Patch Set: Created 5 years, 2 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/webui/settings/languages_handler.h"
6
7 #include "base/bind.h"
8 #include "base/values.h"
9 #include "chrome/browser/profiles/profile.h"
10 #include "content/public/browser/web_ui.h"
11
12 #if defined(OS_WIN)
13 #include "base/prefs/pref_service.h"
14 #include "chrome/browser/browser_process.h"
15 #include "chrome/common/pref_names.h"
16 #endif
17
18 #if defined(OS_CHROMEOS)
19 #include "chrome/browser/chromeos/profiles/profile_helper.h"
20 #include "components/user_manager/user_manager.h"
21 #include "components/user_manager/user_type.h"
22 #endif
23
24 namespace settings {
25
26 LanguagesHandler::LanguagesHandler(content::WebUI* webui)
27 : profile_(Profile::FromWebUI(webui)) {
28 }
29
30 LanguagesHandler::~LanguagesHandler() {
31 }
32
33 void LanguagesHandler::RegisterMessages() {
34 web_ui()->RegisterMessageCallback(
35 "setUILanguage",
36 base::Bind(&LanguagesHandler::HandleSetUILanguage,
37 base::Unretained(this)));
38 }
39
40 void LanguagesHandler::HandleSetUILanguage(const base::ListValue* args) {
41 CHECK_EQ(1U, args->GetSize());
42
43 std::string language_code;
44 CHECK(args->GetString(0, &language_code));
45
46 #if defined(OS_WIN)
47 PrefService* prefs = g_browser_process->local_state();
48 prefs->SetString(prefs::kApplicationLocale, language_code);
49 #elif defined(OS_CHROMEOS)
50 // Secondary users and public session users cannot change the locale.
51 user_manager::UserManager* user_manager = user_manager::UserManager::Get();
52 const user_manager::User* user =
53 chromeos::ProfileHelper::Get()->GetUserByProfile(profile_);
54 if (user &&
55 user->email() == user_manager->GetPrimaryUser()->email() &&
56 user->GetType() != user_manager::USER_TYPE_PUBLIC_ACCOUNT) {
57 profile_->ChangeAppLocale(language_code,
58 Profile::APP_LOCALE_CHANGED_VIA_SETTINGS);
59 }
60 #else
61 NOTREACHED() << "Attempting to set locale on unsupported platform";
62 #endif
63 }
64
65 } // namespace settings
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698