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

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

Issue 2052793004: MD Settings: Hook up languages_page to new LifetimeBrowserProxy. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lifetime_handler
Patch Set: Fix closure compilation. Created 4 years, 6 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
« no previous file with comments | « chrome/browser/ui/webui/settings/languages_handler.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/lifetime/application_lifetime.h"
11 #include "chrome/browser/profiles/profile.h" 10 #include "chrome/browser/profiles/profile.h"
12 #include "content/public/browser/web_ui.h" 11 #include "content/public/browser/web_ui.h"
13 12
14 #if defined(OS_WIN) 13 #if defined(OS_WIN)
15 #include "chrome/browser/browser_process.h" 14 #include "chrome/browser/browser_process.h"
16 #include "chrome/common/pref_names.h" 15 #include "chrome/common/pref_names.h"
17 #include "components/prefs/pref_service.h" 16 #include "components/prefs/pref_service.h"
18 #endif 17 #endif
19 18
20 #if defined(OS_CHROMEOS) 19 #if defined(OS_CHROMEOS)
21 #include "chrome/browser/chromeos/profiles/profile_helper.h" 20 #include "chrome/browser/chromeos/profiles/profile_helper.h"
22 #include "components/user_manager/user_manager.h" 21 #include "components/user_manager/user_manager.h"
23 #include "components/user_manager/user_type.h" 22 #include "components/user_manager/user_type.h"
24 #endif 23 #endif
25 24
26 namespace settings { 25 namespace settings {
27 26
28 LanguagesHandler::LanguagesHandler(content::WebUI* webui) 27 LanguagesHandler::LanguagesHandler(content::WebUI* webui)
29 : profile_(Profile::FromWebUI(webui)) { 28 : profile_(Profile::FromWebUI(webui)) {
30 } 29 }
31 30
32 LanguagesHandler::~LanguagesHandler() { 31 LanguagesHandler::~LanguagesHandler() {
33 } 32 }
34 33
35 void LanguagesHandler::RegisterMessages() { 34 void LanguagesHandler::RegisterMessages() {
36 web_ui()->RegisterMessageCallback( 35 web_ui()->RegisterMessageCallback(
37 "setUILanguage", 36 "setUILanguage",
38 base::Bind(&LanguagesHandler::HandleSetUILanguage, 37 base::Bind(&LanguagesHandler::HandleSetUILanguage,
39 base::Unretained(this))); 38 base::Unretained(this)));
40 web_ui()->RegisterMessageCallback(
41 "restart",
42 base::Bind(&LanguagesHandler::HandleRestart,
43 base::Unretained(this)));
44 } 39 }
45 40
46 void LanguagesHandler::HandleSetUILanguage(const base::ListValue* args) { 41 void LanguagesHandler::HandleSetUILanguage(const base::ListValue* args) {
47 CHECK_EQ(1U, args->GetSize()); 42 CHECK_EQ(1U, args->GetSize());
48 43
49 std::string language_code; 44 std::string language_code;
50 CHECK(args->GetString(0, &language_code)); 45 CHECK(args->GetString(0, &language_code));
51 46
52 #if defined(OS_WIN) 47 #if defined(OS_WIN)
53 PrefService* prefs = g_browser_process->local_state(); 48 PrefService* prefs = g_browser_process->local_state();
54 prefs->SetString(prefs::kApplicationLocale, language_code); 49 prefs->SetString(prefs::kApplicationLocale, language_code);
55 #elif defined(OS_CHROMEOS) 50 #elif defined(OS_CHROMEOS)
56 // Secondary users and public session users cannot change the locale. 51 // Secondary users and public session users cannot change the locale.
57 user_manager::UserManager* user_manager = user_manager::UserManager::Get(); 52 user_manager::UserManager* user_manager = user_manager::UserManager::Get();
58 const user_manager::User* user = 53 const user_manager::User* user =
59 chromeos::ProfileHelper::Get()->GetUserByProfile(profile_); 54 chromeos::ProfileHelper::Get()->GetUserByProfile(profile_);
60 if (user && 55 if (user &&
61 user->email() == user_manager->GetPrimaryUser()->email() && 56 user->email() == user_manager->GetPrimaryUser()->email() &&
62 user->GetType() != user_manager::USER_TYPE_PUBLIC_ACCOUNT) { 57 user->GetType() != user_manager::USER_TYPE_PUBLIC_ACCOUNT) {
63 profile_->ChangeAppLocale(language_code, 58 profile_->ChangeAppLocale(language_code,
64 Profile::APP_LOCALE_CHANGED_VIA_SETTINGS); 59 Profile::APP_LOCALE_CHANGED_VIA_SETTINGS);
65 } 60 }
66 #else 61 #else
67 NOTREACHED() << "Attempting to set locale on unsupported platform"; 62 NOTREACHED() << "Attempting to set locale on unsupported platform";
68 #endif 63 #endif
69 } 64 }
70 65
71 void LanguagesHandler::HandleRestart(const base::ListValue* args) {
72 #if defined(OS_CHROMEOS)
73 chrome::AttemptUserExit();
74 #else
75 chrome::AttemptRestart();
76 #endif
77 }
78
79 } // namespace settings 66 } // namespace settings
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/settings/languages_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698