| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/ash/launcher/chrome_launcher_controller.h" | 5 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 214 ash::ShelfAutoHideBehavior GetShelfAutoHideBehaviorFromPrefs( | 214 ash::ShelfAutoHideBehavior GetShelfAutoHideBehaviorFromPrefs( |
| 215 Profile* profile, | 215 Profile* profile, |
| 216 aura::Window* root_window) { | 216 aura::Window* root_window) { |
| 217 DCHECK(profile); | 217 DCHECK(profile); |
| 218 | 218 |
| 219 // Don't show the shelf in app mode. | 219 // Don't show the shelf in app mode. |
| 220 if (chrome::IsRunningInAppMode()) | 220 if (chrome::IsRunningInAppMode()) |
| 221 return ash::SHELF_AUTO_HIDE_ALWAYS_HIDDEN; | 221 return ash::SHELF_AUTO_HIDE_ALWAYS_HIDDEN; |
| 222 | 222 |
| 223 // See comment in |kShelfAlignment| as to why we consider two prefs. | 223 // See comment in |kShelfAlignment| as to why we consider two prefs. |
| 224 const std::string behavior_value( | 224 return ash::AutoHideBehaviorFromPref(GetPrefForRootWindow( |
| 225 GetPrefForRootWindow(profile->GetPrefs(), | 225 profile->GetPrefs(), root_window, prefs::kShelfAutoHideBehaviorLocal, |
| 226 root_window, | 226 prefs::kShelfAutoHideBehavior)); |
| 227 prefs::kShelfAutoHideBehaviorLocal, | |
| 228 prefs::kShelfAutoHideBehavior)); | |
| 229 | |
| 230 // Note: To maintain sync compatibility with old images of chrome/chromeos | |
| 231 // the set of values that may be encountered includes the now-extinct | |
| 232 // "Default" as well as "Never" and "Always", "Default" should now | |
| 233 // be treated as "Never" (http://crbug.com/146773). | |
| 234 if (behavior_value == ash::kShelfAutoHideBehaviorAlways) | |
| 235 return ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS; | |
| 236 return ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER; | |
| 237 } | 227 } |
| 238 | 228 |
| 239 // Gets the shelf alignment from prefs for a root window. | 229 // Gets the shelf alignment from prefs for a root window. |
| 240 ash::ShelfAlignment GetShelfAlignmentFromPrefs(Profile* profile, | 230 ash::ShelfAlignment GetShelfAlignmentFromPrefs(Profile* profile, |
| 241 aura::Window* root_window) { | 231 aura::Window* root_window) { |
| 242 DCHECK(profile); | 232 DCHECK(profile); |
| 243 | 233 |
| 244 // See comment in |kShelfAlignment| as to why we consider two prefs. | 234 // See comment in |kShelfAlignment| as to why we consider two prefs. |
| 245 const std::string alignment_value( | 235 return ash::AlignmentFromPref(GetPrefForRootWindow( |
| 246 GetPrefForRootWindow(profile->GetPrefs(), | 236 profile->GetPrefs(), root_window, prefs::kShelfAlignmentLocal, |
| 247 root_window, | 237 prefs::kShelfAlignment)); |
| 248 prefs::kShelfAlignmentLocal, | |
| 249 prefs::kShelfAlignment)); | |
| 250 if (alignment_value == ash::kShelfAlignmentLeft) | |
| 251 return ash::SHELF_ALIGNMENT_LEFT; | |
| 252 else if (alignment_value == ash::kShelfAlignmentRight) | |
| 253 return ash::SHELF_ALIGNMENT_RIGHT; | |
| 254 // Default to bottom. | |
| 255 return ash::SHELF_ALIGNMENT_BOTTOM; | |
| 256 } | 238 } |
| 257 | 239 |
| 258 // If prefs have synced and no user-set value exists at |local_path|, the value | 240 // If prefs have synced and no user-set value exists at |local_path|, the value |
| 259 // from |synced_path| is copied to |local_path|. | 241 // from |synced_path| is copied to |local_path|. |
| 260 void MaybePropagatePrefToLocal( | 242 void MaybePropagatePrefToLocal( |
| 261 syncable_prefs::PrefServiceSyncable* pref_service, | 243 syncable_prefs::PrefServiceSyncable* pref_service, |
| 262 const char* local_path, | 244 const char* local_path, |
| 263 const char* synced_path) { | 245 const char* synced_path) { |
| 264 if (!pref_service->FindPreference(local_path)->HasUserSetting() && | 246 if (!pref_service->FindPreference(local_path)->HasUserSetting() && |
| 265 pref_service->IsSyncing()) { | 247 pref_service->IsSyncing()) { |
| (...skipping 880 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1146 shelf->SetAutoHideBehavior( | 1128 shelf->SetAutoHideBehavior( |
| 1147 GetShelfAutoHideBehaviorFromPrefs(profile_, root_window)); | 1129 GetShelfAutoHideBehaviorFromPrefs(profile_, root_window)); |
| 1148 | 1130 |
| 1149 if (ash::ShelfWidget::ShelfAlignmentAllowed()) | 1131 if (ash::ShelfWidget::ShelfAlignmentAllowed()) |
| 1150 shelf->SetAlignment(GetShelfAlignmentFromPrefs(profile_, root_window)); | 1132 shelf->SetAlignment(GetShelfAlignmentFromPrefs(profile_, root_window)); |
| 1151 } | 1133 } |
| 1152 | 1134 |
| 1153 void ChromeLauncherController::OnShelfDestroyed(ash::Shelf* shelf) {} | 1135 void ChromeLauncherController::OnShelfDestroyed(ash::Shelf* shelf) {} |
| 1154 | 1136 |
| 1155 void ChromeLauncherController::OnShelfAlignmentChanged(ash::Shelf* shelf) { | 1137 void ChromeLauncherController::OnShelfAlignmentChanged(ash::Shelf* shelf) { |
| 1156 const char* value = nullptr; | 1138 const char* value = ash::AlignmentToPref(shelf->GetAlignment()); |
| 1157 switch (shelf->GetAlignment()) { | |
| 1158 case ash::SHELF_ALIGNMENT_BOTTOM: | |
| 1159 value = ash::kShelfAlignmentBottom; | |
| 1160 break; | |
| 1161 case ash::SHELF_ALIGNMENT_LEFT: | |
| 1162 value = ash::kShelfAlignmentLeft; | |
| 1163 break; | |
| 1164 case ash::SHELF_ALIGNMENT_RIGHT: | |
| 1165 value = ash::kShelfAlignmentRight; | |
| 1166 break; | |
| 1167 } | |
| 1168 | |
| 1169 aura::Window* root_window = | 1139 aura::Window* root_window = |
| 1170 shelf->shelf_widget()->GetNativeWindow()->GetRootWindow(); | 1140 shelf->shelf_widget()->GetNativeWindow()->GetRootWindow(); |
| 1171 | 1141 |
| 1172 UpdatePerDisplayPref(profile_->GetPrefs(), root_window, | 1142 UpdatePerDisplayPref(profile_->GetPrefs(), root_window, |
| 1173 prefs::kShelfAlignment, value); | 1143 prefs::kShelfAlignment, value); |
| 1174 | 1144 |
| 1175 if (root_window == ash::Shell::GetPrimaryRootWindow()) { | 1145 if (root_window == ash::Shell::GetPrimaryRootWindow()) { |
| 1176 // See comment in |kShelfAlignment| about why we have two prefs here. | 1146 // See comment in |kShelfAlignment| about why we have two prefs here. |
| 1177 profile_->GetPrefs()->SetString(prefs::kShelfAlignmentLocal, value); | 1147 profile_->GetPrefs()->SetString(prefs::kShelfAlignmentLocal, value); |
| 1178 profile_->GetPrefs()->SetString(prefs::kShelfAlignment, value); | 1148 profile_->GetPrefs()->SetString(prefs::kShelfAlignment, value); |
| 1179 } | 1149 } |
| 1180 } | 1150 } |
| 1181 | 1151 |
| 1182 void ChromeLauncherController::OnShelfAutoHideBehaviorChanged( | 1152 void ChromeLauncherController::OnShelfAutoHideBehaviorChanged( |
| 1183 ash::Shelf* shelf) { | 1153 ash::Shelf* shelf) { |
| 1184 const char* value = nullptr; | 1154 const char* value = ash::AutoHideBehaviorToPref(shelf->GetAutoHideBehavior()); |
| 1185 switch (shelf->GetAutoHideBehavior()) { | 1155 if (!value) |
| 1186 case ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS: | 1156 return; |
| 1187 value = ash::kShelfAutoHideBehaviorAlways; | |
| 1188 break; | |
| 1189 case ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER: | |
| 1190 value = ash::kShelfAutoHideBehaviorNever; | |
| 1191 break; | |
| 1192 case ash::SHELF_AUTO_HIDE_ALWAYS_HIDDEN: | |
| 1193 // This one should not be a valid preference option for now. We only want | |
| 1194 // to completely hide it when we run in app mode - or while we temporarily | |
| 1195 // hide the shelf as part of an animation (e.g. the multi user change). | |
| 1196 return; | |
| 1197 } | |
| 1198 | 1157 |
| 1199 aura::Window* root_window = | 1158 aura::Window* root_window = |
| 1200 shelf->shelf_widget()->GetNativeWindow()->GetRootWindow(); | 1159 shelf->shelf_widget()->GetNativeWindow()->GetRootWindow(); |
| 1201 | 1160 |
| 1202 UpdatePerDisplayPref(profile_->GetPrefs(), root_window, | 1161 UpdatePerDisplayPref(profile_->GetPrefs(), root_window, |
| 1203 prefs::kShelfAutoHideBehavior, value); | 1162 prefs::kShelfAutoHideBehavior, value); |
| 1204 | 1163 |
| 1205 if (root_window == ash::Shell::GetPrimaryRootWindow()) { | 1164 if (root_window == ash::Shell::GetPrimaryRootWindow()) { |
| 1206 // See comment in |kShelfAlignment| about why we have two prefs here. | 1165 // See comment in |kShelfAlignment| about why we have two prefs here. |
| 1207 profile_->GetPrefs()->SetString(prefs::kShelfAutoHideBehaviorLocal, value); | 1166 profile_->GetPrefs()->SetString(prefs::kShelfAutoHideBehaviorLocal, value); |
| (...skipping 1020 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2228 | 2187 |
| 2229 AppIconLoader* ChromeLauncherController::GetAppIconLoaderForApp( | 2188 AppIconLoader* ChromeLauncherController::GetAppIconLoaderForApp( |
| 2230 const std::string& app_id) { | 2189 const std::string& app_id) { |
| 2231 for (const auto& app_icon_loader : app_icon_loaders_) { | 2190 for (const auto& app_icon_loader : app_icon_loaders_) { |
| 2232 if (app_icon_loader->CanLoadImageForApp(app_id)) | 2191 if (app_icon_loader->CanLoadImageForApp(app_id)) |
| 2233 return app_icon_loader.get(); | 2192 return app_icon_loader.get(); |
| 2234 } | 2193 } |
| 2235 | 2194 |
| 2236 return nullptr; | 2195 return nullptr; |
| 2237 } | 2196 } |
| OLD | NEW |