summaryrefslogtreecommitdiffstats
path: root/third_party/leveldatabase
diff options
context:
space:
mode:
authordgrogan@chromium.org <dgrogan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-23 22:23:03 +0000
committerdgrogan@chromium.org <dgrogan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-23 22:23:03 +0000
commitbc882ddd33cc25ac5e68dd5b042cc6f836a57c74 (patch)
treedf2b1a50565eed461418edba711a639f190d0363 /third_party/leveldatabase
parentee9ac1de36f5e1a29e8c07d690122205a232e13e (diff)
downloadchromium_src-bc882ddd33cc25ac5e68dd5b042cc6f836a57c74.zip
chromium_src-bc882ddd33cc25ac5e68dd5b042cc6f836a57c74.tar.gz
chromium_src-bc882ddd33cc25ac5e68dd5b042cc6f836a57c74.tar.bz2
Respond with QuotaExceededError when IndexedDB has no disk space on open.
BUG=294957 R=jsbell@chromium.org Review URL: https://codereview.chromium.org/24252010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@224809 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'third_party/leveldatabase')
-rw-r--r--third_party/leveldatabase/env_chromium.cc13
-rw-r--r--third_party/leveldatabase/env_chromium.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/third_party/leveldatabase/env_chromium.cc b/third_party/leveldatabase/env_chromium.cc
index f36d691..9cba729 100644
--- a/third_party/leveldatabase/env_chromium.cc
+++ b/third_party/leveldatabase/env_chromium.cc
@@ -379,6 +379,19 @@ ErrorParsingResult ParseMethodAndError(const char* string,
return NONE;
}
+bool IndicatesDiskFull(leveldb::Status status) {
+ if (status.ok())
+ return false;
+ leveldb_env::MethodID method;
+ int error = -1;
+ leveldb_env::ErrorParsingResult result = leveldb_env::ParseMethodAndError(
+ status.ToString().c_str(), &method, &error);
+ return (result == leveldb_env::METHOD_AND_PFE &&
+ static_cast<base::PlatformFileError>(error) ==
+ base::PLATFORM_FILE_ERROR_NO_SPACE) ||
+ (result == leveldb_env::METHOD_AND_ERRNO && error == ENOSPC);
+}
+
std::string FilePathToString(const base::FilePath& file_path) {
#if defined(OS_WIN)
return UTF16ToUTF8(file_path.value());
diff --git a/third_party/leveldatabase/env_chromium.h b/third_party/leveldatabase/env_chromium.h
index 168d180..e84fad7 100644
--- a/third_party/leveldatabase/env_chromium.h
+++ b/third_party/leveldatabase/env_chromium.h
@@ -65,6 +65,7 @@ enum ErrorParsingResult {
ErrorParsingResult ParseMethodAndError(const char* string,
MethodID* method,
int* error);
+bool IndicatesDiskFull(leveldb::Status status);
std::string FilePathToString(const base::FilePath& file_path);
class UMALogger {