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