summaryrefslogtreecommitdiffstats
path: root/chrome/browser/drive/fake_drive_service.cc
diff options
context:
space:
mode:
authorkinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-10 17:08:18 +0000
committerkinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-10 17:08:18 +0000
commit7fef56a153304dbe3321b66fc34bb9c28d32ced7 (patch)
treee4110eb364a66f7bf41d0f1bf22f95914cdf7ec9 /chrome/browser/drive/fake_drive_service.cc
parent6d817973ba3942b502ce32529c0e7b652b5ceb77 (diff)
downloadchromium_src-7fef56a153304dbe3321b66fc34bb9c28d32ced7.zip
chromium_src-7fef56a153304dbe3321b66fc34bb9c28d32ced7.tar.gz
chromium_src-7fef56a153304dbe3321b66fc34bb9c28d32ced7.tar.bz2
Implement DriveAppRegistry::UninstallApp() and GetAppList().
BUG=324166 Review URL: https://codereview.chromium.org/133123004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@244182 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/drive/fake_drive_service.cc')
-rw-r--r--chrome/browser/drive/fake_drive_service.cc30
1 files changed, 29 insertions, 1 deletions
diff --git a/chrome/browser/drive/fake_drive_service.cc b/chrome/browser/drive/fake_drive_service.cc
index 4829145..c763895 100644
--- a/chrome/browser/drive/fake_drive_service.cc
+++ b/chrome/browser/drive/fake_drive_service.cc
@@ -267,7 +267,12 @@ bool FakeDriveService::LoadAccountMetadataForWapi(
bool FakeDriveService::LoadAppListForDriveApi(
const std::string& relative_path) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- app_info_value_ = test_util::LoadJSONFile(relative_path);
+
+ // Load JSON data, which must be a dictionary.
+ scoped_ptr<base::Value> value = test_util::LoadJSONFile(relative_path);
+ CHECK_EQ(base::Value::TYPE_DICTIONARY, value->GetType());
+ app_info_value_.reset(
+ static_cast<base::DictionaryValue*>(value.release()));
return app_info_value_;
}
@@ -1261,6 +1266,29 @@ CancelCallback FakeDriveService::UninstallApp(
const google_apis::EntryActionCallback& callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(!callback.is_null());
+
+ // Find app_id from app_info_value_ and delete.
+ google_apis::GDataErrorCode error = google_apis::HTTP_NOT_FOUND;
+ if (offline_) {
+ error = google_apis::GDATA_NO_CONNECTION;
+ } else {
+ base::ListValue* items = NULL;
+ if (app_info_value_->GetList("items", &items)) {
+ for (size_t i = 0; i < items->GetSize(); ++i) {
+ base::DictionaryValue* item = NULL;
+ std::string id;
+ if (items->GetDictionary(i, &item) && item->GetString("id", &id) &&
+ id == app_id) {
+ if (items->Remove(i, NULL))
+ error = google_apis::HTTP_SUCCESS;
+ break;
+ }
+ }
+ }
+ }
+
+ base::MessageLoop::current()->PostTask(FROM_HERE,
+ base::Bind(callback, error));
return CancelCallback();
}