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