diff options
Diffstat (limited to 'chrome/browser/chromeos/gdata')
-rw-r--r-- | chrome/browser/chromeos/gdata/gdata_operation_registry.cc | 30 | ||||
-rw-r--r-- | chrome/browser/chromeos/gdata/gdata_operation_registry.h | 2 |
2 files changed, 25 insertions, 7 deletions
diff --git a/chrome/browser/chromeos/gdata/gdata_operation_registry.cc b/chrome/browser/chromeos/gdata/gdata_operation_registry.cc index c993a38..dc4f393 100644 --- a/chrome/browser/chromeos/gdata/gdata_operation_registry.cc +++ b/chrome/browser/chromeos/gdata/gdata_operation_registry.cc @@ -159,8 +159,10 @@ void GDataOperationRegistry::OnOperationStart( *id = in_flight_operations_.Add(operation); DVLOG(1) << "GDataOperation[" << *id << "] started."; - FOR_EACH_OBSERVER(Observer, observer_list_, - OnProgressUpdate(GetProgressStatusList())); + if (IsFileTransferOperation(operation)) { + FOR_EACH_OBSERVER(Observer, observer_list_, + OnProgressUpdate(GetProgressStatusList())); + } } void GDataOperationRegistry::OnOperationProgress(OperationID id) { @@ -171,19 +173,32 @@ void GDataOperationRegistry::OnOperationProgress(OperationID id) { DVLOG(1) << "GDataOperation[" << id << "] " << operation->progress_status().ToString(); - FOR_EACH_OBSERVER(Observer, observer_list_, - OnProgressUpdate(GetProgressStatusList())); + if (IsFileTransferOperation(operation)) { + FOR_EACH_OBSERVER(Observer, observer_list_, + OnProgressUpdate(GetProgressStatusList())); + } } void GDataOperationRegistry::OnOperationFinish(OperationID id) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + Operation* operation = in_flight_operations_.Lookup(id); + DCHECK(operation); + DVLOG(1) << "GDataOperation[" << id << "] finished."; - FOR_EACH_OBSERVER(Observer, observer_list_, - OnProgressUpdate(GetProgressStatusList())); + if (IsFileTransferOperation(operation)) { + FOR_EACH_OBSERVER(Observer, observer_list_, + OnProgressUpdate(GetProgressStatusList())); + } in_flight_operations_.Remove(id); } +bool GDataOperationRegistry::IsFileTransferOperation( + const Operation* operation) const { + OperationType type = operation->progress_status().operation_type; + return type == OPERATION_UPLOAD || type == OPERATION_DOWNLOAD; +} + std::vector<GDataOperationRegistry::ProgressStatus> GDataOperationRegistry::GetProgressStatusList() { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); @@ -193,7 +208,8 @@ GDataOperationRegistry::GetProgressStatusList() { !iter.IsAtEnd(); iter.Advance()) { const Operation* operation = iter.GetCurrentValue(); - status_list.push_back(operation->progress_status()); + if (IsFileTransferOperation(operation)) + status_list.push_back(operation->progress_status()); } return status_list; } diff --git a/chrome/browser/chromeos/gdata/gdata_operation_registry.h b/chrome/browser/chromeos/gdata/gdata_operation_registry.h index ecce955..c91424a 100644 --- a/chrome/browser/chromeos/gdata/gdata_operation_registry.h +++ b/chrome/browser/chromeos/gdata/gdata_operation_registry.h @@ -132,6 +132,8 @@ class GDataOperationRegistry { void OnOperationProgress(OperationID operation); void OnOperationFinish(OperationID operation); + bool IsFileTransferOperation(const Operation* operation) const; + typedef IDMap<Operation, IDMapOwnPointer> OperationIDMap; OperationIDMap in_flight_operations_; ObserverList<Observer> observer_list_; |