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

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, 3 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 (c) 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_CHROMEOS)
13 #include "chrome/browser/chromeos/profiles/profile_helper.h"
14 #include "components/user_manager/user_manager.h"
15 #include "components/user_manager/user_type.h"
16 #endif
17
18 namespace settings {
19
20 LanguagesHandler::LanguagesHandler(content::WebUI* webui)
21 : profile_(Profile::FromWebUI(webui)) {
22 }
23
24 LanguagesHandler::~LanguagesHandler() {
25 }
26
27 void LanguagesHandler::RegisterMessages() {
28 #if defined(OS_CHROMEOS)
29 web_ui()->RegisterMessageCallback(
30 "setUILanguage",
31 base::Bind(&LanguagesHandler::HandleSetUILanguage,
32 base::Unretained(this)));
33 #endif
34 }
35
36 #if defined(OS_CHROMEOS)
37 void LanguagesHandler::HandleSetUILanguage(const base::ListValue* args) {
38 CHECK_EQ(1U, args->GetSize());
39
40 std::string language_code;
41 CHECK(args->GetString(0, &language_code));
42 user_manager::UserManager* user_manager = user_manager::UserManager::Get();
43
44 // Secondary users and public session users cannot change the locale.
45 const user_manager::User* user =
46 chromeos::ProfileHelper::Get()->GetUserByProfile(profile_);
47 if (user &&
48 user->email() == user_manager->GetPrimaryUser()->email() &&
49 user->GetType() != user_manager::USER_TYPE_PUBLIC_ACCOUNT) {
50 profile_->ChangeAppLocale(language_code,
51 Profile::APP_LOCALE_CHANGED_VIA_SETTINGS);
52 }
53 }
54 #endif
55
56 } // namespace settings
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698