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

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

Issue 11308295: Revert 170483 - Remove PrefObserver usages, batch 12. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years 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 | Annotate | Revision Log
OLDNEW
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_app.h" 5 #include "chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app.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 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 app_tab_helper_.reset(new LauncherAppTabHelper(profile_)); 166 app_tab_helper_.reset(new LauncherAppTabHelper(profile_));
167 app_icon_loader_.reset(new LauncherAppIconLoader(profile_, this)); 167 app_icon_loader_.reset(new LauncherAppIconLoader(profile_, this));
168 168
169 notification_registrar_.Add(this, 169 notification_registrar_.Add(this,
170 chrome::NOTIFICATION_EXTENSION_LOADED, 170 chrome::NOTIFICATION_EXTENSION_LOADED,
171 content::Source<Profile>(profile_)); 171 content::Source<Profile>(profile_));
172 notification_registrar_.Add(this, 172 notification_registrar_.Add(this,
173 chrome::NOTIFICATION_EXTENSION_UNLOADED, 173 chrome::NOTIFICATION_EXTENSION_UNLOADED,
174 content::Source<Profile>(profile_)); 174 content::Source<Profile>(profile_));
175 pref_change_registrar_.Init(profile_->GetPrefs()); 175 pref_change_registrar_.Init(profile_->GetPrefs());
176 pref_change_registrar_.Add( 176 pref_change_registrar_.Add(prefs::kPinnedLauncherApps, this);
177 prefs::kPinnedLauncherApps,
178 base::Bind(&ChromeLauncherControllerPerApp::UpdateAppLaunchersFromPref,
179 base::Unretained(this)));
180 } 177 }
181 178
182 ChromeLauncherControllerPerApp::~ChromeLauncherControllerPerApp() { 179 ChromeLauncherControllerPerApp::~ChromeLauncherControllerPerApp() {
183 // Reset the shell window controller here since it has a weak pointer to this. 180 // Reset the shell window controller here since it has a weak pointer to this.
184 shell_window_controller_.reset(); 181 shell_window_controller_.reset();
185 182
186 model_->RemoveObserver(this); 183 model_->RemoveObserver(this);
187 for (IDToItemControllerMap::iterator i = id_to_item_controller_map_.begin(); 184 for (IDToItemControllerMap::iterator i = id_to_item_controller_map_.begin();
188 i != id_to_item_controller_map_.end(); ++i) { 185 i != id_to_item_controller_map_.end(); ++i) {
189 i->second->OnRemoved(); 186 i->second->OnRemoved();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 updater.Get()->Clear(); 220 updater.Get()->Clear();
224 } 221 }
225 222
226 UpdateAppLaunchersFromPref(); 223 UpdateAppLaunchersFromPref();
227 224
228 // TODO(sky): update unit test so that this test isn't necessary. 225 // TODO(sky): update unit test so that this test isn't necessary.
229 if (ash::Shell::HasInstance()) { 226 if (ash::Shell::HasInstance()) {
230 SetShelfAutoHideBehaviorFromPrefs(); 227 SetShelfAutoHideBehaviorFromPrefs();
231 SetShelfAlignmentFromPrefs(); 228 SetShelfAlignmentFromPrefs();
232 PrefService* prefs = profile_->GetPrefs(); 229 PrefService* prefs = profile_->GetPrefs();
233 if (prefs->GetString(prefs::kShelfAlignmentLocal).empty()) { 230 if (prefs->GetString(prefs::kShelfAlignmentLocal).empty() ||
234 pref_change_registrar_.Add( 231 prefs->GetString(prefs::kShelfAutoHideBehaviorLocal).empty()) {
235 prefs::kShelfAlignmentLocal, 232 prefs->AddObserver(this);
236 base::Bind(
237 &ChromeLauncherControllerPerApp::SetShelfAlignmentFromPrefs,
238 base::Unretained(this)));
239 }
240 if (prefs->GetString(prefs::kShelfAutoHideBehaviorLocal).empty()) {
241 pref_change_registrar_.Add(
242 prefs::kShelfAutoHideBehaviorLocal,
243 base::Bind(&ChromeLauncherControllerPerApp::
244 SetShelfAutoHideBehaviorFromPrefs,
245 base::Unretained(this)));
246 } 233 }
247 ash::Shell::GetInstance()->AddShellObserver(this); 234 ash::Shell::GetInstance()->AddShellObserver(this);
248 } 235 }
249 } 236 }
250 237
251 ash::LauncherID ChromeLauncherControllerPerApp::CreateTabbedLauncherItem( 238 ash::LauncherID ChromeLauncherControllerPerApp::CreateTabbedLauncherItem(
252 LauncherItemController* controller, 239 LauncherItemController* controller,
253 IncognitoState is_incognito, 240 IncognitoState is_incognito,
254 ash::LauncherItemStatus status) { 241 ash::LauncherItemStatus status) {
255 ash::LauncherID id = model_->next_id(); 242 ash::LauncherID id = model_->next_id();
(...skipping 533 matching lines...) Expand 10 before | Expand all | Expand 10 after
789 if (IsAppPinned(extension->id())) 776 if (IsAppPinned(extension->id()))
790 DoUnpinAppsWithID(extension->id()); 777 DoUnpinAppsWithID(extension->id());
791 app_icon_loader_->ClearImage(extension->id()); 778 app_icon_loader_->ClearImage(extension->id());
792 break; 779 break;
793 } 780 }
794 default: 781 default:
795 NOTREACHED() << "Unexpected notification type=" << type; 782 NOTREACHED() << "Unexpected notification type=" << type;
796 } 783 }
797 } 784 }
798 785
786 void ChromeLauncherControllerPerApp::OnPreferenceChanged(
787 PrefServiceBase* service,
788 const std::string& pref_name) {
789 if (pref_name == prefs::kPinnedLauncherApps) {
790 UpdateAppLaunchersFromPref();
791 } else if (pref_name == prefs::kShelfAlignmentLocal) {
792 SetShelfAlignmentFromPrefs();
793 } else if (pref_name == prefs::kShelfAutoHideBehaviorLocal) {
794 SetShelfAutoHideBehaviorFromPrefs();
795 } else {
796 NOTREACHED() << "Unexpected pref change for " << pref_name;
797 }
798 }
799
799 void ChromeLauncherControllerPerApp::OnShelfAlignmentChanged() { 800 void ChromeLauncherControllerPerApp::OnShelfAlignmentChanged() {
800 const char* pref_value = NULL; 801 const char* pref_value = NULL;
801 // TODO(oshima): Support multiple displays. 802 // TODO(oshima): Support multiple displays.
802 switch (ash::Shell::GetInstance()->GetShelfAlignment( 803 switch (ash::Shell::GetInstance()->GetShelfAlignment(
803 ash::Shell::GetPrimaryRootWindow())) { 804 ash::Shell::GetPrimaryRootWindow())) {
804 case ash::SHELF_ALIGNMENT_BOTTOM: 805 case ash::SHELF_ALIGNMENT_BOTTOM:
805 pref_value = ash::kShelfAlignmentBottom; 806 pref_value = ash::kShelfAlignmentBottom;
806 break; 807 break;
807 case ash::SHELF_ALIGNMENT_LEFT: 808 case ash::SHELF_ALIGNMENT_LEFT:
808 pref_value = ash::kShelfAlignmentLeft; 809 pref_value = ash::kShelfAlignmentLeft;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
857 ash::LauncherID id = model_->items()[i].id; 858 ash::LauncherID id = model_->items()[i].id;
858 if (HasItemController(id) && IsPinned(id)) { 859 if (HasItemController(id) && IsPinned(id)) {
859 base::DictionaryValue* app_value = ash::CreateAppDict( 860 base::DictionaryValue* app_value = ash::CreateAppDict(
860 id_to_item_controller_map_[id]->app_id()); 861 id_to_item_controller_map_[id]->app_id());
861 if (app_value) 862 if (app_value)
862 updater->Append(app_value); 863 updater->Append(app_value);
863 } 864 }
864 } 865 }
865 } 866 }
866 } 867 }
867 pref_change_registrar_.Add( 868 pref_change_registrar_.Add(prefs::kPinnedLauncherApps, this);
868 prefs::kPinnedLauncherApps,
869 base::Bind(&ChromeLauncherControllerPerApp::UpdateAppLaunchersFromPref,
870 base::Unretained(this)));
871 } 869 }
872 870
873 ash::LauncherModel* ChromeLauncherControllerPerApp::model() { 871 ash::LauncherModel* ChromeLauncherControllerPerApp::model() {
874 return model_; 872 return model_;
875 } 873 }
876 874
877 Profile* ChromeLauncherControllerPerApp::profile() { 875 Profile* ChromeLauncherControllerPerApp::profile() {
878 return profile_; 876 return profile_;
879 } 877 }
880 878
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
1100 void ChromeLauncherControllerPerApp::SetAppIconLoaderForTest( 1098 void ChromeLauncherControllerPerApp::SetAppIconLoaderForTest(
1101 AppIconLoader* loader) { 1099 AppIconLoader* loader) {
1102 app_icon_loader_.reset(loader); 1100 app_icon_loader_.reset(loader);
1103 } 1101 }
1104 1102
1105 const std::string& 1103 const std::string&
1106 ChromeLauncherControllerPerApp::GetAppIdFromLauncherIdForTest( 1104 ChromeLauncherControllerPerApp::GetAppIdFromLauncherIdForTest(
1107 ash::LauncherID id) { 1105 ash::LauncherID id) {
1108 return id_to_item_controller_map_[id]->app_id(); 1106 return id_to_item_controller_map_[id]->app_id();
1109 } 1107 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698