| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/options/manage_profile_handler.h" | 5 #include "chrome/browser/ui/webui/options/manage_profile_handler.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
| 10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
| 11 #include "base/value_conversions.h" | 11 #include "base/value_conversions.h" |
| 12 #include "base/values.h" | 12 #include "base/values.h" |
| 13 #include "chrome/browser/browser_process.h" | 13 #include "chrome/browser/browser_process.h" |
| 14 #include "chrome/browser/profiles/profile_info_util.h" |
| 14 #include "chrome/browser/profiles/profile_info_cache.h" | 15 #include "chrome/browser/profiles/profile_info_cache.h" |
| 15 #include "chrome/browser/profiles/profile_manager.h" | 16 #include "chrome/browser/profiles/profile_manager.h" |
| 16 #include "chrome/browser/profiles/profile_metrics.h" | 17 #include "chrome/browser/profiles/profile_metrics.h" |
| 17 #include "chrome/common/chrome_notification_types.h" | 18 #include "chrome/common/chrome_notification_types.h" |
| 18 #include "content/browser/tab_contents/tab_contents.h" | 19 #include "content/browser/tab_contents/tab_contents.h" |
| 19 #include "content/public/browser/notification_service.h" | 20 #include "content/public/browser/notification_service.h" |
| 20 #include "grit/generated_resources.h" | 21 #include "grit/generated_resources.h" |
| 21 | 22 |
| 22 ManageProfileHandler::ManageProfileHandler() { | 23 ManageProfileHandler::ManageProfileHandler() { |
| 23 } | 24 } |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 const content::NotificationSource& source, | 70 const content::NotificationSource& source, |
| 70 const content::NotificationDetails& details) { | 71 const content::NotificationDetails& details) { |
| 71 if (type == chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED) | 72 if (type == chrome::NOTIFICATION_PROFILE_CACHED_INFO_CHANGED) |
| 72 SendProfileNames(); | 73 SendProfileNames(); |
| 73 else | 74 else |
| 74 OptionsPageUIHandler::Observe(type, source, details); | 75 OptionsPageUIHandler::Observe(type, source, details); |
| 75 } | 76 } |
| 76 | 77 |
| 77 void ManageProfileHandler::RequestDefaultProfileIcons(const ListValue* args) { | 78 void ManageProfileHandler::RequestDefaultProfileIcons(const ListValue* args) { |
| 78 ListValue image_url_list; | 79 ListValue image_url_list; |
| 79 for (size_t i = 0; i < ProfileInfoCache::GetDefaultAvatarIconCount(); i++) { | 80 for (size_t i = 0; i < profiles::GetDefaultAvatarIconCount(); i++) { |
| 80 std::string url = ProfileInfoCache::GetDefaultAvatarIconUrl(i); | 81 std::string url = profiles::GetDefaultAvatarIconUrl(i); |
| 81 image_url_list.Append(Value::CreateStringValue(url)); | 82 image_url_list.Append(Value::CreateStringValue(url)); |
| 82 } | 83 } |
| 83 | 84 |
| 84 web_ui_->CallJavascriptFunction( | 85 web_ui_->CallJavascriptFunction( |
| 85 "ManageProfileOverlay.receiveDefaultProfileIcons", | 86 "ManageProfileOverlay.receiveDefaultProfileIcons", |
| 86 image_url_list); | 87 image_url_list); |
| 87 } | 88 } |
| 88 | 89 |
| 89 void ManageProfileHandler::SendProfileNames() { | 90 void ManageProfileHandler::SendProfileNames() { |
| 91 DictionaryValue profile_name_dict; |
| 92 |
| 90 ProfileInfoCache& cache = | 93 ProfileInfoCache& cache = |
| 91 g_browser_process->profile_manager()->GetProfileInfoCache(); | 94 g_browser_process->profile_manager()->GetProfileInfoCache(); |
| 92 DictionaryValue profile_name_dict; | 95 const std::vector<ProfileInfoEntry> entries(cache.GetProfilesSortedByName()); |
| 93 for (size_t i = 0, e = cache.GetNumberOfProfiles(); i < e; ++i) | 96 for (std::vector<ProfileInfoEntry>::const_iterator it = entries.begin(); |
| 94 profile_name_dict.SetBoolean(UTF16ToUTF8(cache.GetNameOfProfileAtIndex(i)), | 97 it != entries.end(); ++it) { |
| 95 true); | 98 profile_name_dict.SetBoolean(UTF16ToUTF8(it->name()), true); |
| 99 } |
| 96 | 100 |
| 97 web_ui_->CallJavascriptFunction("ManageProfileOverlay.receiveProfileNames", | 101 web_ui_->CallJavascriptFunction("ManageProfileOverlay.receiveProfileNames", |
| 98 profile_name_dict); | 102 profile_name_dict); |
| 99 } | 103 } |
| 100 | 104 |
| 101 void ManageProfileHandler::SetProfileNameAndIcon(const ListValue* args) { | 105 void ManageProfileHandler::SetProfileNameAndIcon(const ListValue* args) { |
| 102 DCHECK(args); | 106 DCHECK(args); |
| 103 | 107 |
| 104 Value* file_path_value; | 108 Value* file_path_value; |
| 105 FilePath profile_file_path; | 109 FilePath profile_file_path; |
| 106 if (!args->Get(0, &file_path_value) || | 110 if (!args->Get(0, &file_path_value) || |
| 107 !base::GetValueAsFilePath(*file_path_value, &profile_file_path)) | 111 !base::GetValueAsFilePath(*file_path_value, &profile_file_path)) |
| 108 return; | 112 return; |
| 109 | 113 |
| 110 ProfileInfoCache& cache = | 114 ProfileInfoCache& cache = |
| 111 g_browser_process->profile_manager()->GetProfileInfoCache(); | 115 g_browser_process->profile_manager()->GetProfileInfoCache(); |
| 112 size_t profile_index = cache.GetIndexOfProfileWithPath(profile_file_path); | 116 ProfileInfoEntry entry; |
| 113 if (profile_index == std::string::npos) | 117 if (!cache.GetInfoForProfile(profile_file_path, &entry)) |
| 114 return; | 118 return; |
| 115 | 119 |
| 116 string16 new_profile_name; | 120 string16 new_profile_name; |
| 117 if (!args->GetString(1, &new_profile_name)) | 121 if (!args->GetString(1, &new_profile_name)) |
| 118 return; | 122 return; |
| 119 | 123 |
| 120 cache.SetNameOfProfileAtIndex(profile_index, new_profile_name); | |
| 121 // The index in the cache may have changed if a new name triggered an | |
| 122 // alphabetical resort. | |
| 123 profile_index = cache.GetIndexOfProfileWithPath(profile_file_path); | |
| 124 if (profile_index == std::string::npos) | |
| 125 return; | |
| 126 | |
| 127 string16 icon_url; | 124 string16 icon_url; |
| 128 size_t new_icon_index; | 125 size_t new_icon_index; |
| 129 if (!args->GetString(2, &icon_url) || | 126 if (!args->GetString(2, &icon_url) || |
| 130 !cache.IsDefaultAvatarIconUrl(UTF16ToUTF8(icon_url), &new_icon_index)) | 127 !profiles::IsDefaultAvatarIconUrl(UTF16ToUTF8(icon_url), &new_icon_index)) |
| 131 return; | 128 return; |
| 132 | 129 |
| 130 entry.set_name(new_profile_name); |
| 131 entry.set_icon_index(new_icon_index); |
| 132 cache.SetInfoForProfile(entry); |
| 133 |
| 133 ProfileMetrics::LogProfileAvatarSelection(new_icon_index); | 134 ProfileMetrics::LogProfileAvatarSelection(new_icon_index); |
| 134 cache.SetAvatarIconOfProfileAtIndex(profile_index, new_icon_index); | |
| 135 | |
| 136 ProfileMetrics::LogProfileUpdate(profile_file_path); | 135 ProfileMetrics::LogProfileUpdate(profile_file_path); |
| 137 } | 136 } |
| 138 | 137 |
| 139 void ManageProfileHandler::DeleteProfile(const ListValue* args) { | 138 void ManageProfileHandler::DeleteProfile(const ListValue* args) { |
| 140 DCHECK(args); | 139 DCHECK(args); |
| 141 | 140 |
| 142 ProfileMetrics::LogProfileOpenMethod(ProfileMetrics::PROFILE_DELETED); | 141 ProfileMetrics::LogProfileOpenMethod(ProfileMetrics::PROFILE_DELETED); |
| 143 | 142 |
| 144 Value* file_path_value; | 143 Value* file_path_value; |
| 145 FilePath profile_file_path; | 144 FilePath profile_file_path; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 168 int profile_count = cache.GetNumberOfProfiles(); | 167 int profile_count = cache.GetNumberOfProfiles(); |
| 169 if (index < 0 && index >= profile_count) | 168 if (index < 0 && index >= profile_count) |
| 170 return; | 169 return; |
| 171 | 170 |
| 172 FilePath current_profile_path = | 171 FilePath current_profile_path = |
| 173 web_ui_->tab_contents()->browser_context()->GetPath(); | 172 web_ui_->tab_contents()->browser_context()->GetPath(); |
| 174 size_t icon_index = cache.GetAvatarIconIndexOfProfileAtIndex(index); | 173 size_t icon_index = cache.GetAvatarIconIndexOfProfileAtIndex(index); |
| 175 FilePath profile_path = cache.GetPathOfProfileAtIndex(index); | 174 FilePath profile_path = cache.GetPathOfProfileAtIndex(index); |
| 176 profile_value.SetString("name", cache.GetNameOfProfileAtIndex(index)); | 175 profile_value.SetString("name", cache.GetNameOfProfileAtIndex(index)); |
| 177 profile_value.SetString("iconURL", | 176 profile_value.SetString("iconURL", |
| 178 cache.GetDefaultAvatarIconUrl(icon_index)); | 177 profiles::GetDefaultAvatarIconUrl(icon_index)); |
| 179 profile_value.Set("filePath", base::CreateFilePathValue(profile_path)); | 178 profile_value.Set("filePath", base::CreateFilePathValue(profile_path)); |
| 180 profile_value.SetBoolean("isCurrentProfile", | 179 profile_value.SetBoolean("isCurrentProfile", |
| 181 profile_path == current_profile_path); | 180 profile_path == current_profile_path); |
| 182 | 181 |
| 183 web_ui_->CallJavascriptFunction("ManageProfileOverlay.setProfileInfo", | 182 web_ui_->CallJavascriptFunction("ManageProfileOverlay.setProfileInfo", |
| 184 profile_value); | 183 profile_value); |
| 185 } | 184 } |
| OLD | NEW |