Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3057)

Unified Diff: chrome/browser/chromeos/extensions/external_cache.cc

Issue 300843013: Install and launch kiosk app from cached crx file at start up. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/extensions/external_cache.cc
diff --git a/chrome/browser/chromeos/extensions/external_cache.cc b/chrome/browser/chromeos/extensions/external_cache.cc
index 1f8fcaab99dee624ff3868c1c849fb6a59d642f9..cfb6c3c295fbb0dec32a1ca85a975adf01feb4de 100644
--- a/chrome/browser/chromeos/extensions/external_cache.cc
+++ b/chrome/browser/chromeos/extensions/external_cache.cc
@@ -58,6 +58,7 @@ void ExternalCache::Shutdown(const base::Closure& callback) {
void ExternalCache::UpdateExtensionsList(
scoped_ptr<base::DictionaryValue> prefs) {
extensions_ = prefs.Pass();
+ extensions_status_.clear();
if (extensions_->empty()) {
// If list of know extensions is empty, don't init cache on disk. It is
@@ -151,13 +152,17 @@ void ExternalCache::OnExtensionDownloadFailed(
if (!cached_extensions_->HasKey(id)) {
LOG(ERROR) << "ExternalCache extension " << id
<< " not found on update server";
+ extensions_status_[id] = DOWNLOAD_FAILED;
delegate_->OnExtensionDownloadFailed(id, error);
} else {
+ // No version update for an already cached extension.
+ extensions_status_[id] = DOWNLOAD_SUCCEEDED;
delegate_->OnExtensionLoadedInCache(id);
}
} else {
LOG(ERROR) << "ExternalCache failed to download extension " << id
<< ", error " << error;
+ extensions_status_[id] = DOWNLOAD_FAILED;
delegate_->OnExtensionDownloadFailed(id, error);
}
}
@@ -179,7 +184,15 @@ void ExternalCache::OnExtensionDownloadFinished(
bool ExternalCache::IsExtensionPending(const std::string& id) {
// Pending means that there is no installed version yet.
- return extensions_->HasKey(id) && !cached_extensions_->HasKey(id);
+ return extensions_->HasKey(id) && !cached_extensions_->HasKey(id) &&
+ extensions_status_.find(id) != extensions_status_.end() &&
+ extensions_status_[id] != DOWNLOAD_FAILED;
xiyuan 2014/05/29 19:49:01 Not sure if we should change this. Other call site
jennyz 2014/07/07 21:11:12 removed the change from this function.
+}
+
+bool ExternalCache::IsExtensionPendingForUpdateCheck(const std::string& id) {
+ return extensions_->HasKey(id) && cached_extensions_->HasKey(id) &&
+ extensions_status_.find(id) != extensions_status_.end() &&
+ extensions_status_[id] == DOWNLOAD_PENDING;
}
bool ExternalCache::GetExtensionExistingVersion(const std::string& id,
@@ -213,6 +226,7 @@ void ExternalCache::CheckCache() {
}
cached_extensions_->Clear();
+ extensions_status_.clear();
for (base::DictionaryValue::Iterator it(*extensions_.get());
!it.IsAtEnd(); it.Advance()) {
const base::DictionaryValue* entry = NULL;
@@ -234,8 +248,10 @@ void ExternalCache::CheckCache() {
else if (always_check_updates_)
update_url = extension_urls::GetWebstoreUpdateUrl();
- if (update_url.is_valid())
+ if (update_url.is_valid()) {
downloader_->AddPendingExtension(it.key(), update_url, 0);
+ extensions_status_[it.key()] = DOWNLOAD_PENDING;
+ }
}
base::FilePath file_path;
@@ -315,6 +331,7 @@ void ExternalCache::OnPutExtension(const std::string& id,
file_path.value());
cached_extensions_->Set(id, entry);
+ extensions_status_[id] = DOWNLOAD_SUCCEEDED;
if (delegate_)
delegate_->OnExtensionLoadedInCache(id);
UpdateExtensionLoader();

Powered by Google App Engine
This is Rietveld 408576698