| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/dom_storage/dom_storage_context_wrapper.h" | 5 #include "content/browser/dom_storage/dom_storage_context_wrapper.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 weak_ptr_factory_.GetWeakPtr())); | 164 weak_ptr_factory_.GetWeakPtr())); |
| 165 file_service_connection_->SetConnectionLostClosure( | 165 file_service_connection_->SetConnectionLostClosure( |
| 166 base::Bind(&MojoState::OnUserServiceConnectionError, | 166 base::Bind(&MojoState::OnUserServiceConnectionError, |
| 167 weak_ptr_factory_.GetWeakPtr())); | 167 weak_ptr_factory_.GetWeakPtr())); |
| 168 | 168 |
| 169 if (!subdirectory_.empty()) { | 169 if (!subdirectory_.empty()) { |
| 170 // We were given a subdirectory to write to. Get it and use a disk backed | 170 // We were given a subdirectory to write to. Get it and use a disk backed |
| 171 // database. | 171 // database. |
| 172 file_service_connection_->GetInterface(&file_system_); | 172 file_service_connection_->GetInterface(&file_system_); |
| 173 file_system_->GetSubDirectory(subdirectory_.AsUTF8Unsafe(), | 173 file_system_->GetSubDirectory(subdirectory_.AsUTF8Unsafe(), |
| 174 GetProxy(&directory_), | 174 MakeRequest(&directory_), |
| 175 base::Bind(&MojoState::OnDirectoryOpened, | 175 base::Bind(&MojoState::OnDirectoryOpened, |
| 176 weak_ptr_factory_.GetWeakPtr())); | 176 weak_ptr_factory_.GetWeakPtr())); |
| 177 } else { | 177 } else { |
| 178 // We were not given a subdirectory. Use a memory backed database. | 178 // We were not given a subdirectory. Use a memory backed database. |
| 179 file_service_connection_->GetInterface(&leveldb_service_); | 179 file_service_connection_->GetInterface(&leveldb_service_); |
| 180 leveldb_service_->OpenInMemory( | 180 leveldb_service_->OpenInMemory( |
| 181 GetProxy(&database_), | 181 MakeRequest(&database_), base::Bind(&MojoState::OnDatabaseOpened, |
| 182 base::Bind(&MojoState::OnDatabaseOpened, | 182 weak_ptr_factory_.GetWeakPtr())); |
| 183 weak_ptr_factory_.GetWeakPtr())); | |
| 184 } | 183 } |
| 185 } | 184 } |
| 186 | 185 |
| 187 if (connection_state_ == CONNECTION_IN_PROGRESS) { | 186 if (connection_state_ == CONNECTION_IN_PROGRESS) { |
| 188 // Queue this OpenLocalStorage call for when we have a level db pointer. | 187 // Queue this OpenLocalStorage call for when we have a level db pointer. |
| 189 on_database_opened_callbacks_.push_back( | 188 on_database_opened_callbacks_.push_back( |
| 190 base::Bind(&MojoState::BindLocalStorage, weak_ptr_factory_.GetWeakPtr(), | 189 base::Bind(&MojoState::BindLocalStorage, weak_ptr_factory_.GetWeakPtr(), |
| 191 origin, base::Passed(&observer), base::Passed(&request))); | 190 origin, base::Passed(&observer), base::Passed(&request))); |
| 192 return; | 191 return; |
| 193 } | 192 } |
| 194 | 193 |
| 195 BindLocalStorage(origin, std::move(observer), std::move(request)); | 194 BindLocalStorage(origin, std::move(observer), std::move(request)); |
| 196 } | 195 } |
| 197 | 196 |
| 198 void DOMStorageContextWrapper::MojoState::OnDirectoryOpened( | 197 void DOMStorageContextWrapper::MojoState::OnDirectoryOpened( |
| 199 filesystem::mojom::FileError err) { | 198 filesystem::mojom::FileError err) { |
| 200 if (err != filesystem::mojom::FileError::OK) { | 199 if (err != filesystem::mojom::FileError::OK) { |
| 201 // We failed to open the directory; continue with startup so that we create | 200 // We failed to open the directory; continue with startup so that we create |
| 202 // the |level_db_wrappers_|. | 201 // the |level_db_wrappers_|. |
| 203 OnDatabaseOpened(leveldb::mojom::DatabaseError::IO_ERROR); | 202 OnDatabaseOpened(leveldb::mojom::DatabaseError::IO_ERROR); |
| 204 return; | 203 return; |
| 205 } | 204 } |
| 206 | 205 |
| 207 // Now that we have a directory, connect to the LevelDB service and get our | 206 // Now that we have a directory, connect to the LevelDB service and get our |
| 208 // database. | 207 // database. |
| 209 file_service_connection_->GetInterface(&leveldb_service_); | 208 file_service_connection_->GetInterface(&leveldb_service_); |
| 210 | 209 |
| 211 leveldb_service_->Open( | 210 leveldb_service_->Open( |
| 212 std::move(directory_), "leveldb", GetProxy(&database_), | 211 std::move(directory_), "leveldb", MakeRequest(&database_), |
| 213 base::Bind(&MojoState::OnDatabaseOpened, weak_ptr_factory_.GetWeakPtr())); | 212 base::Bind(&MojoState::OnDatabaseOpened, weak_ptr_factory_.GetWeakPtr())); |
| 214 } | 213 } |
| 215 | 214 |
| 216 void DOMStorageContextWrapper::MojoState::OnDatabaseOpened( | 215 void DOMStorageContextWrapper::MojoState::OnDatabaseOpened( |
| 217 leveldb::mojom::DatabaseError status) { | 216 leveldb::mojom::DatabaseError status) { |
| 218 if (status != leveldb::mojom::DatabaseError::OK) { | 217 if (status != leveldb::mojom::DatabaseError::OK) { |
| 219 // If we failed to open the database, reset the service object so we pass | 218 // If we failed to open the database, reset the service object so we pass |
| 220 // null pointers to our wrappers. | 219 // null pointers to our wrappers. |
| 221 database_.reset(); | 220 database_.reset(); |
| 222 leveldb_service_.reset(); | 221 leveldb_service_.reset(); |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 462 } | 461 } |
| 463 | 462 |
| 464 void DOMStorageContextWrapper::PurgeMemory(DOMStorageContextImpl::PurgeOption | 463 void DOMStorageContextWrapper::PurgeMemory(DOMStorageContextImpl::PurgeOption |
| 465 purge_option) { | 464 purge_option) { |
| 466 context_->task_runner()->PostTask( | 465 context_->task_runner()->PostTask( |
| 467 FROM_HERE, | 466 FROM_HERE, |
| 468 base::Bind(&DOMStorageContextImpl::PurgeMemory, context_, purge_option)); | 467 base::Bind(&DOMStorageContextImpl::PurgeMemory, context_, purge_option)); |
| 469 } | 468 } |
| 470 | 469 |
| 471 } // namespace content | 470 } // namespace content |
| OLD | NEW |