OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this |
2 // source code is governed by a BSD-style license that can be found in the | 2 // source code is governed by a BSD-style license that can be found in the |
3 // LICENSE file. | 3 // LICENSE file. |
4 | 4 |
5 #include "webkit/tools/test_shell/simple_database_system.h" | 5 #include "webkit/tools/test_shell/simple_database_system.h" |
6 | 6 |
7 #if defined(USE_SYSTEM_SQLITE) | 7 #if defined(USE_SYSTEM_SQLITE) |
8 #include <sqlite3.h> | 8 #include <sqlite3.h> |
9 #else | 9 #else |
10 #include "third_party/sqlite/preprocessed/sqlite3.h" | 10 #include "third_party/sqlite/preprocessed/sqlite3.h" |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 long long SimpleDatabaseSystem::GetFileSize(const string16& vfs_file_name) { | 84 long long SimpleDatabaseSystem::GetFileSize(const string16& vfs_file_name) { |
85 return VfsBackend::GetFileSize(GetFullFilePathForVfsFile(vfs_file_name)); | 85 return VfsBackend::GetFileSize(GetFullFilePathForVfsFile(vfs_file_name)); |
86 } | 86 } |
87 | 87 |
88 void SimpleDatabaseSystem::DatabaseOpened(const string16& origin_identifier, | 88 void SimpleDatabaseSystem::DatabaseOpened(const string16& origin_identifier, |
89 const string16& database_name, | 89 const string16& database_name, |
90 const string16& description, | 90 const string16& description, |
91 int64 estimated_size) { | 91 int64 estimated_size) { |
92 int64 database_size = 0; | 92 int64 database_size = 0; |
93 int64 space_available = 0; | 93 int64 space_available = 0; |
| 94 database_connections_.AddConnection(origin_identifier, database_name); |
94 db_tracker_->DatabaseOpened(origin_identifier, database_name, description, | 95 db_tracker_->DatabaseOpened(origin_identifier, database_name, description, |
95 estimated_size, &database_size, &space_available); | 96 estimated_size, &database_size, &space_available); |
96 SetFullFilePathsForVfsFile(origin_identifier, database_name); | 97 SetFullFilePathsForVfsFile(origin_identifier, database_name); |
97 | 98 |
98 OnDatabaseSizeChanged(origin_identifier, database_name, | 99 OnDatabaseSizeChanged(origin_identifier, database_name, |
99 database_size, space_available); | 100 database_size, space_available); |
100 } | 101 } |
101 | 102 |
102 void SimpleDatabaseSystem::DatabaseModified(const string16& origin_identifier, | 103 void SimpleDatabaseSystem::DatabaseModified(const string16& origin_identifier, |
103 const string16& database_name) { | 104 const string16& database_name) { |
| 105 DCHECK(database_connections_.IsDatabaseOpened( |
| 106 origin_identifier, database_name)); |
104 db_tracker_->DatabaseModified(origin_identifier, database_name); | 107 db_tracker_->DatabaseModified(origin_identifier, database_name); |
105 } | 108 } |
106 | 109 |
107 void SimpleDatabaseSystem::DatabaseClosed(const string16& origin_identifier, | 110 void SimpleDatabaseSystem::DatabaseClosed(const string16& origin_identifier, |
108 const string16& database_name) { | 111 const string16& database_name) { |
| 112 DCHECK(database_connections_.IsDatabaseOpened( |
| 113 origin_identifier, database_name)); |
109 db_tracker_->DatabaseClosed(origin_identifier, database_name); | 114 db_tracker_->DatabaseClosed(origin_identifier, database_name); |
| 115 database_connections_.RemoveConnection(origin_identifier, database_name); |
110 } | 116 } |
111 | 117 |
112 void SimpleDatabaseSystem::OnDatabaseSizeChanged( | 118 void SimpleDatabaseSystem::OnDatabaseSizeChanged( |
113 const string16& origin_identifier, | 119 const string16& origin_identifier, |
114 const string16& database_name, | 120 const string16& database_name, |
115 int64 database_size, | 121 int64 database_size, |
116 int64 space_available) { | 122 int64 space_available) { |
117 WebKit::WebDatabase::updateDatabaseSize( | 123 if (database_connections_.IsOriginUsed(origin_identifier)) { |
118 origin_identifier, database_name, database_size, space_available); | 124 WebKit::WebDatabase::updateDatabaseSize( |
| 125 origin_identifier, database_name, database_size, space_available); |
| 126 } |
119 } | 127 } |
120 | 128 |
121 void SimpleDatabaseSystem::databaseOpened(const WebKit::WebDatabase& database) { | 129 void SimpleDatabaseSystem::databaseOpened(const WebKit::WebDatabase& database) { |
122 DatabaseOpened(database.securityOrigin().databaseIdentifier(), | 130 DatabaseOpened(database.securityOrigin().databaseIdentifier(), |
123 database.name(), database.displayName(), | 131 database.name(), database.displayName(), |
124 database.estimatedSize()); | 132 database.estimatedSize()); |
125 } | 133 } |
126 | 134 |
127 void SimpleDatabaseSystem::databaseModified( | 135 void SimpleDatabaseSystem::databaseModified( |
128 const WebKit::WebDatabase& database) { | 136 const WebKit::WebDatabase& database) { |
129 DatabaseModified(database.securityOrigin().databaseIdentifier(), | 137 DatabaseModified(database.securityOrigin().databaseIdentifier(), |
130 database.name()); | 138 database.name()); |
131 } | 139 } |
132 | 140 |
133 void SimpleDatabaseSystem::databaseClosed(const WebKit::WebDatabase& database) { | 141 void SimpleDatabaseSystem::databaseClosed(const WebKit::WebDatabase& database) { |
134 DatabaseClosed(database.securityOrigin().databaseIdentifier(), | 142 DatabaseClosed(database.securityOrigin().databaseIdentifier(), |
135 database.name()); | 143 database.name()); |
136 } | 144 } |
137 | 145 |
138 void SimpleDatabaseSystem::ClearAllDatabases() { | 146 void SimpleDatabaseSystem::ClearAllDatabases() { |
| 147 db_tracker_->CloseDatabases(database_connections_); |
| 148 database_connections_.RemoveAllConnections(); |
139 db_tracker_->CloseTrackerDatabaseAndClearCaches(); | 149 db_tracker_->CloseTrackerDatabaseAndClearCaches(); |
140 file_util::Delete(db_tracker_->DatabaseDirectory(), true); | 150 file_util::Delete(db_tracker_->DatabaseDirectory(), true); |
141 file_names_.clear(); | 151 file_names_.clear(); |
142 } | 152 } |
143 | 153 |
144 void SimpleDatabaseSystem::SetFullFilePathsForVfsFile( | 154 void SimpleDatabaseSystem::SetFullFilePathsForVfsFile( |
145 const string16& origin_identifier, | 155 const string16& origin_identifier, |
146 const string16& database_name) { | 156 const string16& database_name) { |
147 string16 vfs_file_name = origin_identifier + ASCIIToUTF16("/") + | 157 string16 vfs_file_name = origin_identifier + ASCIIToUTF16("/") + |
148 database_name + ASCIIToUTF16("#"); | 158 database_name + ASCIIToUTF16("#"); |
149 FilePath file_name = | 159 FilePath file_name = |
150 DatabaseUtil::GetFullFilePathForVfsFile(db_tracker_, vfs_file_name); | 160 DatabaseUtil::GetFullFilePathForVfsFile(db_tracker_, vfs_file_name); |
151 | 161 |
152 AutoLock file_names_auto_lock(file_names_lock_); | 162 AutoLock file_names_auto_lock(file_names_lock_); |
153 file_names_[vfs_file_name] = file_name; | 163 file_names_[vfs_file_name] = file_name; |
154 file_names_[vfs_file_name + ASCIIToUTF16("-journal")] = | 164 file_names_[vfs_file_name + ASCIIToUTF16("-journal")] = |
155 FilePath::FromWStringHack(file_name.ToWStringHack() + | 165 FilePath::FromWStringHack(file_name.ToWStringHack() + |
156 ASCIIToWide("-journal")); | 166 ASCIIToWide("-journal")); |
157 } | 167 } |
158 | 168 |
159 FilePath SimpleDatabaseSystem::GetFullFilePathForVfsFile( | 169 FilePath SimpleDatabaseSystem::GetFullFilePathForVfsFile( |
160 const string16& vfs_file_name) { | 170 const string16& vfs_file_name) { |
161 AutoLock file_names_auto_lock(file_names_lock_); | 171 AutoLock file_names_auto_lock(file_names_lock_); |
162 DCHECK(file_names_.find(vfs_file_name) != file_names_.end()); | 172 DCHECK(file_names_.find(vfs_file_name) != file_names_.end()); |
163 return file_names_[vfs_file_name]; | 173 return file_names_[vfs_file_name]; |
164 } | 174 } |
OLD | NEW |