Index: chromeos/network/network_sms_handler.h |
diff --git a/chromeos/network/network_sms_handler.h b/chromeos/network/network_sms_handler.h |
index 5bbe09e8d1431e251eb445d16fd40fa1797e54d5..da4a10e735c5103e38e1515d8aec7c7de275fed2 100644 |
--- a/chromeos/network/network_sms_handler.h |
+++ b/chromeos/network/network_sms_handler.h |
@@ -10,14 +10,20 @@ |
#include "base/memory/scoped_vector.h" |
#include "base/memory/weak_ptr.h" |
#include "base/observer_list.h" |
-#include "base/values.h" |
#include "chromeos/chromeos_export.h" |
#include "chromeos/dbus/dbus_method_call_status.h" |
+#include "chromeos/dbus/shill_property_changed_observer.h" |
+ |
+namespace base { |
+class DictionaryValue; |
+class ListValue; |
+class Value; |
+} |
namespace chromeos { |
// Class to watch sms without Libcros. |
-class CHROMEOS_EXPORT NetworkSmsHandler { |
+class CHROMEOS_EXPORT NetworkSmsHandler : public ShillPropertyChangedObserver { |
public: |
static const char kNumberKey[]; |
static const char kTextKey[]; |
@@ -32,32 +38,51 @@ class CHROMEOS_EXPORT NetworkSmsHandler { |
virtual void MessageReceived(const base::DictionaryValue& message) = 0; |
}; |
- NetworkSmsHandler(); |
- ~NetworkSmsHandler(); |
- |
- // Requests the devices from the netowork manager, sets up observers, and |
- // requests the initial list of messages. Any observers that wish to be |
- // notified with initial messages should be added before calling this. |
- void Init(); |
+ virtual ~NetworkSmsHandler(); |
- // Requests an immediate check for new messages. |
- void RequestUpdate(); |
+ // Requests an immediate check for new messages. If |request_existing| is |
+ // true then also requests to be notified for any already received messages. |
+ void RequestUpdate(bool request_existing); |
void AddObserver(Observer* observer); |
void RemoveObserver(Observer* observer); |
+ // ShillPropertyChangedObserver |
+ virtual void OnPropertyChanged(const std::string& name, |
+ const base::Value& value) OVERRIDE; |
+ |
private: |
+ friend class NetworkHandler; |
+ friend class NetworkSmsHandlerTest; |
+ |
class NetworkSmsDeviceHandler; |
class ModemManagerNetworkSmsDeviceHandler; |
class ModemManager1NetworkSmsDeviceHandler; |
- // Called from NetworkSmsDeviceHandler when a message is received. |
+ NetworkSmsHandler(); |
+ |
+ // Requests the devices from the network manager, sets up observers, and |
+ // requests the initial list of messages. |
+ void Init(); |
+ |
+ // Adds |message| to the list of received messages. If the length of the |
+ // list exceeds the maximum number of retained messages, erase the least |
+ // recently received message. |
+ void AddReceivedMessage(const base::DictionaryValue& message); |
+ |
+ // Notify observers that |message| was received. |
void NotifyMessageReceived(const base::DictionaryValue& message); |
+ // Called from NetworkSmsDeviceHandler when a message is received. |
+ void MessageReceived(const base::DictionaryValue& message); |
+ |
// Callback to handle the manager properties with the list of devices. |
void ManagerPropertiesCallback(DBusMethodCallStatus call_status, |
const base::DictionaryValue& properties); |
+ // Requests properties for each entry in |devices|. |
+ void UpdateDevices(const base::ListValue* devices); |
+ |
// Callback to handle the device properties for |device_path|. |
// A NetworkSmsDeviceHandler will be instantiated for each cellular device. |
void DevicePropertiesCallback(const std::string& device_path, |
@@ -66,6 +91,7 @@ class CHROMEOS_EXPORT NetworkSmsHandler { |
ObserverList<Observer> observers_; |
ScopedVector<NetworkSmsDeviceHandler> device_handlers_; |
+ ScopedVector<base::DictionaryValue> received_messages_; |
base::WeakPtrFactory<NetworkSmsHandler> weak_ptr_factory_; |
DISALLOW_COPY_AND_ASSIGN(NetworkSmsHandler); |