| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "components/offline_pages/background/request_queue_store_sql.h" | 5 #include "components/offline_pages/background/request_queue_store_sql.h" |
| 6 | 6 |
| 7 #include <unordered_set> | 7 #include <unordered_set> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/files/file_path.h" | 10 #include "base/files/file_path.h" |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 181 return ItemActionStatus::NOT_FOUND; | 181 return ItemActionStatus::NOT_FOUND; |
| 182 return ItemActionStatus::SUCCESS; | 182 return ItemActionStatus::SUCCESS; |
| 183 } | 183 } |
| 184 | 184 |
| 185 void PostStoreUpdateResultForIds( | 185 void PostStoreUpdateResultForIds( |
| 186 scoped_refptr<base::SingleThreadTaskRunner> runner, | 186 scoped_refptr<base::SingleThreadTaskRunner> runner, |
| 187 StoreState store_state, | 187 StoreState store_state, |
| 188 const std::vector<int64_t>& item_ids, | 188 const std::vector<int64_t>& item_ids, |
| 189 ItemActionStatus action_status, | 189 ItemActionStatus action_status, |
| 190 const RequestQueueStore::UpdateCallback& callback) { | 190 const RequestQueueStore::UpdateCallback& callback) { |
| 191 std::unique_ptr<UpdateRequestsResult> result( | 191 std::unique_ptr<QueueResults::UpdateRequestsResult> result( |
| 192 new UpdateRequestsResult(store_state)); | 192 new QueueResults::UpdateRequestsResult(store_state)); |
| 193 for (const auto& item_id : item_ids) | 193 for (const auto& item_id : item_ids) |
| 194 result->item_statuses.push_back(std::make_pair(item_id, action_status)); | 194 result->item_statuses.push_back(std::make_pair(item_id, action_status)); |
| 195 runner->PostTask(FROM_HERE, base::Bind(callback, base::Passed(&result))); | 195 runner->PostTask(FROM_HERE, base::Bind(callback, base::Passed(&result))); |
| 196 } | 196 } |
| 197 | 197 |
| 198 void PostStoreErrorForAllRequests( | 198 void PostStoreErrorForAllRequests( |
| 199 scoped_refptr<base::SingleThreadTaskRunner> runner, | 199 scoped_refptr<base::SingleThreadTaskRunner> runner, |
| 200 const std::vector<SavePageRequest>& items, | 200 const std::vector<SavePageRequest>& items, |
| 201 const RequestQueueStore::UpdateCallback& callback) { | 201 const RequestQueueStore::UpdateCallback& callback) { |
| 202 std::vector<int64_t> item_ids; | 202 std::vector<int64_t> item_ids; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 247 | 247 |
| 248 runner->PostTask(FROM_HERE, base::Bind(callback, statement.Succeeded(), | 248 runner->PostTask(FROM_HERE, base::Bind(callback, statement.Succeeded(), |
| 249 base::Passed(&requests))); | 249 base::Passed(&requests))); |
| 250 } | 250 } |
| 251 | 251 |
| 252 void GetRequestsByIdsSync(sql::Connection* db, | 252 void GetRequestsByIdsSync(sql::Connection* db, |
| 253 scoped_refptr<base::SingleThreadTaskRunner> runner, | 253 scoped_refptr<base::SingleThreadTaskRunner> runner, |
| 254 const std::vector<int64_t>& request_ids, | 254 const std::vector<int64_t>& request_ids, |
| 255 const RequestQueueStore::UpdateCallback& callback) { | 255 const RequestQueueStore::UpdateCallback& callback) { |
| 256 // TODO(fgorski): Perhaps add metrics here. | 256 // TODO(fgorski): Perhaps add metrics here. |
| 257 std::unique_ptr<UpdateRequestsResult> result( | 257 std::unique_ptr<QueueResults::UpdateRequestsResult> result( |
| 258 new UpdateRequestsResult(StoreState::LOADED)); | 258 new QueueResults::UpdateRequestsResult(StoreState::LOADED)); |
| 259 | 259 |
| 260 // If you create a transaction but don't Commit() it is automatically | 260 // If you create a transaction but don't Commit() it is automatically |
| 261 // rolled back by its destructor when it falls out of scope. | 261 // rolled back by its destructor when it falls out of scope. |
| 262 sql::Transaction transaction(db); | 262 sql::Transaction transaction(db); |
| 263 if (!transaction.Begin()) { | 263 if (!transaction.Begin()) { |
| 264 PostStoreErrorForAllIds(runner, request_ids, callback); | 264 PostStoreErrorForAllIds(runner, request_ids, callback); |
| 265 return; | 265 return; |
| 266 } | 266 } |
| 267 | 267 |
| 268 // Make sure not to include the same request multiple times, preserving the | 268 // Make sure not to include the same request multiple times, preserving the |
| (...skipping 25 matching lines...) Expand all Loading... |
| 294 // TODO(fgorski): add UMA metrics here. | 294 // TODO(fgorski): add UMA metrics here. |
| 295 ItemActionStatus status = Insert(db, request); | 295 ItemActionStatus status = Insert(db, request); |
| 296 runner->PostTask(FROM_HERE, base::Bind(callback, status)); | 296 runner->PostTask(FROM_HERE, base::Bind(callback, status)); |
| 297 } | 297 } |
| 298 | 298 |
| 299 void UpdateRequestsSync(sql::Connection* db, | 299 void UpdateRequestsSync(sql::Connection* db, |
| 300 scoped_refptr<base::SingleThreadTaskRunner> runner, | 300 scoped_refptr<base::SingleThreadTaskRunner> runner, |
| 301 const std::vector<SavePageRequest>& requests, | 301 const std::vector<SavePageRequest>& requests, |
| 302 const RequestQueueStore::UpdateCallback& callback) { | 302 const RequestQueueStore::UpdateCallback& callback) { |
| 303 // TODO(fgorski): add UMA metrics here. | 303 // TODO(fgorski): add UMA metrics here. |
| 304 std::unique_ptr<UpdateRequestsResult> result( | 304 std::unique_ptr<QueueResults::UpdateRequestsResult> result( |
| 305 new UpdateRequestsResult(StoreState::LOADED)); | 305 new QueueResults::UpdateRequestsResult(StoreState::LOADED)); |
| 306 | 306 |
| 307 sql::Transaction transaction(db); | 307 sql::Transaction transaction(db); |
| 308 if (!transaction.Begin()) { | 308 if (!transaction.Begin()) { |
| 309 PostStoreErrorForAllRequests(runner, requests, callback); | 309 PostStoreErrorForAllRequests(runner, requests, callback); |
| 310 return; | 310 return; |
| 311 } | 311 } |
| 312 | 312 |
| 313 for (const auto& request : requests) { | 313 for (const auto& request : requests) { |
| 314 ItemActionStatus status = Update(db, request); | 314 ItemActionStatus status = Update(db, request); |
| 315 result->item_statuses.push_back( | 315 result->item_statuses.push_back( |
| 316 std::make_pair(request.request_id(), status)); | 316 std::make_pair(request.request_id(), status)); |
| 317 if (status == ItemActionStatus::SUCCESS) | 317 if (status == ItemActionStatus::SUCCESS) |
| 318 result->updated_items.push_back(request); | 318 result->updated_items.push_back(request); |
| 319 } | 319 } |
| 320 | 320 |
| 321 if (!transaction.Commit()) { | 321 if (!transaction.Commit()) { |
| 322 PostStoreErrorForAllRequests(runner, requests, callback); | 322 PostStoreErrorForAllRequests(runner, requests, callback); |
| 323 return; | 323 return; |
| 324 } | 324 } |
| 325 | 325 |
| 326 runner->PostTask(FROM_HERE, base::Bind(callback, base::Passed(&result))); | 326 runner->PostTask(FROM_HERE, base::Bind(callback, base::Passed(&result))); |
| 327 } | 327 } |
| 328 | 328 |
| 329 void RemoveRequestsSync(sql::Connection* db, | 329 void RemoveRequestsSync(sql::Connection* db, |
| 330 scoped_refptr<base::SingleThreadTaskRunner> runner, | 330 scoped_refptr<base::SingleThreadTaskRunner> runner, |
| 331 const std::vector<int64_t>& request_ids, | 331 const std::vector<int64_t>& request_ids, |
| 332 const RequestQueueStore::UpdateCallback& callback) { | 332 const RequestQueueStore::UpdateCallback& callback) { |
| 333 // TODO(fgorski): Perhaps add metrics here. | 333 // TODO(fgorski): Perhaps add metrics here. |
| 334 std::unique_ptr<UpdateRequestsResult> result( | 334 std::unique_ptr<QueueResults::UpdateRequestsResult> result( |
| 335 new UpdateRequestsResult(StoreState::LOADED)); | 335 new QueueResults::UpdateRequestsResult(StoreState::LOADED)); |
| 336 | 336 |
| 337 // If you create a transaction but don't Commit() it is automatically | 337 // If you create a transaction but don't Commit() it is automatically |
| 338 // rolled back by its destructor when it falls out of scope. | 338 // rolled back by its destructor when it falls out of scope. |
| 339 sql::Transaction transaction(db); | 339 sql::Transaction transaction(db); |
| 340 if (!transaction.Begin()) { | 340 if (!transaction.Begin()) { |
| 341 PostStoreErrorForAllIds(runner, request_ids, callback); | 341 PostStoreErrorForAllIds(runner, request_ids, callback); |
| 342 return; | 342 return; |
| 343 } | 343 } |
| 344 | 344 |
| 345 // Read the request before we delete it, and if the delete worked, put it on | 345 // Read the request before we delete it, and if the delete worked, put it on |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 520 // Complete connection initialization post reset. | 520 // Complete connection initialization post reset. |
| 521 OnOpenConnectionDone(state); | 521 OnOpenConnectionDone(state); |
| 522 callback.Run(state == StoreState::LOADED); | 522 callback.Run(state == StoreState::LOADED); |
| 523 } | 523 } |
| 524 | 524 |
| 525 StoreState RequestQueueStoreSQL::state() const { | 525 StoreState RequestQueueStoreSQL::state() const { |
| 526 return state_; | 526 return state_; |
| 527 } | 527 } |
| 528 | 528 |
| 529 } // namespace offline_pages | 529 } // namespace offline_pages |
| OLD | NEW |