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..329127ed5a5c8ee3a074d3f7e7e404bb9a27c153 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; |
@@ -536,6 +537,16 @@ scoped_refptr<IndexedDBBackingStore> IndexedDBBackingStore::Open( |
INDEXED_DB_LEVEL_DB_BACKING_STORE_OPEN_MAX + 1, |
base::HistogramBase::kUmaTargetedHistogramFlag) |
->Add(INDEXED_DB_LEVEL_DB_BACKING_STORE_OPEN_SUCCESS); |
+ } else if (is_disk_full) { |
+ 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>(); |
} else { |
LOG(ERROR) << "IndexedDB backing store open failed, attempting cleanup"; |
bool success = leveldb_factory->DestroyLevelDB(file_path); |