Upstream version 9.37.197.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / chromeos / login / kiosk_app_menu_handler.cc
index 50295aa..4ab1f18 100644 (file)
@@ -37,14 +37,18 @@ const int kMaxAppIconSize = 160;
 
 }  // namespace
 
-KioskAppMenuHandler::KioskAppMenuHandler()
+KioskAppMenuHandler::KioskAppMenuHandler(
+    const scoped_refptr<NetworkStateInformer>& network_state_informer)
     : weak_ptr_factory_(this),
-      is_webui_initialized_(false) {
+      is_webui_initialized_(false),
+      network_state_informer_(network_state_informer) {
   KioskAppManager::Get()->AddObserver(this);
+  network_state_informer_->AddObserver(this);
 }
 
 KioskAppMenuHandler::~KioskAppMenuHandler() {
   KioskAppManager::Get()->RemoveObserver(this);
+  network_state_informer_->RemoveObserver(this);
 }
 
 void KioskAppMenuHandler::GetLocalizedStrings(
@@ -133,6 +137,7 @@ void KioskAppMenuHandler::HandleInitializeKioskApps(
     const base::ListValue* args) {
   is_webui_initialized_ = true;
   SendKioskApps();
+  UpdateState(ErrorScreenActor::ERROR_REASON_UPDATE);
 }
 
 void KioskAppMenuHandler::HandleKioskAppsLoaded(
@@ -165,4 +170,9 @@ void KioskAppMenuHandler::OnKioskAppDataChanged(const std::string& app_id) {
   SendKioskApps();
 }
 
+void KioskAppMenuHandler::UpdateState(ErrorScreenActor::ErrorReason reason) {
+  if (network_state_informer_->state() == NetworkStateInformer::ONLINE)
+    KioskAppManager::Get()->RetryFailedAppDataFetch();
+}
+
 }  // namespace chromeos