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

Unified Diff: chrome/browser/download/download_path_reservation_tracker.h

Issue 10824132: Avoid LazyInstance in DownloadPathReservationTracker. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/download/download_path_reservation_tracker.h
diff --git a/chrome/browser/download/download_path_reservation_tracker.h b/chrome/browser/download/download_path_reservation_tracker.h
index 50e7ca92e8571d0599aa6765d23d1ede31fefc3e..9bfeea78e49845aceb0799043059de6efad1e19e 100644
--- a/chrome/browser/download/download_path_reservation_tracker.h
+++ b/chrome/browser/download/download_path_reservation_tracker.h
@@ -5,12 +5,7 @@
#ifndef CHROME_BROWSER_DOWNLOAD_DOWNLOAD_PATH_RESERVATION_TRACKER_H_
#define CHROME_BROWSER_DOWNLOAD_DOWNLOAD_PATH_RESERVATION_TRACKER_H_
-#include <map>
-
#include "base/callback_forward.h"
-#include "base/file_path.h"
-#include "base/lazy_instance.h"
-#include "content/public/browser/download_id.h"
// DownloadPathReservationTracker: Track download paths that are in use by
// active downloads.
@@ -72,10 +67,12 @@ namespace content {
class DownloadItem;
}
+class FilePath;
+
// Issues and tracks download paths that are in use by the download system. When
// a target path is set for a download, this object tracks the path and the
// associated download item so that subsequent downloads can avoid using the
-// same path. All non-static methods must be invoked on the FILE thread.
+// same path.
class DownloadPathReservationTracker {
public:
// Callback used with |GetReservedPath|. |target_path| specifies the target
@@ -95,9 +92,8 @@ class DownloadPathReservationTracker {
static const int kMaxUniqueFiles = 100;
// Called on the UI thread to request a download path reservation. Begins
- // observing |download_item| and invokes ReserveInternal() on the FILE thread
- // to create the path reservation. Will not modify any state of
- // |download_item|.
+ // observing |download_item| and initiates creating a reservation on the FILE
+ // thread. Will not modify any state of |download_item|.
//
// |default_download_path| is the user's default download path. If this
// directory does not exist and is the parent directory of
@@ -108,47 +104,9 @@ class DownloadPathReservationTracker {
bool should_uniquify_path,
const ReservedPathCallback& callback);
- private:
- friend class DownloadPathReservationTrackerTest;
- friend struct base::DefaultLazyInstanceTraits<DownloadPathReservationTracker>;
-
- typedef std::map<content::DownloadId, FilePath> ReservationMap;
-
- DownloadPathReservationTracker();
- ~DownloadPathReservationTracker();
-
- // Called on the FILE thread to reserve a download path. This method:
- // - Creates directory |default_download_path| if it doesn't exist.
- // - Verifies that the parent directory of |suggested_path| exists and is
- // writeable.
- // - Uniquifies |suggested_path| if |should_uniquify_path| is true.
- // - Schedules |callback| on the UI thread with the reserved path and a flag
- // indicating whether the returned path has been successfully verified.
- void ReserveInternal(content::DownloadId download_id,
- const FilePath& suggested_path,
- const FilePath& default_download_path,
- bool should_uniquify_path,
- const ReservedPathCallback& callback);
-
- // Returns true if the given path is in use by any path reservation or the
- // file system. Called on the FILE thread.
- bool IsPathInUse(const FilePath& path) const;
-
- // Called on the FILE thread to update the path of the reservation associated
- // with |download_id| to |new_path|.
- void Update(content::DownloadId download_id, const FilePath& new_path);
-
- // Called on the FILE thread to remove the path reservation associated with
- // |download_id|.
- void Revoke(content::DownloadId download_id);
-
- // Get a pointer to the browser global instace of this object. Called on the
- // UI thread.
- static DownloadPathReservationTracker* GetInstance();
-
- ReservationMap reservations_;
-
- DISALLOW_COPY_AND_ASSIGN(DownloadPathReservationTracker);
+ // Returns true if |path| is in use by an existing path reservation. Should
+ // only be called on the FILE thread. Currently only used by tests.
+ static bool IsPathInUseForTesting(const FilePath& path);
};
#endif // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_PATH_RESERVATION_TRACKER_H_

Powered by Google App Engine
This is Rietveld 408576698