• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 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 #ifndef CHROMEOS_DBUS_SYSTEM_CLOCK_CLIENT_H_
6 #define CHROMEOS_DBUS_SYSTEM_CLOCK_CLIENT_H_
7 
8 #include "base/callback.h"
9 #include "chromeos/chromeos_export.h"
10 #include "chromeos/dbus/dbus_client.h"
11 
12 namespace chromeos {
13 
14 // SystemClockClient is used to communicate with the system clock.
15 class CHROMEOS_EXPORT SystemClockClient : public DBusClient {
16  public:
17   // Interface for observing changes from the system clock.
18   class Observer {
19    public:
20     // Called when the status is updated.
21     virtual void SystemClockUpdated();
22 
23     // Called when the system clock has become settable or unsettable, e.g.,
24     // when the clock syncs with or goes out of sync with the network.
25     virtual void SystemClockCanSetTimeChanged(bool can_set_time);
26 
27    protected:
~Observer()28     virtual ~Observer() {}
29   };
30 
31   virtual ~SystemClockClient();
32 
33   // Adds the given observer.
34   virtual void AddObserver(Observer* observer) = 0;
35   // Removes the given observer if this object has the observer.
36   virtual void RemoveObserver(Observer* observer) = 0;
37   // Returns true if this object has the given observer.
38   virtual bool HasObserver(Observer* observer) = 0;
39 
40   // Sets the system clock.
41   virtual void SetTime(int64 time_in_seconds) = 0;
42 
43   // Checks if the system time can be set.
44   virtual bool CanSetTime() = 0;
45 
46   // Creates the instance.
47   static SystemClockClient* Create();
48 
49  protected:
50   // Create() should be used instead.
51   SystemClockClient();
52 
53  private:
54   DISALLOW_COPY_AND_ASSIGN(SystemClockClient);
55 };
56 
57 }  // namespace chromeos
58 
59 #endif  // CHROMEOS_DBUS_SYSTEM_CLOCK_CLIENT_H_
60