diff options
author | kinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-15 03:04:47 +0000 |
---|---|---|
committer | kinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-15 03:04:47 +0000 |
commit | d416af9310fdd6ab0c441ef15facaf1785eb5391 (patch) | |
tree | 520fbd751584f5705b9c0c51a748f5cfaf496f2a /chrome/browser/drive/fake_drive_service.cc | |
parent | a7437a799a6baabdc040fac48dcf9e839fd4dbda (diff) | |
download | chromium_src-d416af9310fdd6ab0c441ef15facaf1785eb5391.zip chromium_src-d416af9310fdd6ab0c441ef15facaf1785eb5391.tar.gz chromium_src-d416af9310fdd6ab0c441ef15facaf1785eb5391.tar.bz2 |
Implement DriveAppRegistry::UninstallApp() and GetAppList().
BUG=324166
First Commit: https://src.chromium.org/viewvc/chrome?view=rev&revision=244182
Reverted: https://src.chromium.org/viewvc/chrome?view=rev&revision=244189
R=hashimoto@chromium.org
Review URL: https://codereview.chromium.org/133123004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@244824 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(); } |