OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_per_browser.
h" | 5 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_browser.
h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "ash/launcher/launcher_model.h" | 9 #include "ash/launcher/launcher_model.h" |
10 #include "ash/shell.h" | 10 #include "ash/shell.h" |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 app_tab_helper_.reset(new LauncherAppTabHelper(profile_)); | 167 app_tab_helper_.reset(new LauncherAppTabHelper(profile_)); |
168 app_icon_loader_.reset(new LauncherAppIconLoader(profile_, this)); | 168 app_icon_loader_.reset(new LauncherAppIconLoader(profile_, this)); |
169 | 169 |
170 notification_registrar_.Add(this, | 170 notification_registrar_.Add(this, |
171 chrome::NOTIFICATION_EXTENSION_LOADED, | 171 chrome::NOTIFICATION_EXTENSION_LOADED, |
172 content::Source<Profile>(profile_)); | 172 content::Source<Profile>(profile_)); |
173 notification_registrar_.Add(this, | 173 notification_registrar_.Add(this, |
174 chrome::NOTIFICATION_EXTENSION_UNLOADED, | 174 chrome::NOTIFICATION_EXTENSION_UNLOADED, |
175 content::Source<Profile>(profile_)); | 175 content::Source<Profile>(profile_)); |
176 pref_change_registrar_.Init(profile_->GetPrefs()); | 176 pref_change_registrar_.Init(profile_->GetPrefs()); |
177 pref_change_registrar_.Add(prefs::kPinnedLauncherApps, this); | 177 pref_change_registrar_.Add( |
| 178 prefs::kPinnedLauncherApps, |
| 179 base::Bind(&ChromeLauncherControllerPerBrowser:: |
| 180 UpdateAppLaunchersFromPref, |
| 181 base::Unretained(this))); |
178 } | 182 } |
179 | 183 |
180 ChromeLauncherControllerPerBrowser::~ChromeLauncherControllerPerBrowser() { | 184 ChromeLauncherControllerPerBrowser::~ChromeLauncherControllerPerBrowser() { |
181 // Reset the shell window controller here since it has a weak pointer to | 185 // Reset the shell window controller here since it has a weak pointer to |
182 // this. | 186 // this. |
183 shell_window_controller_.reset(); | 187 shell_window_controller_.reset(); |
184 | 188 |
185 model_->RemoveObserver(this); | 189 model_->RemoveObserver(this); |
186 for (IDToItemControllerMap::iterator i = id_to_item_controller_map_.begin(); | 190 for (IDToItemControllerMap::iterator i = id_to_item_controller_map_.begin(); |
187 i != id_to_item_controller_map_.end(); ++i) { | 191 i != id_to_item_controller_map_.end(); ++i) { |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
224 | 228 |
225 UpdateAppLaunchersFromPref(); | 229 UpdateAppLaunchersFromPref(); |
226 | 230 |
227 // TODO(sky): update unit test so that this test isn't necessary. | 231 // TODO(sky): update unit test so that this test isn't necessary. |
228 if (ash::Shell::HasInstance()) { | 232 if (ash::Shell::HasInstance()) { |
229 SetShelfAutoHideBehaviorFromPrefs(); | 233 SetShelfAutoHideBehaviorFromPrefs(); |
230 SetShelfAlignmentFromPrefs(); | 234 SetShelfAlignmentFromPrefs(); |
231 PrefService* prefs = profile_->GetPrefs(); | 235 PrefService* prefs = profile_->GetPrefs(); |
232 if (prefs->GetString(prefs::kShelfAlignmentLocal).empty() || | 236 if (prefs->GetString(prefs::kShelfAlignmentLocal).empty() || |
233 prefs->GetString(prefs::kShelfAutoHideBehaviorLocal).empty()) { | 237 prefs->GetString(prefs::kShelfAutoHideBehaviorLocal).empty()) { |
| 238 // This causes OnIsSyncingChanged to be called when the value of |
| 239 // PrefService::IsSyncing() changes. |
234 prefs->AddObserver(this); | 240 prefs->AddObserver(this); |
235 } | 241 } |
236 ash::Shell::GetInstance()->AddShellObserver(this); | 242 ash::Shell::GetInstance()->AddShellObserver(this); |
237 } | 243 } |
238 } | 244 } |
239 | 245 |
240 ash::LauncherID ChromeLauncherControllerPerBrowser::CreateTabbedLauncherItem( | 246 ash::LauncherID ChromeLauncherControllerPerBrowser::CreateTabbedLauncherItem( |
241 LauncherItemController* controller, | 247 LauncherItemController* controller, |
242 IncognitoState is_incognito, | 248 IncognitoState is_incognito, |
243 ash::LauncherItemStatus status) { | 249 ash::LauncherItemStatus status) { |
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
781 if (IsAppPinned(extension->id())) | 787 if (IsAppPinned(extension->id())) |
782 DoUnpinAppsWithID(extension->id()); | 788 DoUnpinAppsWithID(extension->id()); |
783 app_icon_loader_->ClearImage(extension->id()); | 789 app_icon_loader_->ClearImage(extension->id()); |
784 break; | 790 break; |
785 } | 791 } |
786 default: | 792 default: |
787 NOTREACHED() << "Unexpected notification type=" << type; | 793 NOTREACHED() << "Unexpected notification type=" << type; |
788 } | 794 } |
789 } | 795 } |
790 | 796 |
791 void ChromeLauncherControllerPerBrowser::OnPreferenceChanged( | |
792 PrefServiceBase* service, | |
793 const std::string& pref_name) { | |
794 if (pref_name == prefs::kPinnedLauncherApps) { | |
795 UpdateAppLaunchersFromPref(); | |
796 } else if (pref_name == prefs::kShelfAlignmentLocal) { | |
797 SetShelfAlignmentFromPrefs(); | |
798 } else if (pref_name == prefs::kShelfAutoHideBehaviorLocal) { | |
799 SetShelfAutoHideBehaviorFromPrefs(); | |
800 } else { | |
801 NOTREACHED() << "Unexpected pref change for " << pref_name; | |
802 } | |
803 } | |
804 | |
805 void ChromeLauncherControllerPerBrowser::OnShelfAlignmentChanged() { | 797 void ChromeLauncherControllerPerBrowser::OnShelfAlignmentChanged() { |
806 const char* pref_value = NULL; | 798 const char* pref_value = NULL; |
807 // TODO(oshima): Support multiple displays. | 799 // TODO(oshima): Support multiple displays. |
808 switch (ash::Shell::GetInstance()->GetShelfAlignment( | 800 switch (ash::Shell::GetInstance()->GetShelfAlignment( |
809 ash::Shell::GetPrimaryRootWindow())) { | 801 ash::Shell::GetPrimaryRootWindow())) { |
810 case ash::SHELF_ALIGNMENT_BOTTOM: | 802 case ash::SHELF_ALIGNMENT_BOTTOM: |
811 pref_value = ash::kShelfAlignmentBottom; | 803 pref_value = ash::kShelfAlignmentBottom; |
812 break; | 804 break; |
813 case ash::SHELF_ALIGNMENT_LEFT: | 805 case ash::SHELF_ALIGNMENT_LEFT: |
814 pref_value = ash::kShelfAlignmentLeft; | 806 pref_value = ash::kShelfAlignmentLeft; |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
863 ash::LauncherID id = model_->items()[i].id; | 855 ash::LauncherID id = model_->items()[i].id; |
864 if (HasItemController(id) && IsPinned(id)) { | 856 if (HasItemController(id) && IsPinned(id)) { |
865 base::DictionaryValue* app_value = ash::CreateAppDict( | 857 base::DictionaryValue* app_value = ash::CreateAppDict( |
866 id_to_item_controller_map_[id]->app_id()); | 858 id_to_item_controller_map_[id]->app_id()); |
867 if (app_value) | 859 if (app_value) |
868 updater->Append(app_value); | 860 updater->Append(app_value); |
869 } | 861 } |
870 } | 862 } |
871 } | 863 } |
872 } | 864 } |
873 pref_change_registrar_.Add(prefs::kPinnedLauncherApps, this); | 865 pref_change_registrar_.Add( |
| 866 prefs::kPinnedLauncherApps, |
| 867 base::Bind(&ChromeLauncherControllerPerBrowser:: |
| 868 UpdateAppLaunchersFromPref, |
| 869 base::Unretained(this))); |
874 } | 870 } |
875 | 871 |
876 ash::LauncherModel* ChromeLauncherControllerPerBrowser::model() { | 872 ash::LauncherModel* ChromeLauncherControllerPerBrowser::model() { |
877 return model_; | 873 return model_; |
878 } | 874 } |
879 | 875 |
880 Profile* ChromeLauncherControllerPerBrowser::profile() { | 876 Profile* ChromeLauncherControllerPerBrowser::profile() { |
881 return profile_; | 877 return profile_; |
882 } | 878 } |
883 | 879 |
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1106 AppIconLoader* loader) { | 1102 AppIconLoader* loader) { |
1107 app_icon_loader_.reset(loader); | 1103 app_icon_loader_.reset(loader); |
1108 } | 1104 } |
1109 | 1105 |
1110 const std::string& | 1106 const std::string& |
1111 ChromeLauncherControllerPerBrowser::GetAppIdFromLauncherIdForTest( | 1107 ChromeLauncherControllerPerBrowser::GetAppIdFromLauncherIdForTest( |
1112 ash::LauncherID id) { | 1108 ash::LauncherID id) { |
1113 return id_to_item_controller_map_[id]->app_id(); | 1109 return id_to_item_controller_map_[id]->app_id(); |
1114 } | 1110 } |
1115 | 1111 |
OLD | NEW |