• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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 #ifndef CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_DEMO_MODE_DETECTOR_H_
6 #define CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_DEMO_MODE_DETECTOR_H_
7 
8 #include <string>
9 
10 #include "base/memory/weak_ptr.h"
11 #include "base/time/time.h"
12 #include "base/timer/timer.h"
13 #include "chrome/browser/chromeos/idle_detector.h"
14 
15 class PrefRegistrySimple;
16 
17 namespace chromeos {
18 
19 // Helper for idle state and demo-mode detection.
20 // Should be initialized on OOBE start.
21 class DemoModeDetector {
22  public:
23   DemoModeDetector();
24   virtual ~DemoModeDetector();
25 
26   void InitDetection();
27   void StopDetection();
28 
29   // Registers the preference for derelict state.
30   static void RegisterPrefs(PrefRegistrySimple* registry);
31 
32  private:
33   void StartIdleDetection();
34   void StartOobeTimer();
35   void OnIdle();
36   void OnOobeTimerUpdate();
37   void SetupTimeouts();
38   bool IsDerelict();
39 
40   // Total time this machine has spent on OOBE.
41   base::TimeDelta time_on_oobe_;
42 
43   scoped_ptr<IdleDetector> idle_detector_;
44 
45   base::RepeatingTimer<DemoModeDetector> oobe_timer_;
46 
47   // Timeout to detect if the machine is in a derelict state.
48   base::TimeDelta derelict_detection_timeout_;
49 
50   // Timeout before showing our demo app if the machine is in a derelict state.
51   base::TimeDelta derelict_idle_timeout_;
52 
53   // Time between updating our total time on oobe.
54   base::TimeDelta oobe_timer_update_interval_;
55 
56   bool demo_launched_;
57 
58   base::WeakPtrFactory<DemoModeDetector> weak_ptr_factory_;
59 
60   DISALLOW_COPY_AND_ASSIGN(DemoModeDetector);
61 };
62 
63 }  // namespace chromeos
64 
65 #endif  // CHROME_BROWSER_UI_WEBUI_CHROMEOS_LOGIN_DEMO_MODE_DETECTOR_H_
66