Home | History | Annotate | Download | only in app_mode
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/chromeos/app_mode/kiosk_app_launch_error.h"
      6 
      7 #include "chrome/browser/browser_process.h"
      8 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h"
      9 #include "chrome/browser/prefs/scoped_user_pref_update.h"
     10 #include "grit/generated_resources.h"
     11 #include "ui/base/l10n/l10n_util.h"
     12 
     13 namespace chromeos {
     14 
     15 namespace {
     16 
     17 // Key under "kiosk" dictionary to store last launch error.
     18 const char kKeyLaunchError[] = "launch_error";
     19 
     20 }  // namespace
     21 
     22 // static
     23 std::string KioskAppLaunchError::GetErrorMessage(Error error) {
     24   switch (error) {
     25     case NONE:
     26       return std::string();
     27 
     28     case HAS_PENDING_LAUNCH:
     29     case NOT_KIOSK_ENABLED:
     30     case UNABLE_TO_RETRIEVE_HASH:
     31       return l10n_util::GetStringUTF8(IDS_KIOSK_APP_FAILED_TO_LAUNCH);
     32 
     33     case CRYPTOHOMED_NOT_RUNNING:
     34     case ALREADY_MOUNTED:
     35     case UNABLE_TO_MOUNT:
     36     case UNABLE_TO_REMOVE:
     37       return l10n_util::GetStringUTF8(IDS_KIOSK_APP_ERROR_UNABLE_TO_MOUNT);
     38 
     39     case UNABLE_TO_INSTALL:
     40       return l10n_util::GetStringUTF8(IDS_KIOSK_APP_ERROR_UNABLE_TO_INSTALL);
     41 
     42     case USER_CANCEL:
     43       return l10n_util::GetStringUTF8(IDS_KIOSK_APP_ERROR_USER_CANCEL);
     44   }
     45 
     46   NOTREACHED() << "Unknown kiosk app launch error, error=" << error;
     47   return l10n_util::GetStringUTF8(IDS_KIOSK_APP_FAILED_TO_LAUNCH);
     48 }
     49 
     50 // static
     51 void KioskAppLaunchError::Save(KioskAppLaunchError::Error error) {
     52   PrefService* local_state = g_browser_process->local_state();
     53   DictionaryPrefUpdate dict_update(local_state,
     54                                    KioskAppManager::kKioskDictionaryName);
     55   dict_update->SetInteger(kKeyLaunchError, error);
     56 }
     57 
     58 // static
     59 KioskAppLaunchError::Error KioskAppLaunchError::Get() {
     60   PrefService* local_state = g_browser_process->local_state();
     61   const base::DictionaryValue* dict =
     62       local_state->GetDictionary(KioskAppManager::kKioskDictionaryName);
     63 
     64   int error;
     65   if (dict->GetInteger(kKeyLaunchError, &error))
     66     return static_cast<KioskAppLaunchError::Error>(error);
     67 
     68   return KioskAppLaunchError::NONE;
     69 }
     70 
     71 // static
     72 void KioskAppLaunchError::Clear() {
     73   PrefService* local_state = g_browser_process->local_state();
     74   DictionaryPrefUpdate dict_update(local_state,
     75                                    KioskAppManager::kKioskDictionaryName);
     76   dict_update->Remove(kKeyLaunchError, NULL);
     77 }
     78 
     79 }  // namespace chromeos
     80