| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/service_worker/service_worker_database.h" | 5 #include "content/browser/service_worker/service_worker_database.h" |
| 6 | 6 |
| 7 #include "base/files/file_util.h" | 7 #include "base/files/file_util.h" |
| 8 #include "base/location.h" | 8 #include "base/location.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| 11 #include "base/stl_util.h" | 11 #include "base/stl_util.h" |
| 12 #include "base/strings/string_number_conversions.h" | 12 #include "base/strings/string_number_conversions.h" |
| 13 #include "base/strings/string_split.h" | 13 #include "base/strings/string_split.h" |
| 14 #include "base/strings/string_util.h" | 14 #include "base/strings/string_util.h" |
| 15 #include "base/strings/stringprintf.h" | 15 #include "base/strings/stringprintf.h" |
| 16 #include "content/browser/service_worker/service_worker_database.pb.h" | 16 #include "content/browser/service_worker/service_worker_database.pb.h" |
| 17 #include "content/browser/service_worker/service_worker_metrics.h" | 17 #include "content/browser/service_worker/service_worker_metrics.h" |
| 18 #include "content/common/service_worker/service_worker_types.h" | 18 #include "content/common/service_worker/service_worker_types.h" |
| 19 #include "third_party/leveldatabase/env_chromium.h" |
| 19 #include "third_party/leveldatabase/src/helpers/memenv/memenv.h" | 20 #include "third_party/leveldatabase/src/helpers/memenv/memenv.h" |
| 20 #include "third_party/leveldatabase/src/include/leveldb/db.h" | 21 #include "third_party/leveldatabase/src/include/leveldb/db.h" |
| 21 #include "third_party/leveldatabase/src/include/leveldb/env.h" | 22 #include "third_party/leveldatabase/src/include/leveldb/env.h" |
| 22 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" | 23 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" |
| 23 | 24 |
| 24 // LevelDB database schema | 25 // LevelDB database schema |
| 25 // ======================= | 26 // ======================= |
| 26 // | 27 // |
| 27 // NOTE | 28 // NOTE |
| 28 // - int64 value is serialized as a string by base::Int64ToString(). | 29 // - int64 value is serialized as a string by base::Int64ToString(). |
| (...skipping 961 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 990 // Avoid opening a database if it does not exist at the |path_|. | 991 // Avoid opening a database if it does not exist at the |path_|. |
| 991 if (use_in_memory_db || | 992 if (use_in_memory_db || |
| 992 !base::PathExists(path_) || | 993 !base::PathExists(path_) || |
| 993 base::IsDirectoryEmpty(path_)) { | 994 base::IsDirectoryEmpty(path_)) { |
| 994 return STATUS_ERROR_NOT_FOUND; | 995 return STATUS_ERROR_NOT_FOUND; |
| 995 } | 996 } |
| 996 } | 997 } |
| 997 | 998 |
| 998 leveldb::Options options; | 999 leveldb::Options options; |
| 999 options.create_if_missing = create_if_missing; | 1000 options.create_if_missing = create_if_missing; |
| 1001 options.reuse_logs = leveldb_env::kDefaultLogReuseOptionValue; |
| 1000 if (use_in_memory_db) { | 1002 if (use_in_memory_db) { |
| 1001 env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); | 1003 env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); |
| 1002 options.env = env_.get(); | 1004 options.env = env_.get(); |
| 1003 } | 1005 } |
| 1004 | 1006 |
| 1005 leveldb::DB* db = NULL; | 1007 leveldb::DB* db = NULL; |
| 1006 Status status = LevelDBStatusToStatus( | 1008 Status status = LevelDBStatusToStatus( |
| 1007 leveldb::DB::Open(options, path_.AsUTF8Unsafe(), &db)); | 1009 leveldb::DB::Open(options, path_.AsUTF8Unsafe(), &db)); |
| 1008 HandleOpenResult(FROM_HERE, status); | 1010 HandleOpenResult(FROM_HERE, status); |
| 1009 if (status != STATUS_OK) { | 1011 if (status != STATUS_OK) { |
| (...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1443 | 1445 |
| 1444 void ServiceWorkerDatabase::HandleWriteResult( | 1446 void ServiceWorkerDatabase::HandleWriteResult( |
| 1445 const tracked_objects::Location& from_here, | 1447 const tracked_objects::Location& from_here, |
| 1446 Status status) { | 1448 Status status) { |
| 1447 if (status != STATUS_OK) | 1449 if (status != STATUS_OK) |
| 1448 Disable(from_here, status); | 1450 Disable(from_here, status); |
| 1449 ServiceWorkerMetrics::CountWriteDatabaseResult(status); | 1451 ServiceWorkerMetrics::CountWriteDatabaseResult(status); |
| 1450 } | 1452 } |
| 1451 | 1453 |
| 1452 } // namespace content | 1454 } // namespace content |
| OLD | NEW |