| Index: chrome/browser/chromeos/gdata/gdata_operation_registry.h
|
| diff --git a/chrome/browser/chromeos/gdata/gdata_operation_registry.h b/chrome/browser/chromeos/gdata/gdata_operation_registry.h
|
| deleted file mode 100644
|
| index 7e3424563ebffc85ea833eee2f00004f09d5d82a..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/chromeos/gdata/gdata_operation_registry.h
|
| +++ /dev/null
|
| @@ -1,181 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef CHROME_BROWSER_CHROMEOS_GDATA_GDATA_OPERATION_REGISTRY_H_
|
| -#define CHROME_BROWSER_CHROMEOS_GDATA_GDATA_OPERATION_REGISTRY_H_
|
| -
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/file_path.h"
|
| -#include "base/id_map.h"
|
| -#include "base/observer_list.h"
|
| -#include "base/time.h"
|
| -
|
| -namespace gdata {
|
| -
|
| -// This class tracks all the in-flight GData operation objects and manage their
|
| -// lifetime.
|
| -class GDataOperationRegistry {
|
| - public:
|
| - GDataOperationRegistry();
|
| - ~GDataOperationRegistry();
|
| -
|
| - // Unique ID to identify each operation.
|
| - typedef int32 OperationID;
|
| -
|
| - // Enumeration type for indicating the direction of the operation.
|
| - enum OperationType {
|
| - OPERATION_UPLOAD,
|
| - OPERATION_DOWNLOAD,
|
| - OPERATION_OTHER,
|
| - };
|
| -
|
| - enum OperationTransferState {
|
| - OPERATION_NOT_STARTED,
|
| - OPERATION_STARTED,
|
| - OPERATION_IN_PROGRESS,
|
| - OPERATION_COMPLETED,
|
| - OPERATION_FAILED,
|
| - OPERATION_SUSPENDED,
|
| - };
|
| -
|
| - // Returns string representations of the operation type and state, which are
|
| - // exposed to the private extension API as in:
|
| - // operation.chrome/common/extensions/api/file_browser_private.json
|
| - static std::string OperationTypeToString(OperationType type);
|
| - static std::string OperationTransferStateToString(
|
| - OperationTransferState state);
|
| -
|
| - // Structure that packs progress information of each operation.
|
| - struct ProgressStatus {
|
| - ProgressStatus(OperationType type, const FilePath& file_path);
|
| - // For debugging
|
| - std::string DebugString() const;
|
| -
|
| - OperationID operation_id;
|
| -
|
| - // Type of the operation: upload/download.
|
| - OperationType operation_type;
|
| - // GData path of the file dealt with the current operation.
|
| - FilePath file_path;
|
| - // Current state of the transfer;
|
| - OperationTransferState transfer_state;
|
| - // The time when the operation is initiated.
|
| - base::Time start_time;
|
| - // Current fraction of progress of the operation.
|
| - int64 progress_current;
|
| - // Expected total number of bytes to be transferred in the operation.
|
| - // -1 if no expectation is available (yet).
|
| - int64 progress_total;
|
| - };
|
| - typedef std::vector<ProgressStatus> ProgressStatusList;
|
| -
|
| - // Observer interface for listening changes in the active set of operations.
|
| - class Observer {
|
| - public:
|
| - // Called when a GData operation started, made some progress, or finished.
|
| - virtual void OnProgressUpdate(const ProgressStatusList& list) = 0;
|
| - // Called when GData authentication failed.
|
| - virtual void OnAuthenticationFailed() {}
|
| - protected:
|
| - virtual ~Observer() {}
|
| - };
|
| -
|
| - // Base class for operations that this registry class can maintain.
|
| - // NotifyStart() passes the ownership of the Operation object to the registry.
|
| - // In particular, calling NotifyFinish() causes the registry to delete the
|
| - // Operation object itself.
|
| - class Operation {
|
| - public:
|
| - explicit Operation(GDataOperationRegistry* registry);
|
| - Operation(GDataOperationRegistry* registry,
|
| - OperationType type,
|
| - const FilePath& file_path);
|
| - virtual ~Operation();
|
| -
|
| - // Cancels the ongoing operation. NotifyFinish() is called and the Operation
|
| - // object is deleted once the cancellation is done in DoCancel().
|
| - void Cancel();
|
| -
|
| - // Retrieves the current progress status of the operation.
|
| - const ProgressStatus& progress_status() const { return progress_status_; }
|
| -
|
| - protected:
|
| - // Notifies the registry about current status.
|
| - void NotifyStart();
|
| - void NotifyProgress(int64 current, int64 total);
|
| - void NotifyFinish(OperationTransferState status);
|
| - // Notifies suspend/resume, used for chunked upload operations.
|
| - // The initial upload operation should issue "start" "progress"* "suspend".
|
| - // The subsequent operations will call "resume" "progress"* "suspend",
|
| - // and the last one will do "resume" "progress"* "finish".
|
| - // In other words, "suspend" is similar to "finish" except it lasts to live
|
| - // until the next "resume" comes. "Resume" is similar to "start", except
|
| - // that it removes the existing "suspend" operation.
|
| - void NotifySuspend();
|
| - void NotifyResume();
|
| - // Notifies that authentication has failed.
|
| - void NotifyAuthFailed();
|
| -
|
| - private:
|
| - // Does the cancellation.
|
| - virtual void DoCancel() = 0;
|
| -
|
| - GDataOperationRegistry* const registry_;
|
| - ProgressStatus progress_status_;
|
| - };
|
| -
|
| - // Cancels all in-flight operations.
|
| - void CancelAll();
|
| -
|
| - // Cancels ongoing operation for a given virtual |file_path|. Returns true if
|
| - // the operation was found and canceled.
|
| - bool CancelForFilePath(const FilePath& file_path);
|
| -
|
| - // Obtains the list of currently active operations.
|
| - ProgressStatusList GetProgressStatusList();
|
| -
|
| - // Sets an observer. The registry do NOT own observers; before destruction
|
| - // they need to be removed from the registry.
|
| - void AddObserver(Observer* observer);
|
| - void RemoveObserver(Observer* observer);
|
| -
|
| - // Disables the notification suppression for testing purpose.
|
| - void DisableNotificationFrequencyControlForTest();
|
| -
|
| - private:
|
| - // Handlers for notifications from Operations.
|
| - friend class Operation;
|
| - // Notifies that an operation has started. This method passes the ownership of
|
| - // the operation to the registry. A fresh operation ID is returned to *id.
|
| - void OnOperationStart(Operation* operation, OperationID* id);
|
| - void OnOperationProgress(OperationID operation);
|
| - void OnOperationFinish(OperationID operation);
|
| - void OnOperationSuspend(OperationID operation);
|
| - void OnOperationResume(Operation* operation, ProgressStatus* new_status);
|
| - void OnOperationAuthFailed();
|
| -
|
| - bool IsFileTransferOperation(const Operation* operation) const;
|
| -
|
| - // Controls the frequency of notifications, not to flood the listeners with
|
| - // too many events.
|
| - bool ShouldNotifyStatusNow(const ProgressStatusList& list);
|
| - // Sends notifications to the observers after checking that the frequency is
|
| - // not too high by ShouldNotifyStatusNow.
|
| - void NotifyStatusToObservers();
|
| -
|
| - typedef IDMap<Operation, IDMapOwnPointer> OperationIDMap;
|
| - OperationIDMap in_flight_operations_;
|
| - ObserverList<Observer> observer_list_;
|
| - base::Time last_notification_;
|
| - bool do_notification_frequency_control_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(GDataOperationRegistry);
|
| -};
|
| -
|
| -} // namespace gdata
|
| -
|
| -#endif // CHROME_BROWSER_CHROMEOS_GDATA_GDATA_OPERATION_REGISTRY_H_
|
|
|