Android Browser Compositor: Add ScheduleComposite() callback.
[chromium-blink-merge.git] / chromeos / network / network_sms_handler.h
blob5bbe09e8d1431e251eb445d16fd40fa1797e54d5
1 // Copyright (c) 2012 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.
5 #ifndef CHROMEOS_NETWORK_NETWORK_SMS_HANDLER_H_
6 #define CHROMEOS_NETWORK_NETWORK_SMS_HANDLER_H_
8 #include <string>
10 #include "base/memory/scoped_vector.h"
11 #include "base/memory/weak_ptr.h"
12 #include "base/observer_list.h"
13 #include "base/values.h"
14 #include "chromeos/chromeos_export.h"
15 #include "chromeos/dbus/dbus_method_call_status.h"
17 namespace chromeos {
19 // Class to watch sms without Libcros.
20 class CHROMEOS_EXPORT NetworkSmsHandler {
21 public:
22 static const char kNumberKey[];
23 static const char kTextKey[];
24 static const char kTimestampKey[];
26 class Observer {
27 public:
28 virtual ~Observer() {}
30 // Called when a new message arrives. |message| contains the message.
31 // The contents of the dictionary include the keys listed above.
32 virtual void MessageReceived(const base::DictionaryValue& message) = 0;
35 NetworkSmsHandler();
36 ~NetworkSmsHandler();
38 // Requests the devices from the netowork manager, sets up observers, and
39 // requests the initial list of messages. Any observers that wish to be
40 // notified with initial messages should be added before calling this.
41 void Init();
43 // Requests an immediate check for new messages.
44 void RequestUpdate();
46 void AddObserver(Observer* observer);
47 void RemoveObserver(Observer* observer);
49 private:
50 class NetworkSmsDeviceHandler;
51 class ModemManagerNetworkSmsDeviceHandler;
52 class ModemManager1NetworkSmsDeviceHandler;
54 // Called from NetworkSmsDeviceHandler when a message is received.
55 void NotifyMessageReceived(const base::DictionaryValue& message);
57 // Callback to handle the manager properties with the list of devices.
58 void ManagerPropertiesCallback(DBusMethodCallStatus call_status,
59 const base::DictionaryValue& properties);
61 // Callback to handle the device properties for |device_path|.
62 // A NetworkSmsDeviceHandler will be instantiated for each cellular device.
63 void DevicePropertiesCallback(const std::string& device_path,
64 DBusMethodCallStatus call_status,
65 const base::DictionaryValue& properties);
67 ObserverList<Observer> observers_;
68 ScopedVector<NetworkSmsDeviceHandler> device_handlers_;
69 base::WeakPtrFactory<NetworkSmsHandler> weak_ptr_factory_;
71 DISALLOW_COPY_AND_ASSIGN(NetworkSmsHandler);
74 } // namespace
76 #endif // CHROMEOS_NETWORK_NETWORK_SMS_HANDLER_H_