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_
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"
19 // Class to watch sms without Libcros.
20 class CHROMEOS_EXPORT NetworkSmsHandler
{
22 static const char kNumberKey
[];
23 static const char kTextKey
[];
24 static const char kTimestampKey
[];
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;
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.
43 // Requests an immediate check for new messages.
46 void AddObserver(Observer
* observer
);
47 void RemoveObserver(Observer
* observer
);
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
);
76 #endif // CHROMEOS_NETWORK_NETWORK_SMS_HANDLER_H_