| Index: chrome/browser/ui/webui/options/manage_profile_handler.cc
|
| diff --git a/chrome/browser/ui/webui/options/manage_profile_handler.cc b/chrome/browser/ui/webui/options/manage_profile_handler.cc
|
| index 25481b144b9798e11336a0bf070f172e8bc5f77f..58434bf3933c2994a763901467257a68f95d0584 100644
|
| --- a/chrome/browser/ui/webui/options/manage_profile_handler.cc
|
| +++ b/chrome/browser/ui/webui/options/manage_profile_handler.cc
|
| @@ -27,6 +27,11 @@
|
| #include "content/public/browser/web_ui.h"
|
| #include "grit/generated_resources.h"
|
|
|
| +#if defined(ENABLE_SETTINGS_APP)
|
| +#include "chrome/browser/ui/app_list/app_list_util.h"
|
| +#include "content/public/browser/web_contents.h"
|
| +#endif
|
| +
|
| namespace options {
|
|
|
| namespace {
|
| @@ -113,6 +118,11 @@ void ManageProfileHandler::RegisterMessages() {
|
| web_ui()->RegisterMessageCallback("profileIconSelectionChanged",
|
| base::Bind(&ManageProfileHandler::ProfileIconSelectionChanged,
|
| base::Unretained(this)));
|
| +#if defined(ENABLE_SETTINGS_APP)
|
| + web_ui()->RegisterMessageCallback("profilesAppListSwitch",
|
| + base::Bind(&ManageProfileHandler::ProfilesAppListSwitch,
|
| + base::Unretained(this)));
|
| +#endif
|
| }
|
|
|
| void ManageProfileHandler::Observe(
|
| @@ -309,6 +319,26 @@ void ManageProfileHandler::DeleteProfile(const ListValue* args) {
|
| profile_file_path, desktop_type);
|
| }
|
|
|
| +void ManageProfileHandler::ProfilesAppListSwitch(const ListValue* args) {
|
| +#if !defined(ENABLE_SETTINGS_APP)
|
| + return;
|
| +#else
|
| + DCHECK(args);
|
| + if (!ProfileManager::IsMultipleProfilesEnabled())
|
| + return;
|
| +
|
| + const Value* file_path_value;
|
| + FilePath profile_file_path;
|
| + if (!args->Get(0, &file_path_value) ||
|
| + !base::GetValueAsFilePath(*file_path_value, &profile_file_path))
|
| + return;
|
| +
|
| + chrome::UpdateProfilePath(profile_file_path);
|
| + // Close the settings app, since it will now be for the wrong profile.
|
| + web_ui()->GetWebContents()->Close();
|
| +#endif // else !defined(ENABLE_SETTINGS_APP)
|
| +}
|
| +
|
| void ManageProfileHandler::ProfileIconSelectionChanged(
|
| const base::ListValue* args) {
|
| DCHECK(args);
|
|
|