Commit 097c1d40 authored by jglasgow@chromium.org's avatar jglasgow@chromium.org

NetworkSmsHandler: Use the ModemManager1 dbus interfaces

Adapt NetworkSmsHandler to monitor both the ModemManager and
ModemManager1 dbus interfaces for SMS messages.

BUG=chromium-os:28421
TEST=chromeos_unittests

Change-Id: Ifbbce68192a360240f519608d4bea46c30997493


Review URL: https://chromiumcodereview.appspot.com/10539007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@141732 0039d316-1c4b-4281-b951-d872f2087c98
parent efc3736e
This diff is collapsed.
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
#ifndef CHROMEOS_NETWORK_NETWORK_SMS_HANDLER_H_ #ifndef CHROMEOS_NETWORK_NETWORK_SMS_HANDLER_H_
#define CHROMEOS_NETWORK_NETWORK_SMS_HANDLER_H_ #define CHROMEOS_NETWORK_NETWORK_SMS_HANDLER_H_
#include <string>
#include "base/memory/scoped_vector.h" #include "base/memory/scoped_vector.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "base/observer_list.h" #include "base/observer_list.h"
...@@ -46,6 +48,8 @@ class CHROMEOS_EXPORT NetworkSmsHandler { ...@@ -46,6 +48,8 @@ class CHROMEOS_EXPORT NetworkSmsHandler {
private: private:
class NetworkSmsDeviceHandler; class NetworkSmsDeviceHandler;
class ModemManagerNetworkSmsDeviceHandler;
class ModemManager1NetworkSmsDeviceHandler;
// Called from NetworkSmsDeviceHandler when a message is received. // Called from NetworkSmsDeviceHandler when a message is received.
void NotifyMessageReceived(const base::DictionaryValue& message); void NotifyMessageReceived(const base::DictionaryValue& message);
......
...@@ -4,6 +4,9 @@ ...@@ -4,6 +4,9 @@
#include "chromeos/network/network_sms_handler.h" #include "chromeos/network/network_sms_handler.h"
#include <set>
#include <string>
#include "base/memory/scoped_ptr.h" #include "base/memory/scoped_ptr.h"
#include "base/message_loop.h" #include "base/message_loop.h"
#include "chromeos/dbus/dbus_thread_manager.h" #include "chromeos/dbus/dbus_thread_manager.h"
...@@ -15,17 +18,28 @@ namespace { ...@@ -15,17 +18,28 @@ namespace {
class TestObserver : public NetworkSmsHandler::Observer { class TestObserver : public NetworkSmsHandler::Observer {
public: public:
TestObserver() : message_count_(0) {} TestObserver() {}
virtual ~TestObserver() {} virtual ~TestObserver() {}
virtual void MessageReceived(const base::DictionaryValue& message) OVERRIDE { virtual void MessageReceived(const base::DictionaryValue& message) OVERRIDE {
++message_count_; std::string text;
if (message.GetStringWithoutPathExpansion(
NetworkSmsHandler::kTextKey, &text)) {
messages_.insert(text);
}
}
void ClearMessages() {
messages_.clear();
} }
int message_count() { return message_count_; } int message_count() { return messages_.size(); }
const std::set<std::string>& messages() const {
return messages_;
}
private: private:
int message_count_; std::set<std::string> messages_;
}; };
} // namespace } // namespace
...@@ -50,17 +64,29 @@ class NetworkSmsHandlerTest : public testing::Test { ...@@ -50,17 +64,29 @@ class NetworkSmsHandlerTest : public testing::Test {
TEST_F(NetworkSmsHandlerTest, SmsHandlerDbusStub) { TEST_F(NetworkSmsHandlerTest, SmsHandlerDbusStub) {
// This relies on the stub dbus implementations for FlimflamManagerClient, // This relies on the stub dbus implementations for FlimflamManagerClient,
// FlimflamDeviceClient, and GsmSMSClient. // FlimflamDeviceClient, GsmSMSClient, ModemMessagingClient and SMSClient.
// Initialize a sms handler. The stub dbus clients will send the first test // Initialize a sms handler. The stub dbus clients will not send the
// message when Gsm.SMS.List is called in NetworkSmsHandler::Init. // first test message until RequestUpdate has been called.
scoped_ptr<NetworkSmsHandler> sms_handler(new NetworkSmsHandler()); scoped_ptr<NetworkSmsHandler> sms_handler(new NetworkSmsHandler());
scoped_ptr<TestObserver> test_observer(new TestObserver()); scoped_ptr<TestObserver> test_observer(new TestObserver());
sms_handler->AddObserver(test_observer.get()); sms_handler->AddObserver(test_observer.get());
sms_handler->Init(); sms_handler->Init();
message_loop_.RunAllPending(); message_loop_.RunAllPending();
EXPECT_EQ(test_observer->message_count(), 0);
// Test that no messages have been received yet
const std::set<std::string>& messages(test_observer->messages());
// Note: The following string corresponds to values in
// ModemMessagingClientStubImpl and SmsClientStubImpl.
const char kMessage1[] = "SMSClientStubImpl: Test Message: /SMS/0";
EXPECT_EQ(messages.find(kMessage1), messages.end());
// Test for messages delivered by signals.
test_observer->ClearMessages();
sms_handler->RequestUpdate(); sms_handler->RequestUpdate();
message_loop_.RunAllPending(); message_loop_.RunAllPending();
EXPECT_GE(test_observer->message_count(), 1); EXPECT_GE(test_observer->message_count(), 1);
EXPECT_NE(messages.find(kMessage1), messages.end());
} }
} // namespace chromeos } // namespace chromeos
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment