Home | History | Annotate | Download | only in login
      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