diff options
author | dgrogan@chromium.org <dgrogan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-23 22:23:03 +0000 |
---|---|---|
committer | dgrogan@chromium.org <dgrogan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-23 22:23:03 +0000 |
commit | bc882ddd33cc25ac5e68dd5b042cc6f836a57c74 (patch) | |
tree | df2b1a50565eed461418edba711a639f190d0363 /third_party/leveldatabase | |
parent | ee9ac1de36f5e1a29e8c07d690122205a232e13e (diff) | |
download | chromium_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.cc | 13 | ||||
-rw-r--r-- | third_party/leveldatabase/env_chromium.h | 1 |
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 { |