| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "storage/browser/fileapi/sandbox_directory_database.h" | 5 #include "storage/browser/fileapi/sandbox_directory_database.h" |
| 6 | 6 |
| 7 #include <math.h> | 7 #include <math.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 #include <algorithm> | 10 #include <algorithm> |
| (...skipping 826 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 837 UMA_HISTOGRAM_ENUMERATION(kInitStatusHistogramLabel, | 837 UMA_HISTOGRAM_ENUMERATION(kInitStatusHistogramLabel, |
| 838 INIT_STATUS_IO_ERROR, INIT_STATUS_MAX); | 838 INIT_STATUS_IO_ERROR, INIT_STATUS_MAX); |
| 839 } else { | 839 } else { |
| 840 UMA_HISTOGRAM_ENUMERATION(kInitStatusHistogramLabel, | 840 UMA_HISTOGRAM_ENUMERATION(kInitStatusHistogramLabel, |
| 841 INIT_STATUS_UNKNOWN_ERROR, INIT_STATUS_MAX); | 841 INIT_STATUS_UNKNOWN_ERROR, INIT_STATUS_MAX); |
| 842 } | 842 } |
| 843 } | 843 } |
| 844 | 844 |
| 845 bool SandboxDirectoryDatabase::StoreDefaultValues() { | 845 bool SandboxDirectoryDatabase::StoreDefaultValues() { |
| 846 // Verify that this is a totally new database, and initialize it. | 846 // Verify that this is a totally new database, and initialize it. |
| 847 scoped_ptr<leveldb::Iterator> iter(db_->NewIterator(leveldb::ReadOptions())); | 847 { |
| 848 iter->SeekToFirst(); | 848 // Scope the iterator to ensure deleted before database is closed. |
| 849 if (iter->Valid()) { // DB was not empty--we shouldn't have been called. | 849 scoped_ptr<leveldb::Iterator> iter( |
| 850 LOG(ERROR) << "File system origin database is corrupt!"; | 850 db_->NewIterator(leveldb::ReadOptions())); |
| 851 return false; | 851 iter->SeekToFirst(); |
| 852 if (iter->Valid()) { // DB was not empty--we shouldn't have been called. |
| 853 LOG(ERROR) << "File system origin database is corrupt!"; |
| 854 return false; |
| 855 } |
| 852 } | 856 } |
| 853 // This is always the first write into the database. If we ever add a | 857 // This is always the first write into the database. If we ever add a |
| 854 // version number, it should go in this transaction too. | 858 // version number, it should go in this transaction too. |
| 855 FileInfo root; | 859 FileInfo root; |
| 856 root.parent_id = 0; | 860 root.parent_id = 0; |
| 857 root.modification_time = base::Time::Now(); | 861 root.modification_time = base::Time::Now(); |
| 858 leveldb::WriteBatch batch; | 862 leveldb::WriteBatch batch; |
| 859 if (!AddFileInfoHelper(root, 0, &batch)) | 863 if (!AddFileInfoHelper(root, 0, &batch)) |
| 860 return false; | 864 return false; |
| 861 batch.Put(LastFileIdKey(), base::Int64ToString(0)); | 865 batch.Put(LastFileIdKey(), base::Int64ToString(0)); |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 943 | 947 |
| 944 void SandboxDirectoryDatabase::HandleError( | 948 void SandboxDirectoryDatabase::HandleError( |
| 945 const tracked_objects::Location& from_here, | 949 const tracked_objects::Location& from_here, |
| 946 const leveldb::Status& status) { | 950 const leveldb::Status& status) { |
| 947 LOG(ERROR) << "SandboxDirectoryDatabase failed at: " | 951 LOG(ERROR) << "SandboxDirectoryDatabase failed at: " |
| 948 << from_here.ToString() << " with error: " << status.ToString(); | 952 << from_here.ToString() << " with error: " << status.ToString(); |
| 949 db_.reset(); | 953 db_.reset(); |
| 950 } | 954 } |
| 951 | 955 |
| 952 } // namespace storage | 956 } // namespace storage |
| OLD | NEW |