12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/chromeos/app_mode/kiosk_app_launch_error.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 71e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "base/prefs/scoped_user_pref_update.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/browser_process.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/chromeos/app_mode/kiosk_app_manager.h" 106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/grit/generated_resources.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace chromeos { 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Key under "kiosk" dictionary to store last launch error. 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const char kKeyLaunchError[] = "launch_error"; 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)std::string KioskAppLaunchError::GetErrorMessage(Error error) { 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) switch (error) { 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case NONE: 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return std::string(); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case HAS_PENDING_LAUNCH: 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case NOT_KIOSK_ENABLED: 30a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) case UNABLE_TO_RETRIEVE_HASH: 31424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) case POLICY_LOAD_FAILED: 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return l10n_util::GetStringUTF8(IDS_KIOSK_APP_FAILED_TO_LAUNCH); 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case CRYPTOHOMED_NOT_RUNNING: 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case ALREADY_MOUNTED: 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case UNABLE_TO_MOUNT: 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case UNABLE_TO_REMOVE: 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return l10n_util::GetStringUTF8(IDS_KIOSK_APP_ERROR_UNABLE_TO_MOUNT); 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case UNABLE_TO_INSTALL: 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return l10n_util::GetStringUTF8(IDS_KIOSK_APP_ERROR_UNABLE_TO_INSTALL); 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) case USER_CANCEL: 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return l10n_util::GetStringUTF8(IDS_KIOSK_APP_ERROR_USER_CANCEL); 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch case UNABLE_TO_DOWNLOAD: 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return l10n_util::GetStringUTF8(IDS_KIOSK_APP_ERROR_UNABLE_TO_DOWNLOAD); 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch case UNABLE_TO_LAUNCH: 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return l10n_util::GetStringUTF8(IDS_KIOSK_APP_ERROR_UNABLE_TO_LAUNCH); 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NOTREACHED() << "Unknown kiosk app launch error, error=" << error; 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return l10n_util::GetStringUTF8(IDS_KIOSK_APP_FAILED_TO_LAUNCH); 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void KioskAppLaunchError::Save(KioskAppLaunchError::Error error) { 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefService* local_state = g_browser_process->local_state(); 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DictionaryPrefUpdate dict_update(local_state, 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) KioskAppManager::kKioskDictionaryName); 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) dict_update->SetInteger(kKeyLaunchError, error); 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)KioskAppLaunchError::Error KioskAppLaunchError::Get() { 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefService* local_state = g_browser_process->local_state(); 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const base::DictionaryValue* dict = 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) local_state->GetDictionary(KioskAppManager::kKioskDictionaryName); 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int error; 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (dict->GetInteger(kKeyLaunchError, &error)) 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return static_cast<KioskAppLaunchError::Error>(error); 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return KioskAppLaunchError::NONE; 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void KioskAppLaunchError::Clear() { 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrefService* local_state = g_browser_process->local_state(); 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DictionaryPrefUpdate dict_update(local_state, 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) KioskAppManager::kKioskDictionaryName); 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) dict_update->Remove(kKeyLaunchError, NULL); 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace chromeos 87