15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROMEOS_DBUS_GSM_SMS_CLIENT_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROMEOS_DBUS_GSM_SMS_CLIENT_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chromeos/chromeos_export.h" 13424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "chromeos/dbus/dbus_client.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DictionaryValue; 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ListValue; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace dbus { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ObjectPath; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace chromeos { 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// GsmSMSClient is used to communicate with the 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// org.freedesktop.ModemManager.Modem.Gsm.SMS service. 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// All methods should be called from the origin thread (UI thread) which 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// initializes the DBusThreadManager instance. 30424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)class CHROMEOS_EXPORT GsmSMSClient : public DBusClient { 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef base::Callback<void(uint32 index, bool complete)> SmsReceivedHandler; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef base::Callback<void()> DeleteCallback; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef base::Callback<void(const base::DictionaryValue& sms)> GetCallback; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef base::Callback<void(const base::ListValue& result)> ListCallback; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~GsmSMSClient(); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Factory function, creates a new instance and returns ownership. 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // For normal usage, access the singleton via DBusThreadManager::Get(). 41a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) static GsmSMSClient* Create(); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sets SmsReceived signal handler. 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetSmsReceivedHandler(const std::string& service_name, 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const dbus::ObjectPath& object_path, 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const SmsReceivedHandler& handler) = 0; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Resets SmsReceived signal handler. 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ResetSmsReceivedHandler(const std::string& service_name, 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const dbus::ObjectPath& object_path) = 0; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Calls Delete method. |callback| is called after the method call succeeds. 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Delete(const std::string& service_name, 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const dbus::ObjectPath& object_path, 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32 index, 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const DeleteCallback& callback) = 0; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Calls Get method. |callback| is called after the method call succeeds. 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void Get(const std::string& service_name, 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const dbus::ObjectPath& object_path, 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32 index, 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GetCallback& callback) = 0; 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Calls List method. |callback| is called after the method call succeeds. 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void List(const std::string& service_name, 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const dbus::ObjectPath& object_path, 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ListCallback& callback) = 0; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Requests a check for new messages. In shill this does nothing. The 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // stub implementation uses it to generate a sequence of test messages. 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void RequestUpdate(const std::string& service_name, 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const dbus::ObjectPath& object_path) = 0; 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 75424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) friend class GsmSMSClientTest; 76424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create() should be used instead. 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GsmSMSClient(); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(GsmSMSClient); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace chromeos 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // CHROMEOS_DBUS_GSM_SMS_CLIENT_H_ 87