summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-09 11:17:16 +0000
committertzik@chromium.org <tzik@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-09 11:17:16 +0000
commitb92e787cfb1664cbcd8282e9ddb937a00e00f184 (patch)
tree5618e33bd686b137f5743ecf5fe5b130479dace1
parentec01de586b405dc4cb4f8ff814ebf141bb16d92b (diff)
downloadchromium_src-b92e787cfb1664cbcd8282e9ddb937a00e00f184.zip
chromium_src-b92e787cfb1664cbcd8282e9ddb937a00e00f184.tar.gz
chromium_src-b92e787cfb1664cbcd8282e9ddb937a00e00f184.tar.bz2
Add more error codes to fileapi::SyncStatusCode to handle gdata-related errors.
Also, added GDataErrorCodeToSyncStatusCode() to translate them. TBR=thestig@chromium.org BUG=156041 Review URL: https://chromiumcodereview.appspot.com/11293196 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@166894 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/sync_file_system/drive_file_sync_util.cc54
-rw-r--r--chrome/browser/sync_file_system/drive_file_sync_util.h19
-rw-r--r--chrome/chrome_browser.gypi2
-rw-r--r--webkit/fileapi/syncable/sync_status_code.h3
4 files changed, 78 insertions, 0 deletions
diff --git a/chrome/browser/sync_file_system/drive_file_sync_util.cc b/chrome/browser/sync_file_system/drive_file_sync_util.cc
new file mode 100644
index 0000000..d5b1daa
--- /dev/null
+++ b/chrome/browser/sync_file_system/drive_file_sync_util.cc
@@ -0,0 +1,54 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/sync_file_system/drive_file_sync_util.h"
+
+#include "base/logging.h"
+
+namespace sync_file_system {
+
+fileapi::SyncStatusCode GDataErrorCodeToSyncStatusCode(
+ google_apis::GDataErrorCode error) {
+ switch (error) {
+ case google_apis::HTTP_SUCCESS:
+ case google_apis::HTTP_CREATED:
+ case google_apis::HTTP_FOUND:
+ case google_apis::HTTP_NOT_MODIFIED:
+ return fileapi::SYNC_STATUS_OK;
+
+ case google_apis::HTTP_CONFLICT:
+ return fileapi::SYNC_STATUS_HAS_CONFLICT;
+
+ case google_apis::HTTP_UNAUTHORIZED:
+ return fileapi::SYNC_STATUS_AUTHENTICATION_FAILED;
+
+ case google_apis::GDATA_NO_CONNECTION:
+ return fileapi::SYNC_STATUS_NETWORK_ERROR;
+
+ case google_apis::HTTP_INTERNAL_SERVER_ERROR:
+ case google_apis::HTTP_SERVICE_UNAVAILABLE:
+ case google_apis::GDATA_CANCELLED:
+ case google_apis::GDATA_NOT_READY:
+ return fileapi::SYNC_STATUS_RETRY;
+
+ case google_apis::HTTP_NOT_FOUND:
+ return fileapi::SYNC_FILE_ERROR_NOT_FOUND;
+
+ case google_apis::GDATA_FILE_ERROR:
+ return fileapi::SYNC_FILE_ERROR_FAILED;
+
+ case google_apis::HTTP_RESUME_INCOMPLETE:
+ case google_apis::HTTP_BAD_REQUEST:
+ case google_apis::HTTP_FORBIDDEN:
+ case google_apis::HTTP_LENGTH_REQUIRED:
+ case google_apis::HTTP_PRECONDITION:
+ case google_apis::GDATA_PARSE_ERROR:
+ case google_apis::GDATA_OTHER_ERROR:
+ return fileapi::SYNC_STATUS_FAILED;
+ }
+ NOTREACHED();
+ return fileapi::SYNC_STATUS_FAILED;
+}
+
+} // namespace sync_file_system
diff --git a/chrome/browser/sync_file_system/drive_file_sync_util.h b/chrome/browser/sync_file_system/drive_file_sync_util.h
new file mode 100644
index 0000000..4422fcc
--- /dev/null
+++ b/chrome/browser/sync_file_system/drive_file_sync_util.h
@@ -0,0 +1,19 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_FILE_SYNC_UTIL_H_
+#define CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_FILE_SYNC_UTIL_H_
+
+#include "chrome/browser/google_apis/gdata_errorcode.h"
+#include "webkit/fileapi/syncable/sync_status_code.h"
+
+namespace sync_file_system {
+
+// Translates GDataErrorCode to SyncStatusCode.
+fileapi::SyncStatusCode GDataErrorCodeToSyncStatusCode(
+ google_apis::GDataErrorCode error);
+
+} // namespace sync_file_system
+
+#endif // CHROME_BROWSER_SYNC_FILE_SYSTEM_DRIVE_FILE_SYNC_UTIL_H_
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index fd68490..6afb6e9 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -1953,6 +1953,8 @@
'browser/sync/user_selectable_sync_type.h',
'browser/sync_file_system/drive_file_sync_client.cc',
'browser/sync_file_system/drive_file_sync_client.h',
+ 'browser/sync_file_system/drive_file_sync_util.cc',
+ 'browser/sync_file_system/drive_file_sync_util.h',
'browser/sync_file_system/drive_metadata_store.cc',
'browser/sync_file_system/drive_metadata_store.h',
'browser/sync_file_system/local_change_processor.h',
diff --git a/webkit/fileapi/syncable/sync_status_code.h b/webkit/fileapi/syncable/sync_status_code.h
index 23a0f66..2dcc1e8 100644
--- a/webkit/fileapi/syncable/sync_status_code.h
+++ b/webkit/fileapi/syncable/sync_status_code.h
@@ -48,6 +48,9 @@ enum SyncStatusCode {
SYNC_STATUS_ABORT = -103,
SYNC_STATUS_NO_CHANGE_TO_SYNC = -104,
SYNC_STATUS_RETRY = -105,
+ SYNC_STATUS_NETWORK_ERROR = -106,
+ SYNC_STATUS_AUTHENTICATION_FAILED = -107,
+ SYNC_STATUS_FAILED = -108
};
WEBKIT_STORAGE_EXPORT SyncStatusCode LevelDBStatusToSyncStatusCode(