| 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_impl.h" | 5 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 101 #include "ui/resources/grit/ui_resources.h" | 101 #include "ui/resources/grit/ui_resources.h" |
| 102 #include "ui/wm/core/window_animations.h" | 102 #include "ui/wm/core/window_animations.h" |
| 103 | 103 |
| 104 using extensions::Extension; | 104 using extensions::Extension; |
| 105 using extensions::UnloadedExtensionInfo; | 105 using extensions::UnloadedExtensionInfo; |
| 106 using extension_misc::kGmailAppId; | 106 using extension_misc::kGmailAppId; |
| 107 using content::WebContents; | 107 using content::WebContents; |
| 108 | 108 |
| 109 namespace { | 109 namespace { |
| 110 | 110 |
| 111 int64_t GetDisplayIDForShelf(ash::Shelf* shelf) { | 111 int64_t GetDisplayIDForShelf(ash::WmShelf* shelf) { |
| 112 aura::Window* root_window = | |
| 113 shelf->shelf_widget()->GetNativeWindow()->GetRootWindow(); | |
| 114 display::Display display = | 112 display::Display display = |
| 115 display::Screen::GetScreen()->GetDisplayNearestWindow(root_window); | 113 shelf->GetWindow()->GetRootWindow()->GetDisplayNearestWindow(); |
| 116 DCHECK(display.is_valid()); | 114 DCHECK(display.is_valid()); |
| 117 return display.id(); | 115 return display.id(); |
| 118 } | 116 } |
| 119 | 117 |
| 120 } // namespace | 118 } // namespace |
| 121 | 119 |
| 122 // A class to get events from ChromeOS when a user gets changed or added. | 120 // A class to get events from ChromeOS when a user gets changed or added. |
| 123 class ChromeLauncherControllerUserSwitchObserver | 121 class ChromeLauncherControllerUserSwitchObserver |
| 124 : public user_manager::UserManager::UserSessionStateObserver { | 122 : public user_manager::UserManager::UserSessionStateObserver { |
| 125 public: | 123 public: |
| (...skipping 703 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 829 const AccountId& account_id) const { | 827 const AccountId& account_id) const { |
| 830 Profile* other_profile = multi_user_util::GetProfileFromAccountId(account_id); | 828 Profile* other_profile = multi_user_util::GetProfileFromAccountId(account_id); |
| 831 if (!other_profile || other_profile == profile_) | 829 if (!other_profile || other_profile == profile_) |
| 832 return false; | 830 return false; |
| 833 | 831 |
| 834 // Note: The Auto hide state from preferences is not the same as the actual | 832 // Note: The Auto hide state from preferences is not the same as the actual |
| 835 // visibility of the shelf. Depending on all the various states (full screen, | 833 // visibility of the shelf. Depending on all the various states (full screen, |
| 836 // no window on desktop, multi user, ..) the shelf could be shown - or not. | 834 // no window on desktop, multi user, ..) the shelf could be shown - or not. |
| 837 PrefService* prefs = profile_->GetPrefs(); | 835 PrefService* prefs = profile_->GetPrefs(); |
| 838 PrefService* other_prefs = other_profile->GetPrefs(); | 836 PrefService* other_prefs = other_profile->GetPrefs(); |
| 839 const int64_t display = GetDisplayIDForShelf(shelf); | 837 const int64_t display = GetDisplayIDForShelf(shelf->wm_shelf()); |
| 840 const bool currently_shown = | 838 const bool currently_shown = |
| 841 ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER == | 839 ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER == |
| 842 ash::launcher::GetShelfAutoHideBehaviorPref(prefs, display); | 840 ash::launcher::GetShelfAutoHideBehaviorPref(prefs, display); |
| 843 const bool other_shown = | 841 const bool other_shown = |
| 844 ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER == | 842 ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER == |
| 845 ash::launcher::GetShelfAutoHideBehaviorPref(other_prefs, display); | 843 ash::launcher::GetShelfAutoHideBehaviorPref(other_prefs, display); |
| 846 | 844 |
| 847 return currently_shown != other_shown || | 845 return currently_shown != other_shown || |
| 848 ash::launcher::GetShelfAlignmentPref(prefs, display) != | 846 ash::launcher::GetShelfAlignmentPref(prefs, display) != |
| 849 ash::launcher::GetShelfAlignmentPref(other_prefs, display); | 847 ash::launcher::GetShelfAlignmentPref(other_prefs, display); |
| 850 } | 848 } |
| 851 | 849 |
| 852 void ChromeLauncherControllerImpl::OnUserProfileReadyToSwitch( | 850 void ChromeLauncherControllerImpl::OnUserProfileReadyToSwitch( |
| 853 Profile* profile) { | 851 Profile* profile) { |
| 854 if (user_switch_observer_.get()) | 852 if (user_switch_observer_.get()) |
| 855 user_switch_observer_->OnUserProfileReadyToSwitch(profile); | 853 user_switch_observer_->OnUserProfileReadyToSwitch(profile); |
| 856 } | 854 } |
| 857 | 855 |
| 858 ArcAppDeferredLauncherController* | 856 ArcAppDeferredLauncherController* |
| 859 ChromeLauncherControllerImpl::GetArcDeferredLauncher() { | 857 ChromeLauncherControllerImpl::GetArcDeferredLauncher() { |
| 860 return arc_deferred_launcher_.get(); | 858 return arc_deferred_launcher_.get(); |
| 861 } | 859 } |
| 862 | 860 |
| 863 /////////////////////////////////////////////////////////////////////////////// | 861 /////////////////////////////////////////////////////////////////////////////// |
| 864 // ash::ShelfDelegate: | 862 // ash::ShelfDelegate: |
| 865 | 863 |
| 866 void ChromeLauncherControllerImpl::OnShelfCreated(ash::Shelf* shelf) { | 864 void ChromeLauncherControllerImpl::OnShelfCreated(ash::WmShelf* shelf) { |
| 867 PrefService* prefs = profile_->GetPrefs(); | 865 PrefService* prefs = profile_->GetPrefs(); |
| 868 const int64_t display = GetDisplayIDForShelf(shelf); | 866 const int64_t display = GetDisplayIDForShelf(shelf); |
| 869 | 867 |
| 870 shelf->wm_shelf()->SetAutoHideBehavior( | 868 shelf->SetAutoHideBehavior( |
| 871 ash::launcher::GetShelfAutoHideBehaviorPref(prefs, display)); | 869 ash::launcher::GetShelfAutoHideBehaviorPref(prefs, display)); |
| 872 | 870 |
| 873 if (ash::ShelfWidget::ShelfAlignmentAllowed()) { | 871 if (ash::ShelfWidget::ShelfAlignmentAllowed()) |
| 874 shelf->wm_shelf()->SetAlignment( | 872 shelf->SetAlignment(ash::launcher::GetShelfAlignmentPref(prefs, display)); |
| 875 ash::launcher::GetShelfAlignmentPref(prefs, display)); | |
| 876 } | |
| 877 } | 873 } |
| 878 | 874 |
| 879 void ChromeLauncherControllerImpl::OnShelfDestroyed(ash::Shelf* shelf) {} | 875 void ChromeLauncherControllerImpl::OnShelfDestroyed(ash::WmShelf* shelf) {} |
| 880 | 876 |
| 881 void ChromeLauncherControllerImpl::OnShelfAlignmentChanged(ash::Shelf* shelf) { | 877 void ChromeLauncherControllerImpl::OnShelfAlignmentChanged( |
| 882 ash::launcher::SetShelfAlignmentPref(profile_->GetPrefs(), | 878 ash::WmShelf* shelf) { |
| 883 GetDisplayIDForShelf(shelf), | 879 ash::launcher::SetShelfAlignmentPref( |
| 884 shelf->wm_shelf()->alignment()); | 880 profile_->GetPrefs(), GetDisplayIDForShelf(shelf), shelf->alignment()); |
| 885 } | 881 } |
| 886 | 882 |
| 887 void ChromeLauncherControllerImpl::OnShelfAutoHideBehaviorChanged( | 883 void ChromeLauncherControllerImpl::OnShelfAutoHideBehaviorChanged( |
| 888 ash::Shelf* shelf) { | 884 ash::WmShelf* shelf) { |
| 889 ash::launcher::SetShelfAutoHideBehaviorPref( | 885 ash::launcher::SetShelfAutoHideBehaviorPref(profile_->GetPrefs(), |
| 890 profile_->GetPrefs(), GetDisplayIDForShelf(shelf), | 886 GetDisplayIDForShelf(shelf), |
| 891 shelf->wm_shelf()->auto_hide_behavior()); | 887 shelf->auto_hide_behavior()); |
| 892 } | 888 } |
| 893 | 889 |
| 894 void ChromeLauncherControllerImpl::OnShelfAutoHideStateChanged( | 890 void ChromeLauncherControllerImpl::OnShelfAutoHideStateChanged( |
| 895 ash::Shelf* shelf) {} | 891 ash::WmShelf* shelf) {} |
| 896 | 892 |
| 897 void ChromeLauncherControllerImpl::OnShelfVisibilityStateChanged( | 893 void ChromeLauncherControllerImpl::OnShelfVisibilityStateChanged( |
| 898 ash::Shelf* shelf) {} | 894 ash::WmShelf* shelf) {} |
| 899 | 895 |
| 900 ash::ShelfID ChromeLauncherControllerImpl::GetShelfIDForAppID( | 896 ash::ShelfID ChromeLauncherControllerImpl::GetShelfIDForAppID( |
| 901 const std::string& app_id) { | 897 const std::string& app_id) { |
| 902 for (IDToItemControllerMap::const_iterator i = | 898 for (IDToItemControllerMap::const_iterator i = |
| 903 id_to_item_controller_map_.begin(); | 899 id_to_item_controller_map_.begin(); |
| 904 i != id_to_item_controller_map_.end(); ++i) { | 900 i != id_to_item_controller_map_.end(); ++i) { |
| 905 if (i->second->type() == LauncherItemController::TYPE_APP_PANEL) | 901 if (i->second->type() == LauncherItemController::TYPE_APP_PANEL) |
| 906 continue; // Don't include panels | 902 continue; // Don't include panels |
| 907 if (i->second->app_id() == app_id) | 903 if (i->second->app_id() == app_id) |
| 908 return i->first; | 904 return i->first; |
| (...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1312 } | 1308 } |
| 1313 } | 1309 } |
| 1314 } | 1310 } |
| 1315 | 1311 |
| 1316 void ChromeLauncherControllerImpl::SetShelfAutoHideBehaviorFromPrefs() { | 1312 void ChromeLauncherControllerImpl::SetShelfAutoHideBehaviorFromPrefs() { |
| 1317 for (ash::WmWindow* window : ash::WmShell::Get()->GetAllRootWindows()) { | 1313 for (ash::WmWindow* window : ash::WmShell::Get()->GetAllRootWindows()) { |
| 1318 ash::Shelf* shelf = ash::Shelf::ForWindow(window); | 1314 ash::Shelf* shelf = ash::Shelf::ForWindow(window); |
| 1319 if (shelf) { | 1315 if (shelf) { |
| 1320 shelf->wm_shelf()->SetAutoHideBehavior( | 1316 shelf->wm_shelf()->SetAutoHideBehavior( |
| 1321 ash::launcher::GetShelfAutoHideBehaviorPref( | 1317 ash::launcher::GetShelfAutoHideBehaviorPref( |
| 1322 profile_->GetPrefs(), GetDisplayIDForShelf(shelf))); | 1318 profile_->GetPrefs(), GetDisplayIDForShelf(shelf->wm_shelf()))); |
| 1323 } | 1319 } |
| 1324 } | 1320 } |
| 1325 } | 1321 } |
| 1326 | 1322 |
| 1327 void ChromeLauncherControllerImpl::SetShelfAlignmentFromPrefs() { | 1323 void ChromeLauncherControllerImpl::SetShelfAlignmentFromPrefs() { |
| 1328 if (!ash::ShelfWidget::ShelfAlignmentAllowed()) | 1324 if (!ash::ShelfWidget::ShelfAlignmentAllowed()) |
| 1329 return; | 1325 return; |
| 1330 | 1326 |
| 1331 for (ash::WmWindow* window : ash::WmShell::Get()->GetAllRootWindows()) { | 1327 for (ash::WmWindow* window : ash::WmShell::Get()->GetAllRootWindows()) { |
| 1332 ash::Shelf* shelf = ash::Shelf::ForWindow(window); | 1328 ash::Shelf* shelf = ash::Shelf::ForWindow(window); |
| 1333 if (shelf) { | 1329 if (shelf) { |
| 1334 shelf->wm_shelf()->SetAlignment(ash::launcher::GetShelfAlignmentPref( | 1330 shelf->wm_shelf()->SetAlignment(ash::launcher::GetShelfAlignmentPref( |
| 1335 profile_->GetPrefs(), GetDisplayIDForShelf(shelf))); | 1331 profile_->GetPrefs(), GetDisplayIDForShelf(shelf->wm_shelf()))); |
| 1336 } | 1332 } |
| 1337 } | 1333 } |
| 1338 } | 1334 } |
| 1339 | 1335 |
| 1340 void ChromeLauncherControllerImpl::SetShelfBehaviorsFromPrefs() { | 1336 void ChromeLauncherControllerImpl::SetShelfBehaviorsFromPrefs() { |
| 1341 SetShelfAutoHideBehaviorFromPrefs(); | 1337 SetShelfAutoHideBehaviorFromPrefs(); |
| 1342 SetShelfAlignmentFromPrefs(); | 1338 SetShelfAlignmentFromPrefs(); |
| 1343 } | 1339 } |
| 1344 | 1340 |
| 1345 void ChromeLauncherControllerImpl::SetVirtualKeyboardBehaviorFromPrefs() { | 1341 void ChromeLauncherControllerImpl::SetVirtualKeyboardBehaviorFromPrefs() { |
| (...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1686 if (index == -1) | 1682 if (index == -1) |
| 1687 continue; | 1683 continue; |
| 1688 ash::ShelfItem item = model_->items()[index]; | 1684 ash::ShelfItem item = model_->items()[index]; |
| 1689 item.image = image; | 1685 item.image = image; |
| 1690 if (arc_deferred_launcher_) | 1686 if (arc_deferred_launcher_) |
| 1691 arc_deferred_launcher_->MaybeApplySpinningEffect(id, &item.image); | 1687 arc_deferred_launcher_->MaybeApplySpinningEffect(id, &item.image); |
| 1692 model_->Set(index, item); | 1688 model_->Set(index, item); |
| 1693 // It's possible we're waiting on more than one item, so don't break. | 1689 // It's possible we're waiting on more than one item, so don't break. |
| 1694 } | 1690 } |
| 1695 } | 1691 } |
| OLD | NEW |