diff options
author | kinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-10 17:08:18 +0000 |
---|---|---|
committer | kinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-10 17:08:18 +0000 |
commit | 7fef56a153304dbe3321b66fc34bb9c28d32ced7 (patch) | |
tree | e4110eb364a66f7bf41d0f1bf22f95914cdf7ec9 /chrome/browser/drive/fake_drive_service.cc | |
parent | 6d817973ba3942b502ce32529c0e7b652b5ceb77 (diff) | |
download | chromium_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.cc | 30 |
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(); } |