Chromium Code Reviews| Index: content/browser/indexed_db/indexed_db_backing_store.cc |
| diff --git a/content/browser/indexed_db/indexed_db_backing_store.cc b/content/browser/indexed_db/indexed_db_backing_store.cc |
| index ccd6bf827fb43b8a2f4dd27f12064371f2286a19..1340857e93fcfe1e824b60d98762ea4ded8f5956 100644 |
| --- a/content/browser/indexed_db/indexed_db_backing_store.cc |
| +++ b/content/browser/indexed_db/indexed_db_backing_store.cc |
| @@ -365,8 +365,8 @@ class DefaultLevelDBFactory : public LevelDBFactory { |
| public: |
| virtual scoped_ptr<LevelDBDatabase> OpenLevelDB( |
| const base::FilePath& file_name, |
| - const LevelDBComparator* comparator) OVERRIDE { |
| - return LevelDBDatabase::Open(file_name, comparator); |
| + const LevelDBComparator* comparator, bool* is_disk_full) OVERRIDE { |
| + return LevelDBDatabase::Open(file_name, comparator, is_disk_full); |
| } |
| virtual bool DestroyLevelDB(const base::FilePath& file_name) OVERRIDE { |
| return LevelDBDatabase::Destroy(file_name); |
| @@ -499,7 +499,8 @@ scoped_refptr<IndexedDBBackingStore> IndexedDBBackingStore::Open( |
| base::FilePath file_path = path_base.Append(identifier_path); |
| - db = leveldb_factory->OpenLevelDB(file_path, comparator.get()); |
| + bool is_disk_full = false; |
| + db = leveldb_factory->OpenLevelDB(file_path, comparator.get(), &is_disk_full); |
| if (db) { |
| bool known = false; |
| @@ -537,6 +538,17 @@ scoped_refptr<IndexedDBBackingStore> IndexedDBBackingStore::Open( |
| base::HistogramBase::kUmaTargetedHistogramFlag) |
| ->Add(INDEXED_DB_LEVEL_DB_BACKING_STORE_OPEN_SUCCESS); |
| } else { |
| + if (is_disk_full) { |
|
jsbell
2013/06/07 18:32:19
This can be written as an "else if" clause rather
dgrogan
2013/06/07 18:39:44
Moved.
|
| + LOG_ERROR("Unable to open backing store - disk is full."); |
| + base::Histogram::FactoryGet( |
| + "WebCore.IndexedDB.BackingStore.OpenStatus", |
| + 1, |
| + INDEXED_DB_LEVEL_DB_BACKING_STORE_OPEN_MAX, |
| + INDEXED_DB_LEVEL_DB_BACKING_STORE_OPEN_MAX + 1, |
| + base::HistogramBase::kUmaTargetedHistogramFlag) |
| + ->Add(INDEXED_DB_LEVEL_DB_BACKING_STORE_OPEN_DISK_FULL); |
| + return scoped_refptr<IndexedDBBackingStore>(); |
| + } |
| LOG(ERROR) << "IndexedDB backing store open failed, attempting cleanup"; |
| bool success = leveldb_factory->DestroyLevelDB(file_path); |
| if (!success) { |