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

Side by Side Diff: components/offline_pages/offline_page_metadata_store_sql.cc

Issue 2336773002: [Offline pages] Removing static sync methods from Metadata SQL store's interface (Closed)
Patch Set: Created 4 years, 3 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
« no previous file with comments | « components/offline_pages/offline_page_metadata_store_sql.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/offline_page_metadata_store_sql.h" 5 #include "components/offline_pages/offline_page_metadata_store_sql.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/files/file_util.h" 9 #include "base/files/file_util.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 if (statement.Succeeded()) { 292 if (statement.Succeeded()) {
293 NotifyLoadResult(runner, callback, OfflinePageMetadataStore::LOAD_SUCCEEDED, 293 NotifyLoadResult(runner, callback, OfflinePageMetadataStore::LOAD_SUCCEEDED,
294 result); 294 result);
295 } else { 295 } else {
296 result.clear(); 296 result.clear();
297 NotifyLoadResult(runner, callback, 297 NotifyLoadResult(runner, callback,
298 OfflinePageMetadataStore::STORE_LOAD_FAILED, result); 298 OfflinePageMetadataStore::STORE_LOAD_FAILED, result);
299 } 299 }
300 } 300 }
301 301
302 void AddOrUpdateOfflinePageSync(
303 const OfflinePageItem& offline_page,
304 sql::Connection* db,
305 scoped_refptr<base::SingleThreadTaskRunner> runner,
306 const OfflinePageMetadataStore::UpdateCallback& callback) {
307 // TODO(bburns): add UMA metrics here (and for levelDB).
308 bool ok = InsertOrReplace(db, offline_page);
309 runner->PostTask(FROM_HERE, base::Bind(callback, ok));
310 }
311
312 void RemoveOfflinePagesSync(
313 const std::vector<int64_t>& offline_ids,
314 sql::Connection* db,
315 scoped_refptr<base::SingleThreadTaskRunner> runner,
316 const OfflinePageMetadataStore::UpdateCallback& callback) {
317 // TODO(bburns): add UMA metrics here (and for levelDB).
318
319 // If you create a transaction but don't Commit() it is automatically
320 // rolled back by its destructor when it falls out of scope.
321 sql::Transaction transaction(db);
322 if (!transaction.Begin()) {
323 runner->PostTask(FROM_HERE, base::Bind(callback, false));
324 return;
325 }
326
327 for (auto offline_id : offline_ids) {
328 if (!DeleteByOfflineId(db, offline_id)) {
329 runner->PostTask(FROM_HERE, base::Bind(callback, false));
330 return;
331 }
332 }
333
334 bool success = transaction.Commit();
335 runner->PostTask(FROM_HERE, base::Bind(callback, success));
336 }
337
302 void ResetSync(sql::Connection* db, 338 void ResetSync(sql::Connection* db,
303 const base::FilePath& db_file_path, 339 const base::FilePath& db_file_path,
304 scoped_refptr<base::SingleThreadTaskRunner> runner, 340 scoped_refptr<base::SingleThreadTaskRunner> runner,
305 const base::Callback<void(StoreState)>& callback) { 341 const base::Callback<void(StoreState)>& callback) {
306 // This method deletes the content of the whole store and reinitializes it. 342 // This method deletes the content of the whole store and reinitializes it.
307 bool success = db->Raze(); 343 bool success = db->Raze();
308 db->Close(); 344 db->Close();
309 StoreState state; 345 StoreState state;
310 if (success) { 346 if (success) {
311 state = InitDatabase(db, db_file_path) 347 state = InitDatabase(db, db_file_path)
(...skipping 17 matching lines...) Expand all
329 OpenConnection(); 365 OpenConnection();
330 } 366 }
331 367
332 OfflinePageMetadataStoreSQL::~OfflinePageMetadataStoreSQL() { 368 OfflinePageMetadataStoreSQL::~OfflinePageMetadataStoreSQL() {
333 if (db_.get() && 369 if (db_.get() &&
334 !background_task_runner_->DeleteSoon(FROM_HERE, db_.release())) { 370 !background_task_runner_->DeleteSoon(FROM_HERE, db_.release())) {
335 DLOG(WARNING) << "SQL database will not be deleted."; 371 DLOG(WARNING) << "SQL database will not be deleted.";
336 } 372 }
337 } 373 }
338 374
339 void OfflinePageMetadataStoreSQL::AddOrUpdateOfflinePageSync(
340 const OfflinePageItem& offline_page,
341 sql::Connection* db,
342 scoped_refptr<base::SingleThreadTaskRunner> runner,
343 const UpdateCallback& callback) {
344 // TODO(bburns): add UMA metrics here (and for levelDB).
345 bool ok = InsertOrReplace(db, offline_page);
346 runner->PostTask(FROM_HERE, base::Bind(callback, ok));
347 }
348
349 void OfflinePageMetadataStoreSQL::RemoveOfflinePagesSync(
350 const std::vector<int64_t>& offline_ids,
351 sql::Connection* db,
352 scoped_refptr<base::SingleThreadTaskRunner> runner,
353 const UpdateCallback& callback) {
354 // TODO(bburns): add UMA metrics here (and for levelDB).
355
356 // If you create a transaction but don't Commit() it is automatically
357 // rolled back by its destructor when it falls out of scope.
358 sql::Transaction transaction(db);
359 if (!transaction.Begin()) {
360 runner->PostTask(FROM_HERE, base::Bind(callback, false));
361 return;
362 }
363 for (auto offline_id : offline_ids) {
364 if (!DeleteByOfflineId(db, offline_id)) {
365 runner->PostTask(FROM_HERE, base::Bind(callback, false));
366 return;
367 }
368 }
369
370 bool success = transaction.Commit();
371 runner->PostTask(FROM_HERE, base::Bind(callback, success));
372 }
373
374 void OfflinePageMetadataStoreSQL::GetOfflinePages( 375 void OfflinePageMetadataStoreSQL::GetOfflinePages(
375 const LoadCallback& callback) { 376 const LoadCallback& callback) {
376 background_task_runner_->PostTask( 377 background_task_runner_->PostTask(
377 FROM_HERE, base::Bind(&GetOfflinePagesSync, db_.get(), 378 FROM_HERE, base::Bind(&GetOfflinePagesSync, db_.get(),
378 base::ThreadTaskRunnerHandle::Get(), callback)); 379 base::ThreadTaskRunnerHandle::Get(), callback));
379 } 380 }
380 381
381 void OfflinePageMetadataStoreSQL::AddOrUpdateOfflinePage( 382 void OfflinePageMetadataStoreSQL::AddOrUpdateOfflinePage(
382 const OfflinePageItem& offline_page, 383 const OfflinePageItem& offline_page,
383 const UpdateCallback& callback) { 384 const UpdateCallback& callback) {
384 DCHECK(db_.get()); 385 DCHECK(db_.get());
385 background_task_runner_->PostTask( 386 background_task_runner_->PostTask(
386 FROM_HERE, 387 FROM_HERE,
387 base::Bind(&OfflinePageMetadataStoreSQL::AddOrUpdateOfflinePageSync, 388 base::Bind(&AddOrUpdateOfflinePageSync, offline_page, db_.get(),
388 offline_page, db_.get(), base::ThreadTaskRunnerHandle::Get(), 389 base::ThreadTaskRunnerHandle::Get(), callback));
389 callback));
390 } 390 }
391 391
392 void OfflinePageMetadataStoreSQL::RemoveOfflinePages( 392 void OfflinePageMetadataStoreSQL::RemoveOfflinePages(
393 const std::vector<int64_t>& offline_ids, 393 const std::vector<int64_t>& offline_ids,
394 const UpdateCallback& callback) { 394 const UpdateCallback& callback) {
395 DCHECK(db_.get()); 395 DCHECK(db_.get());
396 396
397 if (offline_ids.empty()) { 397 if (offline_ids.empty()) {
398 // Nothing to do, but post a callback instead of calling directly 398 // Nothing to do, but post a callback instead of calling directly
399 // to preserve the async style behavior to prevent bugs. 399 // to preserve the async style behavior to prevent bugs.
400 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, 400 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
401 base::Bind(callback, true)); 401 base::Bind(callback, true));
402 return; 402 return;
403 } 403 }
404 404
405 background_task_runner_->PostTask( 405 background_task_runner_->PostTask(
406 FROM_HERE, 406 FROM_HERE, base::Bind(&RemoveOfflinePagesSync, offline_ids, db_.get(),
407 base::Bind(&OfflinePageMetadataStoreSQL::RemoveOfflinePagesSync, 407 base::ThreadTaskRunnerHandle::Get(), callback));
408 offline_ids, db_.get(), base::ThreadTaskRunnerHandle::Get(),
409 callback));
410 } 408 }
411 409
412 void OfflinePageMetadataStoreSQL::Reset(const ResetCallback& callback) { 410 void OfflinePageMetadataStoreSQL::Reset(const ResetCallback& callback) {
413 if (!CheckDb(base::Bind(callback, false))) 411 if (!CheckDb(base::Bind(callback, false)))
414 return; 412 return;
415 413
416 background_task_runner_->PostTask( 414 background_task_runner_->PostTask(
417 FROM_HERE, 415 FROM_HERE,
418 base::Bind(&ResetSync, db_.get(), db_file_path_, 416 base::Bind(&ResetSync, db_.get(), db_file_path_,
419 base::ThreadTaskRunnerHandle::Get(), 417 base::ThreadTaskRunnerHandle::Get(),
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 DCHECK(db_.get()); 457 DCHECK(db_.get());
460 if (!db_.get()) { 458 if (!db_.get()) {
461 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE, 459 base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
462 base::Bind(callback)); 460 base::Bind(callback));
463 return false; 461 return false;
464 } 462 }
465 return true; 463 return true;
466 } 464 }
467 465
468 } // namespace offline_pages 466 } // namespace offline_pages
OLDNEW
« no previous file with comments | « components/offline_pages/offline_page_metadata_store_sql.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698