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 scoped_ptr<leveldb::Iterator> iter( |
nhiroki
2016/01/27 00:48:00
Can you add a comment about why we need to wrap th
cmumford
2016/01/27 16:33:56
Done.
| |
849 if (iter->Valid()) { // DB was not empty--we shouldn't have been called. | 849 db_->NewIterator(leveldb::ReadOptions())); |
850 LOG(ERROR) << "File system origin database is corrupt!"; | 850 iter->SeekToFirst(); |
851 return false; | 851 if (iter->Valid()) { // DB was not empty--we shouldn't have been called. |
852 LOG(ERROR) << "File system origin database is corrupt!"; | |
853 return false; | |
854 } | |
852 } | 855 } |
853 // This is always the first write into the database. If we ever add a | 856 // This is always the first write into the database. If we ever add a |
854 // version number, it should go in this transaction too. | 857 // version number, it should go in this transaction too. |
855 FileInfo root; | 858 FileInfo root; |
856 root.parent_id = 0; | 859 root.parent_id = 0; |
857 root.modification_time = base::Time::Now(); | 860 root.modification_time = base::Time::Now(); |
858 leveldb::WriteBatch batch; | 861 leveldb::WriteBatch batch; |
859 if (!AddFileInfoHelper(root, 0, &batch)) | 862 if (!AddFileInfoHelper(root, 0, &batch)) |
860 return false; | 863 return false; |
861 batch.Put(LastFileIdKey(), base::Int64ToString(0)); | 864 batch.Put(LastFileIdKey(), base::Int64ToString(0)); |
862 batch.Put(LastIntegerKey(), base::Int64ToString(-1)); | 865 batch.Put(LastIntegerKey(), base::Int64ToString(-1)); |
863 leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch); | 866 leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch); |
864 if (!status.ok()) { | 867 if (!status.ok()) { |
865 HandleError(FROM_HERE, status); | 868 HandleError(FROM_HERE, status); |
nhiroki
2016/01/27 00:48:00
Can you add a comment in the header file like this
cmumford
2016/01/27 16:33:56
Done.
| |
866 return false; | 869 return false; |
867 } | 870 } |
868 return true; | 871 return true; |
869 } | 872 } |
870 | 873 |
871 bool SandboxDirectoryDatabase::GetLastFileId(FileId* file_id) { | 874 bool SandboxDirectoryDatabase::GetLastFileId(FileId* file_id) { |
872 if (!Init(REPAIR_ON_CORRUPTION)) | 875 if (!Init(REPAIR_ON_CORRUPTION)) |
873 return false; | 876 return false; |
874 DCHECK(file_id); | 877 DCHECK(file_id); |
875 std::string id_string; | 878 std::string id_string; |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
943 | 946 |
944 void SandboxDirectoryDatabase::HandleError( | 947 void SandboxDirectoryDatabase::HandleError( |
945 const tracked_objects::Location& from_here, | 948 const tracked_objects::Location& from_here, |
946 const leveldb::Status& status) { | 949 const leveldb::Status& status) { |
947 LOG(ERROR) << "SandboxDirectoryDatabase failed at: " | 950 LOG(ERROR) << "SandboxDirectoryDatabase failed at: " |
948 << from_here.ToString() << " with error: " << status.ToString(); | 951 << from_here.ToString() << " with error: " << status.ToString(); |
949 db_.reset(); | 952 db_.reset(); |
950 } | 953 } |
951 | 954 |
952 } // namespace storage | 955 } // namespace storage |
OLD | NEW |