| Index: chrome/browser/download/download_history.h
|
| diff --git a/chrome/browser/download/download_history.h b/chrome/browser/download/download_history.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3fe789ef1742cdfb4aee304412bcac93c42f293c
|
| --- /dev/null
|
| +++ b/chrome/browser/download/download_history.h
|
| @@ -0,0 +1,91 @@
|
| +// Copyright (c) 2010 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_DOWNLOAD_DOWNLOAD_HISTORY_H_
|
| +#define CHROME_BROWSER_DOWNLOAD_DOWNLOAD_HISTORY_H_
|
| +#pragma once
|
| +
|
| +#include <vector>
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "chrome/browser/cancelable_request.h"
|
| +#include "chrome/browser/history/history.h"
|
| +
|
| +class DownloadItem;
|
| +class Profile;
|
| +
|
| +namespace base {
|
| +class Time;
|
| +}
|
| +
|
| +// Interacts with the HistoryService on behalf of the download subsystem.
|
| +class DownloadHistory {
|
| + public:
|
| + // Converts history database handles to download items.
|
| + class DownloadItemMapper {
|
| + public:
|
| + virtual ~DownloadItemMapper() {}
|
| +
|
| + // Returns a DownloadItem* corresponding to |db_handle|, or NULL if no such
|
| + // DownloadItem exists.
|
| + virtual DownloadItem* GetDownloadItemFromDbHandle(int64 db_handle) = 0;
|
| + };
|
| +
|
| + // A fake download table ID which represents a download that has started,
|
| + // but is not yet in the table.
|
| + static const int kUninitializedHandle;
|
| +
|
| + typedef Callback1<std::vector<DownloadItem*> >::Type DownloadSearchCallback;
|
| +
|
| + DownloadHistory(Profile* profile, DownloadItemMapper* mapper);
|
| +
|
| + // Retrieves DownloadCreateInfos saved in the history.
|
| + void Load(HistoryService::DownloadQueryCallback* callback);
|
| +
|
| + // Starts a history search for downloads and invokes |callback| when done.
|
| + void Search(const string16& query,
|
| + DownloadSearchCallback* callback);
|
| +
|
| + // Adds a new entry for a download to the history database.
|
| + void AddEntry(const DownloadCreateInfo& info,
|
| + DownloadItem* download_item,
|
| + HistoryService::DownloadCreateCallback* callback);
|
| +
|
| + // Updates the history entry for |download_item|.
|
| + void UpdateEntry(DownloadItem* download_item);
|
| +
|
| + // Updates the download path for |download_item| to |new_path|.
|
| + void UpdateDownloadPath(DownloadItem* download_item,
|
| + const FilePath& new_path);
|
| +
|
| + // Removes |download_item| from the history database.
|
| + void RemoveEntry(DownloadItem* download_item);
|
| +
|
| + // Removes download-related history entries in the given time range.
|
| + void RemoveEntriesBetween(const base::Time remove_begin,
|
| + const base::Time remove_end);
|
| +
|
| + // Returns a new unique database handle which will not collide with real ones.
|
| + int64 GetNextFakeDbHandle();
|
| +
|
| + private:
|
| + void OnSearchDownloadsComplete(HistoryService::Handle handle,
|
| + std::vector<int64>* results);
|
| +
|
| + Profile* profile_;
|
| +
|
| + // In case we don't have a valid db_handle, we use |fake_db_handle_| instead.
|
| + // This is useful for incognito mode or when the history database is offline.
|
| + // Downloads are expected to have unique handles, so we decrement the next
|
| + // fake handle value on every use.
|
| + int64 next_fake_db_handle_;
|
| +
|
| + DownloadItemMapper* download_item_mapper_;
|
| +
|
| + CancelableRequestConsumerTSimple<DownloadSearchCallback*> history_consumer_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(DownloadHistory);
|
| +};
|
| +
|
| +#endif // CHROME_BROWSER_DOWNLOAD_DOWNLOAD_HISTORY_H_
|
|
|