OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_APP_MANAGER_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_APP_MANAGER_H_ |
6 #define CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_APP_MANAGER_H_ | 6 #define CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_APP_MANAGER_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 // be enabled on this machine. | 52 // be enabled on this machine. |
53 CONSUMER_KIOSK_AUTO_LAUNCH_DISABLED, | 53 CONSUMER_KIOSK_AUTO_LAUNCH_DISABLED, |
54 }; | 54 }; |
55 | 55 |
56 typedef base::Callback<void(bool success)> EnableKioskAutoLaunchCallback; | 56 typedef base::Callback<void(bool success)> EnableKioskAutoLaunchCallback; |
57 typedef base::Callback<void(ConsumerKioskAutoLaunchStatus status)> | 57 typedef base::Callback<void(ConsumerKioskAutoLaunchStatus status)> |
58 GetConsumerKioskAutoLaunchStatusCallback; | 58 GetConsumerKioskAutoLaunchStatusCallback; |
59 | 59 |
60 // Struct to hold app info returned from GetApps() call. | 60 // Struct to hold app info returned from GetApps() call. |
61 struct App { | 61 struct App { |
62 App(const KioskAppData& data, bool is_extension_pending); | 62 App(const KioskAppData& data, |
| 63 bool is_extension_pending, |
| 64 bool was_auto_launched_with_zero_delay); |
63 App(); | 65 App(); |
64 ~App(); | 66 ~App(); |
65 | 67 |
66 std::string app_id; | 68 std::string app_id; |
67 std::string user_id; | 69 std::string user_id; |
68 std::string name; | 70 std::string name; |
69 gfx::ImageSkia icon; | 71 gfx::ImageSkia icon; |
70 bool is_loading; | 72 bool is_loading; |
| 73 bool was_auto_launched_with_zero_delay; |
71 }; | 74 }; |
72 typedef std::vector<App> Apps; | 75 typedef std::vector<App> Apps; |
73 | 76 |
74 // Name of a dictionary that holds kiosk app info in Local State. | 77 // Name of a dictionary that holds kiosk app info in Local State. |
75 // Sample layout: | 78 // Sample layout: |
76 // "kiosk": { | 79 // "kiosk": { |
77 // "auto_login_enabled": true // | 80 // "auto_login_enabled": true // |
78 // } | 81 // } |
79 static const char kKioskDictionaryName[]; | 82 static const char kKioskDictionaryName[]; |
80 static const char kKeyApps[]; | 83 static const char kKeyApps[]; |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
116 | 119 |
117 // Sets |app_id| as the app to auto launch at start up. | 120 // Sets |app_id| as the app to auto launch at start up. |
118 void SetAutoLaunchApp(const std::string& app_id); | 121 void SetAutoLaunchApp(const std::string& app_id); |
119 | 122 |
120 // Returns true if there is a pending auto-launch request. | 123 // Returns true if there is a pending auto-launch request. |
121 bool IsAutoLaunchRequested() const; | 124 bool IsAutoLaunchRequested() const; |
122 | 125 |
123 // Returns true if owner/policy enabled auto launch. | 126 // Returns true if owner/policy enabled auto launch. |
124 bool IsAutoLaunchEnabled() const; | 127 bool IsAutoLaunchEnabled() const; |
125 | 128 |
| 129 // Returns true if current app was auto launched with zero delay. |
| 130 bool IsCurrentAppAutoLaunchedWithZeroDelay() const; |
| 131 |
126 // Enable auto launch setter. | 132 // Enable auto launch setter. |
127 void SetEnableAutoLaunch(bool value); | 133 void SetEnableAutoLaunch(bool value); |
128 | 134 |
129 // Adds/removes a kiosk app by id. When removed, all locally cached data | 135 // Adds/removes a kiosk app by id. When removed, all locally cached data |
130 // will be removed as well. | 136 // will be removed as well. |
131 void AddApp(const std::string& app_id); | 137 void AddApp(const std::string& app_id); |
132 void RemoveApp(const std::string& app_id); | 138 void RemoveApp(const std::string& app_id); |
133 | 139 |
134 // Gets info of all apps that have no meta data load error. | 140 // Gets info of all apps that have no meta data load error. |
135 void GetApps(Apps* apps) const; | 141 void GetApps(Apps* apps) const; |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 | 194 |
189 // Installs the validated external extension into cache. | 195 // Installs the validated external extension into cache. |
190 void PutValidatedExternalExtension( | 196 void PutValidatedExternalExtension( |
191 const std::string& app_id, | 197 const std::string& app_id, |
192 const base::FilePath& crx_path, | 198 const base::FilePath& crx_path, |
193 const std::string& version, | 199 const std::string& version, |
194 const ExternalCache::PutExternalExtensionCallback& callback); | 200 const ExternalCache::PutExternalExtensionCallback& callback); |
195 | 201 |
196 bool external_loader_created() const { return external_loader_created_; } | 202 bool external_loader_created() const { return external_loader_created_; } |
197 | 203 |
| 204 // Notifies the KioskAppManager that a given app was auto-launched |
| 205 // automatically with no delay on startup. Certain privacy-sensitive |
| 206 // kiosk-mode behavior (such as network reporting) is only enabled for |
| 207 // kiosk apps that are immediately auto-launched on startup. |
| 208 void SetAppWasAutoLaunchedWithZeroDelay(const std::string& app_id); |
| 209 |
198 private: | 210 private: |
199 friend struct base::DefaultLazyInstanceTraits<KioskAppManager>; | 211 friend struct base::DefaultLazyInstanceTraits<KioskAppManager>; |
200 friend struct base::DefaultDeleter<KioskAppManager>; | 212 friend struct base::DefaultDeleter<KioskAppManager>; |
201 friend class KioskAppManagerTest; | 213 friend class KioskAppManagerTest; |
202 friend class KioskTest; | 214 friend class KioskTest; |
203 friend class KioskUpdateTest; | 215 friend class KioskUpdateTest; |
204 | 216 |
205 enum AutoLoginState { | 217 enum AutoLoginState { |
206 AUTOLOGIN_NONE = 0, | 218 AUTOLOGIN_NONE = 0, |
207 AUTOLOGIN_REQUESTED = 1, | 219 AUTOLOGIN_REQUESTED = 1, |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 AutoLoginState GetAutoLoginState() const; | 266 AutoLoginState GetAutoLoginState() const; |
255 void SetAutoLoginState(AutoLoginState state); | 267 void SetAutoLoginState(AutoLoginState state); |
256 | 268 |
257 void GetCrxCacheDir(base::FilePath* cache_dir); | 269 void GetCrxCacheDir(base::FilePath* cache_dir); |
258 void GetCrxUnpackDir(base::FilePath* unpack_dir); | 270 void GetCrxUnpackDir(base::FilePath* unpack_dir); |
259 | 271 |
260 // True if machine ownership is already established. | 272 // True if machine ownership is already established. |
261 bool ownership_established_; | 273 bool ownership_established_; |
262 ScopedVector<KioskAppData> apps_; | 274 ScopedVector<KioskAppData> apps_; |
263 std::string auto_launch_app_id_; | 275 std::string auto_launch_app_id_; |
| 276 std::string currently_auto_launched_with_zero_delay_app_; |
264 ObserverList<KioskAppManagerObserver, true> observers_; | 277 ObserverList<KioskAppManagerObserver, true> observers_; |
265 | 278 |
266 scoped_ptr<CrosSettings::ObserverSubscription> | 279 scoped_ptr<CrosSettings::ObserverSubscription> |
267 local_accounts_subscription_; | 280 local_accounts_subscription_; |
268 scoped_ptr<CrosSettings::ObserverSubscription> | 281 scoped_ptr<CrosSettings::ObserverSubscription> |
269 local_account_auto_login_id_subscription_; | 282 local_account_auto_login_id_subscription_; |
270 | 283 |
271 scoped_ptr<ExternalCache> external_cache_; | 284 scoped_ptr<ExternalCache> external_cache_; |
272 | 285 |
273 scoped_ptr<KioskExternalUpdater> usb_stick_updater_; | 286 scoped_ptr<KioskExternalUpdater> usb_stick_updater_; |
274 | 287 |
275 // The extension external loader for installing kiosk app. | 288 // The extension external loader for installing kiosk app. |
276 bool external_loader_created_; | 289 bool external_loader_created_; |
277 base::WeakPtr<KioskAppExternalLoader> external_loader_; | 290 base::WeakPtr<KioskAppExternalLoader> external_loader_; |
278 | 291 |
279 DISALLOW_COPY_AND_ASSIGN(KioskAppManager); | 292 DISALLOW_COPY_AND_ASSIGN(KioskAppManager); |
280 }; | 293 }; |
281 | 294 |
282 } // namespace chromeos | 295 } // namespace chromeos |
283 | 296 |
284 #endif // CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_APP_MANAGER_H_ | 297 #endif // CHROME_BROWSER_CHROMEOS_APP_MODE_KIOSK_APP_MANAGER_H_ |
OLD | NEW |