- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / app_mode / kiosk_app_launch_error.cc
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 "base/prefs/scoped_user_pref_update.h"
8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/chromeos/app_mode/kiosk_app_manager.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     case POLICY_LOAD_FAILED:
32       return l10n_util::GetStringUTF8(IDS_KIOSK_APP_FAILED_TO_LAUNCH);
33
34     case CRYPTOHOMED_NOT_RUNNING:
35     case ALREADY_MOUNTED:
36     case UNABLE_TO_MOUNT:
37     case UNABLE_TO_REMOVE:
38       return l10n_util::GetStringUTF8(IDS_KIOSK_APP_ERROR_UNABLE_TO_MOUNT);
39
40     case UNABLE_TO_INSTALL:
41       return l10n_util::GetStringUTF8(IDS_KIOSK_APP_ERROR_UNABLE_TO_INSTALL);
42
43     case USER_CANCEL:
44       return l10n_util::GetStringUTF8(IDS_KIOSK_APP_ERROR_USER_CANCEL);
45   }
46
47   NOTREACHED() << "Unknown kiosk app launch error, error=" << error;
48   return l10n_util::GetStringUTF8(IDS_KIOSK_APP_FAILED_TO_LAUNCH);
49 }
50
51 // static
52 void KioskAppLaunchError::Save(KioskAppLaunchError::Error error) {
53   PrefService* local_state = g_browser_process->local_state();
54   DictionaryPrefUpdate dict_update(local_state,
55                                    KioskAppManager::kKioskDictionaryName);
56   dict_update->SetInteger(kKeyLaunchError, error);
57 }
58
59 // static
60 KioskAppLaunchError::Error KioskAppLaunchError::Get() {
61   PrefService* local_state = g_browser_process->local_state();
62   const base::DictionaryValue* dict =
63       local_state->GetDictionary(KioskAppManager::kKioskDictionaryName);
64
65   int error;
66   if (dict->GetInteger(kKeyLaunchError, &error))
67     return static_cast<KioskAppLaunchError::Error>(error);
68
69   return KioskAppLaunchError::NONE;
70 }
71
72 // static
73 void KioskAppLaunchError::Clear() {
74   PrefService* local_state = g_browser_process->local_state();
75   DictionaryPrefUpdate dict_update(local_state,
76                                    KioskAppManager::kKioskDictionaryName);
77   dict_update->Remove(kKeyLaunchError, NULL);
78 }
79
80 }  // namespace chromeos