Index: chrome/browser/chromeos/app_mode/kiosk_app_data.cc |
diff --git a/chrome/browser/chromeos/app_mode/kiosk_app_data.cc b/chrome/browser/chromeos/app_mode/kiosk_app_data.cc |
index 104a367a43fb59799d836abe64cc93bd4c9e7d2f..25f45dde000bcbbfc33e01b6b08b7834f5311b80 100644 |
--- a/chrome/browser/chromeos/app_mode/kiosk_app_data.cc |
+++ b/chrome/browser/chromeos/app_mode/kiosk_app_data.cc |
@@ -8,6 +8,7 @@ |
#include "base/bind.h" |
#include "base/file_util.h" |
+#include "base/json/json_writer.h" |
#include "base/memory/ref_counted_memory.h" |
#include "base/prefs/pref_service.h" |
#include "base/threading/sequenced_worker_pool.h" |
@@ -71,6 +72,12 @@ bool IsValidKioskAppManifest(const extensions::Manifest& manifest) { |
return false; |
} |
+std::string ValueToString(const base::Value* value) { |
+ std::string json; |
+ base::JSONWriter::Write(value, &json); |
+ return json; |
+} |
+ |
} // namespace |
//////////////////////////////////////////////////////////////////////////////// |
@@ -409,24 +416,21 @@ void KioskAppData::OnWebstoreResponseParseSuccess( |
webstore_fetcher_.reset(); |
std::string manifest; |
- if (!webstore_data->GetString(kManifestKey, &manifest)) { |
- OnWebstoreResponseParseFailure(kInvalidWebstoreResponseError); |
+ if (!CheckResponseKeyValue(data.get(), kManifestKey, &manifest)) |
return; |
- } |
- if (!webstore_data->GetString(kLocalizedNameKey, &name_)) { |
- OnWebstoreResponseParseFailure(kInvalidWebstoreResponseError); |
+ if (!CheckResponseKeyValue(data.get(), kLocalizedNameKey, &name_)) |
return; |
- } |
std::string icon_url_string; |
- if (!webstore_data->GetString(kIconUrlKey, &icon_url_string)) { |
- OnWebstoreResponseParseFailure(kInvalidWebstoreResponseError); |
+ if (!CheckResponseKeyValue(data.get(), kIconUrlKey, &icon_url_string)) |
return; |
- } |
+ |
GURL icon_url = GURL(extension_urls::GetWebstoreLaunchURL()).Resolve( |
icon_url_string); |
if (!icon_url.is_valid()) { |
+ LOG(ERROR) << "Webstore response error (icon url): " |
+ << ValueToString(data.get()); |
OnWebstoreResponseParseFailure(kInvalidWebstoreResponseError); |
return; |
} |
@@ -439,8 +443,22 @@ void KioskAppData::OnWebstoreResponseParseSuccess( |
} |
void KioskAppData::OnWebstoreResponseParseFailure(const std::string& error) { |
+ LOG(ERROR) << "Webstore failed for kiosk app " << app_id_ |
+ << ", " << error; |
webstore_fetcher_.reset(); |
SetStatus(STATUS_ERROR); |
} |
+bool KioskAppData::CheckResponseKeyValue(const base::DictionaryValue* response, |
+ const char* key, |
+ std::string* value) { |
+ if (!response->GetString(key, value)) { |
+ LOG(ERROR) << "Webstore response error (" << key |
+ << "): " << ValueToString(response); |
+ OnWebstoreResponseParseFailure(kInvalidWebstoreResponseError); |
+ return false; |
+ } |
+ return true; |
+} |
+ |
} // namespace chromeos |