Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(300)

Side by Side Diff: chromeos/network/network_sms_handler.h

Issue 12669004: Fix NetworkSmsHandler to observe Manager and improve API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chromeos/network/network_handler.cc ('k') | chromeos/network/network_sms_handler.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROMEOS_NETWORK_NETWORK_SMS_HANDLER_H_ 5 #ifndef CHROMEOS_NETWORK_NETWORK_SMS_HANDLER_H_
6 #define CHROMEOS_NETWORK_NETWORK_SMS_HANDLER_H_ 6 #define CHROMEOS_NETWORK_NETWORK_SMS_HANDLER_H_
7 7
8 #include <string> 8 #include <string>
9 9
10 #include "base/memory/scoped_vector.h" 10 #include "base/memory/scoped_vector.h"
11 #include "base/memory/weak_ptr.h" 11 #include "base/memory/weak_ptr.h"
12 #include "base/observer_list.h" 12 #include "base/observer_list.h"
13 #include "base/values.h"
14 #include "chromeos/chromeos_export.h" 13 #include "chromeos/chromeos_export.h"
15 #include "chromeos/dbus/dbus_method_call_status.h" 14 #include "chromeos/dbus/dbus_method_call_status.h"
15 #include "chromeos/dbus/shill_property_changed_observer.h"
16
17 namespace base {
18 class DictionaryValue;
19 class ListValue;
20 class Value;
21 }
16 22
17 namespace chromeos { 23 namespace chromeos {
18 24
19 // Class to watch sms without Libcros. 25 // Class to watch sms without Libcros.
20 class CHROMEOS_EXPORT NetworkSmsHandler { 26 class CHROMEOS_EXPORT NetworkSmsHandler : public ShillPropertyChangedObserver {
21 public: 27 public:
22 static const char kNumberKey[]; 28 static const char kNumberKey[];
23 static const char kTextKey[]; 29 static const char kTextKey[];
24 static const char kTimestampKey[]; 30 static const char kTimestampKey[];
25 31
26 class Observer { 32 class Observer {
27 public: 33 public:
28 virtual ~Observer() {} 34 virtual ~Observer() {}
29 35
30 // Called when a new message arrives. |message| contains the message. 36 // Called when a new message arrives. |message| contains the message.
31 // The contents of the dictionary include the keys listed above. 37 // The contents of the dictionary include the keys listed above.
32 virtual void MessageReceived(const base::DictionaryValue& message) = 0; 38 virtual void MessageReceived(const base::DictionaryValue& message) = 0;
33 }; 39 };
34 40
35 NetworkSmsHandler(); 41 virtual ~NetworkSmsHandler();
36 ~NetworkSmsHandler();
37 42
38 // Requests the devices from the netowork manager, sets up observers, and 43 // Requests an immediate check for new messages. If |request_existing| is
39 // requests the initial list of messages. Any observers that wish to be 44 // true then also requests to be notified for any already received messages.
40 // notified with initial messages should be added before calling this. 45 void RequestUpdate(bool request_existing);
41 void Init();
42
43 // Requests an immediate check for new messages.
44 void RequestUpdate();
45 46
46 void AddObserver(Observer* observer); 47 void AddObserver(Observer* observer);
47 void RemoveObserver(Observer* observer); 48 void RemoveObserver(Observer* observer);
48 49
50 // ShillPropertyChangedObserver
51 virtual void OnPropertyChanged(const std::string& name,
52 const base::Value& value) OVERRIDE;
53
49 private: 54 private:
55 friend class NetworkHandler;
56 friend class NetworkSmsHandlerTest;
57
50 class NetworkSmsDeviceHandler; 58 class NetworkSmsDeviceHandler;
51 class ModemManagerNetworkSmsDeviceHandler; 59 class ModemManagerNetworkSmsDeviceHandler;
52 class ModemManager1NetworkSmsDeviceHandler; 60 class ModemManager1NetworkSmsDeviceHandler;
53 61
54 // Called from NetworkSmsDeviceHandler when a message is received. 62 NetworkSmsHandler();
63
64 // Requests the devices from the network manager, sets up observers, and
65 // requests the initial list of messages.
66 void Init();
67
68 // Adds |message| to the list of received messages. If the length of the
69 // list exceeds the maximum number of retained messages, erase the least
70 // recently received message.
71 void AddReceivedMessage(const base::DictionaryValue& message);
72
73 // Notify observers that |message| was received.
55 void NotifyMessageReceived(const base::DictionaryValue& message); 74 void NotifyMessageReceived(const base::DictionaryValue& message);
56 75
76 // Called from NetworkSmsDeviceHandler when a message is received.
77 void MessageReceived(const base::DictionaryValue& message);
78
57 // Callback to handle the manager properties with the list of devices. 79 // Callback to handle the manager properties with the list of devices.
58 void ManagerPropertiesCallback(DBusMethodCallStatus call_status, 80 void ManagerPropertiesCallback(DBusMethodCallStatus call_status,
59 const base::DictionaryValue& properties); 81 const base::DictionaryValue& properties);
60 82
83 // Requests properties for each entry in |devices|.
84 void UpdateDevices(const base::ListValue* devices);
85
61 // Callback to handle the device properties for |device_path|. 86 // Callback to handle the device properties for |device_path|.
62 // A NetworkSmsDeviceHandler will be instantiated for each cellular device. 87 // A NetworkSmsDeviceHandler will be instantiated for each cellular device.
63 void DevicePropertiesCallback(const std::string& device_path, 88 void DevicePropertiesCallback(const std::string& device_path,
64 DBusMethodCallStatus call_status, 89 DBusMethodCallStatus call_status,
65 const base::DictionaryValue& properties); 90 const base::DictionaryValue& properties);
66 91
67 ObserverList<Observer> observers_; 92 ObserverList<Observer> observers_;
68 ScopedVector<NetworkSmsDeviceHandler> device_handlers_; 93 ScopedVector<NetworkSmsDeviceHandler> device_handlers_;
94 ScopedVector<base::DictionaryValue> received_messages_;
69 base::WeakPtrFactory<NetworkSmsHandler> weak_ptr_factory_; 95 base::WeakPtrFactory<NetworkSmsHandler> weak_ptr_factory_;
70 96
71 DISALLOW_COPY_AND_ASSIGN(NetworkSmsHandler); 97 DISALLOW_COPY_AND_ASSIGN(NetworkSmsHandler);
72 }; 98 };
73 99
74 } // namespace 100 } // namespace
75 101
76 #endif // CHROMEOS_NETWORK_NETWORK_SMS_HANDLER_H_ 102 #endif // CHROMEOS_NETWORK_NETWORK_SMS_HANDLER_H_
OLDNEW
« no previous file with comments | « chromeos/network/network_handler.cc ('k') | chromeos/network/network_sms_handler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698