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

Side by Side Diff: chrome/browser/ui/ash/launcher/chrome_launcher_controller.cc

Issue 1812013003: Pass shelf instances, not root windows, for ash context menus. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Call OnShelfAlignmentChanged after LayoutShelf. Created 4 years, 9 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
OLDNEW
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 1003 matching lines...) Expand 10 before | Expand all | Expand 10 after
1014 } 1014 }
1015 1015
1016 ash::ShelfModel* ChromeLauncherController::model() { 1016 ash::ShelfModel* ChromeLauncherController::model() {
1017 return model_; 1017 return model_;
1018 } 1018 }
1019 1019
1020 Profile* ChromeLauncherController::profile() { 1020 Profile* ChromeLauncherController::profile() {
1021 return profile_; 1021 return profile_;
1022 } 1022 }
1023 1023
1024 ash::ShelfAutoHideBehavior ChromeLauncherController::GetShelfAutoHideBehavior(
1025 aura::Window* root_window) const {
1026 return GetShelfAutoHideBehaviorFromPrefs(profile_, root_window);
1027 }
1028
1029 bool ChromeLauncherController::CanUserModifyShelfAutoHideBehavior(
1030 aura::Window* root_window) const {
1031 #if defined(OS_WIN)
1032 // Disable shelf auto-hide behavior on screen sides in Metro mode.
1033 if (ash::Shell::GetInstance()->GetShelfAlignment(root_window) !=
1034 ash::SHELF_ALIGNMENT_BOTTOM) {
1035 return false;
1036 }
1037 #endif
1038 return profile_->GetPrefs()->
1039 FindPreference(prefs::kShelfAutoHideBehaviorLocal)->IsUserModifiable();
1040 }
1041
1042 void ChromeLauncherController::ToggleShelfAutoHideBehavior(
1043 aura::Window* root_window) {
1044 ash::ShelfAutoHideBehavior behavior = GetShelfAutoHideBehavior(root_window) ==
1045 ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS ?
1046 ash::SHELF_AUTO_HIDE_BEHAVIOR_NEVER :
1047 ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS;
1048 SetShelfAutoHideBehaviorPrefs(behavior, root_window);
1049 return;
1050 }
1051
1052 void ChromeLauncherController::UpdateAppState(content::WebContents* contents, 1024 void ChromeLauncherController::UpdateAppState(content::WebContents* contents,
1053 AppState app_state) { 1025 AppState app_state) {
1054 std::string app_id = app_tab_helper_->GetAppID(contents); 1026 std::string app_id = app_tab_helper_->GetAppID(contents);
1055 1027
1056 // Check if the gMail app is loaded and it matches the given content. 1028 // Check if the gMail app is loaded and it matches the given content.
1057 // This special treatment is needed to address crbug.com/234268. 1029 // This special treatment is needed to address crbug.com/234268.
1058 if (app_id.empty() && ContentCanBeHandledByGmailApp(contents)) 1030 if (app_id.empty() && ContentCanBeHandledByGmailApp(contents))
1059 app_id = kGmailAppId; 1031 app_id = kGmailAppId;
1060 1032
1061 // Check the old |app_id| for a tab. If the contents has changed we need to 1033 // Check the old |app_id| for a tab. If the contents has changed we need to
(...skipping 767 matching lines...) Expand 10 before | Expand all | Expand 10 after
1829 1801
1830 if (root_window == ash::Shell::GetPrimaryRootWindow()) { 1802 if (root_window == ash::Shell::GetPrimaryRootWindow()) {
1831 // See comment in |kShelfAlignment| about why we have two prefs here. 1803 // See comment in |kShelfAlignment| about why we have two prefs here.
1832 profile_->GetPrefs()->SetString(prefs::kShelfAutoHideBehaviorLocal, value); 1804 profile_->GetPrefs()->SetString(prefs::kShelfAutoHideBehaviorLocal, value);
1833 profile_->GetPrefs()->SetString(prefs::kShelfAutoHideBehavior, value); 1805 profile_->GetPrefs()->SetString(prefs::kShelfAutoHideBehavior, value);
1834 } 1806 }
1835 } 1807 }
1836 1808
1837 void ChromeLauncherController::SetShelfAutoHideBehaviorFromPrefs() { 1809 void ChromeLauncherController::SetShelfAutoHideBehaviorFromPrefs() {
1838 aura::Window::Windows root_windows = ash::Shell::GetAllRootWindows(); 1810 aura::Window::Windows root_windows = ash::Shell::GetAllRootWindows();
1839 1811 for (auto i = root_windows.begin(); i != root_windows.end(); ++i) {
1840 for (aura::Window::Windows::const_iterator iter = root_windows.begin();
1841 iter != root_windows.end(); ++iter) {
1842 ash::Shell::GetInstance()->SetShelfAutoHideBehavior( 1812 ash::Shell::GetInstance()->SetShelfAutoHideBehavior(
1843 GetShelfAutoHideBehavior(*iter), *iter); 1813 GetShelfAutoHideBehaviorFromPrefs(profile_, *i), *i);
1844 } 1814 }
1845 } 1815 }
1846 1816
1847 void ChromeLauncherController::SetShelfAlignmentFromPrefs() { 1817 void ChromeLauncherController::SetShelfAlignmentFromPrefs() {
1848 if (!ash::ShelfWidget::ShelfAlignmentAllowed()) 1818 if (!ash::ShelfWidget::ShelfAlignmentAllowed())
1849 return; 1819 return;
1850 1820
1851 aura::Window::Windows root_windows = ash::Shell::GetAllRootWindows(); 1821 aura::Window::Windows root_windows = ash::Shell::GetAllRootWindows();
1852 1822 for (auto i = root_windows.begin(); i != root_windows.end(); ++i) {
1853 for (aura::Window::Windows::const_iterator iter = root_windows.begin();
1854 iter != root_windows.end(); ++iter) {
1855 ash::Shell::GetInstance()->SetShelfAlignment( 1823 ash::Shell::GetInstance()->SetShelfAlignment(
1856 GetShelfAlignmentFromPrefs(profile_, *iter), *iter); 1824 GetShelfAlignmentFromPrefs(profile_, *i), *i);
1857 } 1825 }
1858 } 1826 }
1859 1827
1860 void ChromeLauncherController::SetShelfBehaviorsFromPrefs() { 1828 void ChromeLauncherController::SetShelfBehaviorsFromPrefs() {
1861 SetShelfAutoHideBehaviorFromPrefs(); 1829 SetShelfAutoHideBehaviorFromPrefs();
1862 SetShelfAlignmentFromPrefs(); 1830 SetShelfAlignmentFromPrefs();
1863 } 1831 }
1864 1832
1865 #if defined(OS_CHROMEOS) 1833 #if defined(OS_CHROMEOS)
1866 void ChromeLauncherController::SetVirtualKeyboardBehaviorFromPrefs() { 1834 void ChromeLauncherController::SetVirtualKeyboardBehaviorFromPrefs() {
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
2249 2217
2250 AppIconLoader* ChromeLauncherController::GetAppIconLoaderForApp( 2218 AppIconLoader* ChromeLauncherController::GetAppIconLoaderForApp(
2251 const std::string& app_id) { 2219 const std::string& app_id) {
2252 for (const auto& app_icon_loader : app_icon_loaders_) { 2220 for (const auto& app_icon_loader : app_icon_loaders_) {
2253 if (app_icon_loader->CanLoadImageForApp(app_id)) 2221 if (app_icon_loader->CanLoadImageForApp(app_id))
2254 return app_icon_loader.get(); 2222 return app_icon_loader.get();
2255 } 2223 }
2256 2224
2257 return nullptr; 2225 return nullptr;
2258 } 2226 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/ash/launcher/chrome_launcher_controller.h ('k') | chrome/browser/ui/ash/launcher/launcher_context_menu.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698