summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/gdata
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/chromeos/gdata')
-rw-r--r--chrome/browser/chromeos/gdata/gdata_operation_registry.cc30
-rw-r--r--chrome/browser/chromeos/gdata/gdata_operation_registry.h2
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_;