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

Side by Side Diff: chrome/browser/history/download_database.h

Issue 833033002: Remove dependency on //content from history DownloadDatabase (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add missing conversion Created 5 years, 11 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_HISTORY_DOWNLOAD_DATABASE_H_
6 #define CHROME_BROWSER_HISTORY_DOWNLOAD_DATABASE_H_
7
8 #include <string>
9 #include <vector>
10
11 #include "base/gtest_prod_util.h"
12 #include "base/threading/platform_thread.h"
13 #include "content/public/browser/download_item.h"
14 #include "sql/meta_table.h"
15
16 namespace sql {
17 class Connection;
18 }
19
20 namespace history {
21
22 struct DownloadRow;
23
24 // Maintains a table of downloads.
25 class DownloadDatabase {
26 public:
27 // Must call InitDownloadTable before using any other functions.
28 DownloadDatabase();
29 virtual ~DownloadDatabase();
30
31 uint32 GetNextDownloadId();
32
33 // Get all the downloads from the database.
34 void QueryDownloads(
35 std::vector<DownloadRow>* results);
36
37 // Update the state of one download. Returns true if successful.
38 // Does not update |url|, |start_time|; uses |id| only
39 // to select the row in the database table to update.
40 bool UpdateDownload(const DownloadRow& data);
41
42 // Create a new database entry for one download and return true if the
43 // creation succeeded, false otherwise.
44 bool CreateDownload(const DownloadRow& info);
45
46 // Remove |id| from the database.
47 void RemoveDownload(uint32 id);
48
49 size_t CountDownloads();
50
51 protected:
52 // Returns the database for the functions in this interface.
53 virtual sql::Connection& GetDB() = 0;
54
55 // Returns true if able to successfully add mime types to the downloads table.
56 bool MigrateMimeType();
57
58 // Returns true if able to successfully rewrite the invalid values for the
59 // |state| field from 3 to 4. Returns false if there was an error fixing the
60 // database. See http://crbug.com/140687
61 bool MigrateDownloadsState();
62
63 // Returns true if able to successfully add the last interrupt reason and the
64 // two target paths to downloads.
65 bool MigrateDownloadsReasonPathsAndDangerType();
66
67 // Returns true if able to successfully add the referrer column to the
68 // downloads table.
69 bool MigrateReferrer();
70
71 // Returns true if able to successfully add the by_ext_id and by_ext_name
72 // columns to the downloads table.
73 bool MigrateDownloadedByExtension();
74
75 // Returns true if able to successfully add the etag and last-modified columns
76 // to the downloads table.
77 bool MigrateDownloadValidators();
78
79 // Creates the downloads table if needed.
80 bool InitDownloadTable();
81
82 // Used to quickly clear the downloads. First you would drop it, then you
83 // would re-initialize it.
84 bool DropDownloadTable();
85
86 private:
87 FRIEND_TEST_ALL_PREFIXES(
88 HistoryBackendDBTest, ConfirmDownloadInProgressCleanup);
89
90 // Values used in the database for DownloadItem::State.
91 static const int kStateInvalid;
92 static const int kStateInProgress;
93 static const int kStateComplete;
94 static const int kStateCancelled;
95 static const int kStateBug140687;
96 static const int kStateInterrupted;
97
98 // Values used in the database for DownloadItem::DangerType
99 static const int kDangerTypeInvalid;
100 static const int kDangerTypeNotDangerous;
101 static const int kDangerTypeDangerousFile;
102 static const int kDangerTypeDangerousUrl;
103 static const int kDangerTypeDangerousContent;
104 static const int kDangerTypeMaybeDangerousContent;
105 static const int kDangerTypeUncommonContent;
106 static const int kDangerTypeUserValidated;
107 static const int kDangerTypeDangerousHost;
108 static const int kDangerTypePotentiallyUnwanted;
109
110 // Fixes state of the download entries. Sometimes entries with IN_PROGRESS
111 // state are not updated during browser shutdown (particularly when crashing).
112 // On the next start such entries are considered interrupted with
113 // interrupt reason |DOWNLOAD_INTERRUPT_REASON_CRASH|. This function
114 // fixes such entries.
115 void EnsureInProgressEntriesCleanedUp();
116
117 bool EnsureColumnExists(const std::string& name, const std::string& type);
118
119 void RemoveDownloadURLs(uint32 id);
120
121 // Utility functions for conversion between DownloadItem types
122 // and DownloadDatabase constants.
123 static int StateToInt(content::DownloadItem::DownloadState state);
124 static content::DownloadItem::DownloadState IntToState(int state);
125 static int DangerTypeToInt(content::DownloadDangerType danger_type);
126 static content::DownloadDangerType IntToDangerType(int danger_type);
127
128 bool owning_thread_set_;
129 base::PlatformThreadId owning_thread_;
130
131 // Initialized to false on construction, and checked in all functional
132 // routines post-migration in the database for a possible call to
133 // CleanUpInProgressEntries(). This allows us to avoid
134 // doing the cleanup until after any DB migration and unless we are
135 // actually use the downloads database.
136 bool in_progress_entry_cleanup_completed_;
137
138 DISALLOW_COPY_AND_ASSIGN(DownloadDatabase);
139 };
140
141 } // namespace history
142
143 #endif // CHROME_BROWSER_HISTORY_DOWNLOAD_DATABASE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698