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

Side by Side Diff: chrome/browser/chromeos/system/ash_system_tray_delegate.cc

Issue 10939011: Reland "Revert 156830 - drive: Stop exposing operation_registry() from DriveServiceInterface" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 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 | 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/chromeos/system/ash_system_tray_delegate.h" 5 #include "chrome/browser/chromeos/system/ash_system_tray_delegate.h"
6 6
7 #include "ash/shell.h" 7 #include "ash/shell.h"
8 #include "ash/shell_window_ids.h" 8 #include "ash/shell_window_ids.h"
9 #include "ash/system/audio/audio_observer.h" 9 #include "ash/system/audio/audio_observer.h"
10 #include "ash/system/bluetooth/bluetooth_observer.h" 10 #include "ash/system/bluetooth/bluetooth_observer.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 #include "chrome/browser/chromeos/login/message_bubble.h" 46 #include "chrome/browser/chromeos/login/message_bubble.h"
47 #include "chrome/browser/chromeos/login/user.h" 47 #include "chrome/browser/chromeos/login/user.h"
48 #include "chrome/browser/chromeos/login/user_manager.h" 48 #include "chrome/browser/chromeos/login/user_manager.h"
49 #include "chrome/browser/chromeos/mobile_config.h" 49 #include "chrome/browser/chromeos/mobile_config.h"
50 #include "chrome/browser/chromeos/status/data_promo_notification.h" 50 #include "chrome/browser/chromeos/status/data_promo_notification.h"
51 #include "chrome/browser/chromeos/status/network_menu.h" 51 #include "chrome/browser/chromeos/status/network_menu.h"
52 #include "chrome/browser/chromeos/status/network_menu_icon.h" 52 #include "chrome/browser/chromeos/status/network_menu_icon.h"
53 #include "chrome/browser/chromeos/system/timezone_settings.h" 53 #include "chrome/browser/chromeos/system/timezone_settings.h"
54 #include "chrome/browser/chromeos/system_key_event_listener.h" 54 #include "chrome/browser/chromeos/system_key_event_listener.h"
55 #include "chrome/browser/google_apis/gdata_util.h" 55 #include "chrome/browser/google_apis/gdata_util.h"
56 #include "chrome/browser/google_apis/operation_registry.h"
57 #include "chrome/browser/lifetime/application_lifetime.h" 56 #include "chrome/browser/lifetime/application_lifetime.h"
58 #include "chrome/browser/prefs/pref_service.h" 57 #include "chrome/browser/prefs/pref_service.h"
59 #include "chrome/browser/profiles/profile_manager.h" 58 #include "chrome/browser/profiles/profile_manager.h"
60 #include "chrome/browser/ui/ash/volume_controller_chromeos.h" 59 #include "chrome/browser/ui/ash/volume_controller_chromeos.h"
61 #include "chrome/browser/ui/browser.h" 60 #include "chrome/browser/ui/browser.h"
62 #include "chrome/browser/ui/browser_finder.h" 61 #include "chrome/browser/ui/browser_finder.h"
63 #include "chrome/browser/ui/chrome_pages.h" 62 #include "chrome/browser/ui/chrome_pages.h"
64 #include "chrome/browser/ui/singleton_tabs.h" 63 #include "chrome/browser/ui/singleton_tabs.h"
65 #include "chrome/browser/upgrade_detector.h" 64 #include "chrome/browser/upgrade_detector.h"
66 #include "chrome/common/chrome_notification_types.h" 65 #include "chrome/common/chrome_notification_types.h"
67 #include "chrome/common/pref_names.h" 66 #include "chrome/common/pref_names.h"
68 #include "chrome/common/url_constants.h" 67 #include "chrome/common/url_constants.h"
69 #include "chromeos/dbus/dbus_thread_manager.h" 68 #include "chromeos/dbus/dbus_thread_manager.h"
70 #include "chromeos/dbus/power_manager_client.h" 69 #include "chromeos/dbus/power_manager_client.h"
71 #include "chromeos/dbus/session_manager_client.h" 70 #include "chromeos/dbus/session_manager_client.h"
72 #include "content/public/browser/browser_thread.h" 71 #include "content/public/browser/browser_thread.h"
73 #include "content/public/browser/notification_observer.h" 72 #include "content/public/browser/notification_observer.h"
74 #include "content/public/browser/notification_service.h" 73 #include "content/public/browser/notification_service.h"
75 #include "content/public/browser/user_metrics.h" 74 #include "content/public/browser/user_metrics.h"
76 #include "grit/generated_resources.h" 75 #include "grit/generated_resources.h"
77 #include "ui/base/l10n/l10n_util.h" 76 #include "ui/base/l10n/l10n_util.h"
78 77
79 using gdata::DriveSystemService; 78 using gdata::DriveSystemService;
80 using gdata::DriveSystemServiceFactory; 79 using gdata::DriveSystemServiceFactory;
81 using gdata::OperationRegistry;
82 80
83 namespace chromeos { 81 namespace chromeos {
84 82
85 namespace { 83 namespace {
86 84
87 // Time delay for rechecking gdata operation when we suspect that there will 85 // Time delay for rechecking gdata operation when we suspect that there will
88 // be no upcoming activity notifications that need to be pushed to UI. 86 // be no upcoming activity notifications that need to be pushed to UI.
89 const int kGDataOperationRecheckDelayMs = 5000; 87 const int kGDataOperationRecheckDelayMs = 5000;
90 88
91 ash::NetworkIconInfo CreateNetworkIconInfo(const Network* network, 89 ash::NetworkIconInfo CreateNetworkIconInfo(const Network* network,
92 NetworkMenu* network_menu) { 90 NetworkMenu* network_menu) {
93 ash::NetworkIconInfo info; 91 ash::NetworkIconInfo info;
94 info.name = UTF8ToUTF16(network->name()); 92 info.name = UTF8ToUTF16(network->name());
95 info.image = NetworkMenuIcon::GetImage(network, NetworkMenuIcon::COLOR_DARK); 93 info.image = NetworkMenuIcon::GetImage(network, NetworkMenuIcon::COLOR_DARK);
96 info.service_path = network->service_path(); 94 info.service_path = network->service_path();
97 info.highlight = network->connected() || network->connecting(); 95 info.highlight = network->connected() || network->connecting();
98 return info; 96 return info;
99 } 97 }
100 98
101 void ExtractIMEInfo(const input_method::InputMethodDescriptor& ime, 99 void ExtractIMEInfo(const input_method::InputMethodDescriptor& ime,
102 const input_method::InputMethodUtil& util, 100 const input_method::InputMethodUtil& util,
103 ash::IMEInfo* info) { 101 ash::IMEInfo* info) {
104 info->id = ime.id(); 102 info->id = ime.id();
105 info->name = util.GetInputMethodLongName(ime); 103 info->name = util.GetInputMethodLongName(ime);
106 info->short_name = util.GetInputMethodShortName(ime); 104 info->short_name = util.GetInputMethodShortName(ime);
107 info->third_party = ime.third_party(); 105 info->third_party = ime.third_party();
108 } 106 }
109 107
110 ash::DriveOperationStatusList GetDriveStatusList( 108 ash::DriveOperationStatusList GetDriveStatusList(
111 const std::vector<OperationRegistry::ProgressStatus>& list) { 109 const gdata::OperationProgressStatusList& list) {
112 ash::DriveOperationStatusList results; 110 ash::DriveOperationStatusList results;
113 for (OperationRegistry::ProgressStatusList::const_iterator it = 111 for (gdata::OperationProgressStatusList::const_iterator it = list.begin();
114 list.begin();
115 it != list.end(); ++it) { 112 it != list.end(); ++it) {
116 ash::DriveOperationStatus status; 113 ash::DriveOperationStatus status;
117 status.file_path = it->file_path; 114 status.file_path = it->file_path;
118 status.progress = it->progress_total == 0 ? 0.0 : 115 status.progress = it->progress_total == 0 ? 0.0 :
119 static_cast<double>(it->progress_current) / 116 static_cast<double>(it->progress_current) /
120 static_cast<double>(it->progress_total); 117 static_cast<double>(it->progress_total);
121 status.type = static_cast<ash::DriveOperationStatus::OperationType>( 118 status.type = static_cast<ash::DriveOperationStatus::OperationType>(
122 it->operation_type); 119 it->operation_type);
123 status.state = static_cast<ash::DriveOperationStatus::OperationState>( 120 status.state = static_cast<ash::DriveOperationStatus::OperationState>(
124 it->transfer_state); 121 it->transfer_state);
(...skipping 20 matching lines...) Expand all
145 142
146 class SystemTrayDelegate : public ash::SystemTrayDelegate, 143 class SystemTrayDelegate : public ash::SystemTrayDelegate,
147 public AudioHandler::VolumeObserver, 144 public AudioHandler::VolumeObserver,
148 public PowerManagerClient::Observer, 145 public PowerManagerClient::Observer,
149 public SessionManagerClient::Observer, 146 public SessionManagerClient::Observer,
150 public NetworkMenuIcon::Delegate, 147 public NetworkMenuIcon::Delegate,
151 public NetworkMenu::Delegate, 148 public NetworkMenu::Delegate,
152 public NetworkLibrary::NetworkManagerObserver, 149 public NetworkLibrary::NetworkManagerObserver,
153 public NetworkLibrary::NetworkObserver, 150 public NetworkLibrary::NetworkObserver,
154 public NetworkLibrary::CellularDataPlanObserver, 151 public NetworkLibrary::CellularDataPlanObserver,
155 public gdata::OperationRegistry::Observer, 152 public gdata::DriveServiceObserver,
156 public content::NotificationObserver, 153 public content::NotificationObserver,
157 public input_method::InputMethodManager::Observer, 154 public input_method::InputMethodManager::Observer,
158 public system::TimezoneSettings::Observer, 155 public system::TimezoneSettings::Observer,
159 public BluetoothAdapter::Observer, 156 public BluetoothAdapter::Observer,
160 public SystemKeyEventListener::CapsLockObserver, 157 public SystemKeyEventListener::CapsLockObserver,
161 public ash::NetworkTrayDelegate { 158 public ash::NetworkTrayDelegate {
162 public: 159 public:
163 explicit SystemTrayDelegate(ash::SystemTray* tray) 160 explicit SystemTrayDelegate(ash::SystemTray* tray)
164 : tray_(tray), 161 : tray_(tray),
165 ui_weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST( 162 ui_weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 } 232 }
236 input_method::InputMethodManager::GetInstance()->RemoveObserver(this); 233 input_method::InputMethodManager::GetInstance()->RemoveObserver(this);
237 system::TimezoneSettings::GetInstance()->RemoveObserver(this); 234 system::TimezoneSettings::GetInstance()->RemoveObserver(this);
238 if (SystemKeyEventListener::GetInstance()) 235 if (SystemKeyEventListener::GetInstance())
239 SystemKeyEventListener::GetInstance()->RemoveCapsLockObserver(this); 236 SystemKeyEventListener::GetInstance()->RemoveCapsLockObserver(this);
240 bluetooth_adapter_->RemoveObserver(this); 237 bluetooth_adapter_->RemoveObserver(this);
241 238
242 // Stop observing gdata operations. 239 // Stop observing gdata operations.
243 DriveSystemService* system_service = FindDriveSystemService(); 240 DriveSystemService* system_service = FindDriveSystemService();
244 if (system_service) { 241 if (system_service) {
245 system_service->drive_service()->operation_registry()-> 242 system_service->drive_service()->RemoveObserver(this);
246 RemoveObserver(this);
247 } 243 }
248 } 244 }
249 245
250 // Overridden from ash::SystemTrayDelegate: 246 // Overridden from ash::SystemTrayDelegate:
251 virtual bool GetTrayVisibilityOnStartup() OVERRIDE { 247 virtual bool GetTrayVisibilityOnStartup() OVERRIDE {
252 // In case of OOBE / sign in screen tray will be shown later. 248 // In case of OOBE / sign in screen tray will be shown later.
253 return UserManager::Get()->IsUserLoggedIn(); 249 return UserManager::Get()->IsUserLoggedIn();
254 } 250 }
255 251
256 virtual const string16 GetUserDisplayName() const OVERRIDE { 252 virtual const string16 GetUserDisplayName() const OVERRIDE {
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
442 virtual void ActivateIMEProperty(const std::string& key) OVERRIDE { 438 virtual void ActivateIMEProperty(const std::string& key) OVERRIDE {
443 input_method::InputMethodManager::GetInstance()-> 439 input_method::InputMethodManager::GetInstance()->
444 ActivateInputMethodProperty(key); 440 ActivateInputMethodProperty(key);
445 } 441 }
446 442
447 virtual void CancelDriveOperation(const FilePath& file_path) OVERRIDE { 443 virtual void CancelDriveOperation(const FilePath& file_path) OVERRIDE {
448 DriveSystemService* system_service = FindDriveSystemService(); 444 DriveSystemService* system_service = FindDriveSystemService();
449 if (!system_service) 445 if (!system_service)
450 return; 446 return;
451 447
452 system_service->drive_service()->operation_registry()->CancelForFilePath( 448 system_service->drive_service()->CancelForFilePath(file_path);
453 file_path);
454 } 449 }
455 450
456 virtual void GetDriveOperationStatusList( 451 virtual void GetDriveOperationStatusList(
457 ash::DriveOperationStatusList* list) OVERRIDE { 452 ash::DriveOperationStatusList* list) OVERRIDE {
458 DriveSystemService* system_service = FindDriveSystemService(); 453 DriveSystemService* system_service = FindDriveSystemService();
459 if (!system_service) 454 if (!system_service)
460 return; 455 return;
461 456
462 *list = GetDriveStatusList( 457 *list = GetDriveStatusList(
463 system_service->drive_service()->operation_registry()-> 458 system_service->drive_service()->GetProgressStatusList());
464 GetProgressStatusList());
465 } 459 }
466 460
467 461
468 virtual void GetMostRelevantNetworkIcon(ash::NetworkIconInfo* info, 462 virtual void GetMostRelevantNetworkIcon(ash::NetworkIconInfo* info,
469 bool dark) OVERRIDE { 463 bool dark) OVERRIDE {
470 NetworkMenuIcon* icon = 464 NetworkMenuIcon* icon =
471 dark ? network_icon_dark_.get() : network_icon_.get(); 465 dark ? network_icon_dark_.get() : network_icon_.get();
472 info->image = icon->GetIconAndText(&info->description); 466 info->image = icon->GetIconAndText(&info->description);
473 info->tray_icon_visible = icon->ShouldShowIconInTray(); 467 info->tray_icon_visible = icon->ShouldShowIconInTray();
474 } 468 }
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 UpdateClockType(profile->GetPrefs()); 712 UpdateClockType(profile->GetPrefs());
719 search_key_mapped_to_ = 713 search_key_mapped_to_ =
720 profile->GetPrefs()->GetInteger(prefs::kLanguageXkbRemapSearchKeyTo); 714 profile->GetPrefs()->GetInteger(prefs::kLanguageXkbRemapSearchKeyTo);
721 } 715 }
722 716
723 void ObserveGDataUpdates() { 717 void ObserveGDataUpdates() {
724 DriveSystemService* system_service = FindDriveSystemService(); 718 DriveSystemService* system_service = FindDriveSystemService();
725 if (!system_service) 719 if (!system_service)
726 return; 720 return;
727 721
728 system_service->drive_service()->operation_registry()->AddObserver(this); 722 system_service->drive_service()->AddObserver(this);
729 } 723 }
730 724
731 void UpdateClockType(PrefService* service) { 725 void UpdateClockType(PrefService* service) {
732 clock_type_ = service->GetBoolean(prefs::kUse24HourClock) ? 726 clock_type_ = service->GetBoolean(prefs::kUse24HourClock) ?
733 base::k24HourClock : base::k12HourClock; 727 base::k24HourClock : base::k12HourClock;
734 ash::ClockObserver* observer = tray_->clock_observer(); 728 ash::ClockObserver* observer = tray_->clock_observer();
735 if (observer) 729 if (observer)
736 observer->OnDateFormatChanged(); 730 observer->OnDateFormatChanged();
737 } 731 }
738 732
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
1089 virtual void InputMethodChanged( 1083 virtual void InputMethodChanged(
1090 input_method::InputMethodManager* manager, bool show_message) OVERRIDE { 1084 input_method::InputMethodManager* manager, bool show_message) OVERRIDE {
1091 NotifyRefreshIME(show_message); 1085 NotifyRefreshIME(show_message);
1092 } 1086 }
1093 1087
1094 virtual void InputMethodPropertyChanged( 1088 virtual void InputMethodPropertyChanged(
1095 input_method::InputMethodManager* manager) OVERRIDE { 1089 input_method::InputMethodManager* manager) OVERRIDE {
1096 NotifyRefreshIME(false); 1090 NotifyRefreshIME(false);
1097 } 1091 }
1098 1092
1099 // gdata::OperationRegistry::Observer overrides. 1093 // gdata::DriveServiceObserver overrides.
1100 virtual void OnProgressUpdate( 1094 virtual void OnProgressUpdate(
1101 const OperationRegistry::ProgressStatusList& list) { 1095 const gdata::OperationProgressStatusList& list) OVERRIDE {
1102 std::vector<ash::DriveOperationStatus> ui_list = GetDriveStatusList(list); 1096 std::vector<ash::DriveOperationStatus> ui_list = GetDriveStatusList(list);
1103 NotifyRefreshDrive(ui_list); 1097 NotifyRefreshDrive(ui_list);
1104 1098
1105 // If we have something to report right now (i.e. completion status only), 1099 // If we have something to report right now (i.e. completion status only),
1106 // we need to delayed re-check the status in few seconds to ensure we 1100 // we need to delayed re-check the status in few seconds to ensure we
1107 // raise events that will let us properly clear the uber tray state. 1101 // raise events that will let us properly clear the uber tray state.
1108 if (list.size() > 0) { 1102 if (list.size() > 0) {
1109 bool has_in_progress_items = false; 1103 bool has_in_progress_items = false;
1110 for (OperationRegistry::ProgressStatusList::const_iterator it = 1104 for (gdata::OperationProgressStatusList::const_iterator it = list.begin();
1111 list.begin();
1112 it != list.end(); ++it) { 1105 it != list.end(); ++it) {
1113 if (it->transfer_state == 1106 if (it->transfer_state == gdata::OPERATION_STARTED ||
1114 OperationRegistry::OPERATION_STARTED || 1107 it->transfer_state == gdata::OPERATION_IN_PROGRESS ||
1115 it->transfer_state == 1108 it->transfer_state == gdata::OPERATION_SUSPENDED) {
1116 OperationRegistry::OPERATION_IN_PROGRESS ||
1117 it->transfer_state ==
1118 OperationRegistry::OPERATION_SUSPENDED) {
1119 has_in_progress_items = true; 1109 has_in_progress_items = true;
1120 break; 1110 break;
1121 } 1111 }
1122 } 1112 }
1123 1113
1124 if (!has_in_progress_items) { 1114 if (!has_in_progress_items) {
1125 content::BrowserThread::PostDelayedTask( 1115 content::BrowserThread::PostDelayedTask(
1126 content::BrowserThread::UI, 1116 content::BrowserThread::UI,
1127 FROM_HERE, 1117 FROM_HERE,
1128 base::Bind(&SystemTrayDelegate::RecheckGDataOperations, 1118 base::Bind(&SystemTrayDelegate::RecheckGDataOperations,
1129 ui_weak_ptr_factory_->GetWeakPtr()), 1119 ui_weak_ptr_factory_->GetWeakPtr()),
1130 base::TimeDelta::FromMilliseconds(kGDataOperationRecheckDelayMs)); 1120 base::TimeDelta::FromMilliseconds(kGDataOperationRecheckDelayMs));
1131 } 1121 }
1132 } 1122 }
1133 1123
1134 } 1124 }
1135 1125
1136 // Pulls the list of ongoing drive operations and initiates status update. 1126 // Pulls the list of ongoing drive operations and initiates status update.
1137 // This method is needed to ensure delayed cleanup of the latest reported 1127 // This method is needed to ensure delayed cleanup of the latest reported
1138 // status in UI in cases when there are no new changes coming (i.e. when the 1128 // status in UI in cases when there are no new changes coming (i.e. when the
1139 // last set of transfer operations completed). 1129 // last set of transfer operations completed).
1140 void RecheckGDataOperations() { 1130 void RecheckGDataOperations() {
1141 DriveSystemService* system_service = FindDriveSystemService(); 1131 DriveSystemService* system_service = FindDriveSystemService();
1142 if (!system_service) 1132 if (!system_service)
1143 return; 1133 return;
1144 1134
1145 OnProgressUpdate(system_service->drive_service()->operation_registry()-> 1135 OnProgressUpdate(system_service->drive_service()->GetProgressStatusList());
1146 GetProgressStatusList());
1147 } 1136 }
1148 1137
1149 DriveSystemService* FindDriveSystemService() { 1138 DriveSystemService* FindDriveSystemService() {
1150 Profile* profile = ProfileManager::GetDefaultProfile(); 1139 Profile* profile = ProfileManager::GetDefaultProfile();
1151 if (!gdata::util::IsGDataAvailable(profile)) 1140 if (!gdata::util::IsGDataAvailable(profile))
1152 return NULL; 1141 return NULL;
1153 return DriveSystemServiceFactory::FindForProfile(profile); 1142 return DriveSystemServiceFactory::FindForProfile(profile);
1154 } 1143 }
1155 1144
1156 // Overridden from system::TimezoneSettings::Observer. 1145 // Overridden from system::TimezoneSettings::Observer.
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
1264 DISALLOW_COPY_AND_ASSIGN(SystemTrayDelegate); 1253 DISALLOW_COPY_AND_ASSIGN(SystemTrayDelegate);
1265 }; 1254 };
1266 1255
1267 } // namespace 1256 } // namespace
1268 1257
1269 ash::SystemTrayDelegate* CreateSystemTrayDelegate(ash::SystemTray* tray) { 1258 ash::SystemTrayDelegate* CreateSystemTrayDelegate(ash::SystemTray* tray) {
1270 return new chromeos::SystemTrayDelegate(tray); 1259 return new chromeos::SystemTrayDelegate(tray);
1271 } 1260 }
1272 1261
1273 } // namespace chromeos 1262 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/gdata/mock_drive_service.h ('k') | chrome/browser/google_apis/gdata_operations.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698