summaryrefslogtreecommitdiffstats
path: root/dbus/bus.h
Commit message (Collapse)AuthorAgeFilesLines
* dbus: expose bus connection unique namezqiu2015-07-081-0/+4
| | | | | | | | | | | | | Add an API to Bus class to expose the unique name of the bus connection. The function will return an empty string if bus connection is not established. BUG=chromium:507718 TEST=unittest Review URL: https://codereview.chromium.org/1222073003 Cr-Commit-Position: refs/heads/master@{#337732}
* Exit chrome when dbus-daemon crasheshashimoto2014-12-091-10/+0
| | | | | | | | BUG=432980 Review URL: https://codereview.chromium.org/746373003 Cr-Commit-Position: refs/heads/master@{#307419}
* Remove dbus::ObjectProxy::filter_added_hashimoto2014-12-041-5/+4
| | | | | | | | | | Bus::Add/RemoveFilterFunction is already performing duplication check. BUG=None Review URL: https://codereview.chromium.org/747903004 Cr-Commit-Position: refs/heads/master@{#306781}
* dbus::ObjectManager: Add a match rule for properties before GetManagedObjects.armansito2014-09-051-2/+16
| | | | | | | | | | | | | | | | | | | There is a race condition in the way that match rules get set up for object proxies created in response to GetManagedObjects that may cause us the miss PropertiesChanged signals if they're received before the match rule and filter function get added by ObjectProxy. This patch changes this to work the "intended" way: ObjectManager now adds a single match rule for its corresponding service name, and specifically for the org.freedesktop.DBus.Properties.PropertiesChanged signal. Once it receives the signal, ObjectManager dispatches the signal to the corresponding PropertySet. BUG=407109,400768 TEST=dbus_unittests Review URL: https://codereview.chromium.org/510863002 Cr-Commit-Position: refs/heads/master@{#293551}
* dbus: Add comments about the right way to expose methodssatorux@chromium.org2014-01-091-0/+4
| | | | | | | | | | | Along the way, fix the order in the test service used in unit tests. BUG=332120 TEST=dbus_unittests pass as before Review URL: https://codereview.chromium.org/125673003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@243770 0039d316-1c4b-4281-b951-d872f2087c98
* dbus: Replace PostTaskTo*Thread methods with Get*TaskRunnerhashimoto@chromium.org2013-09-261-26/+6
| | | | | | | | | | | | | By exposing TaskRunners, we'll be able to use utility functions like base::PostTaskAndReplyWithResult BUG=None TEST=git cl try R=satorux@chromium.org Review URL: https://codereview.chromium.org/24554002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@225324 0039d316-1c4b-4281-b951-d872f2087c98
* Allow Chromium's DBus service ownership to be stealablecmasone@chromium.org2013-07-311-1/+20
| | | | | | | | | | | | | | | | | | | | | | | | We've seen some cases in tests where a Chromium process winds up in a temporarily unkillable state, causing the dbus-daemon to believe that it still actively owns org.chromium.LibCrosService. This makes attempts to restart the UI fail, as the browser dies when it cannot take ownership of this service name. The reason it can't is because Chromium currently doesn't allow other processes to steal ownership -- and the unkillable process is holding onto the token. This can be remedied by providing certain options when ownership of the service name is taken, options that allow other processes to seize ownership if they so choose. The ramifications of this are discussed further in the bug. BUG=chromium:261381 TEST=new unit test in dbus_unittest TEST=run the following as chronos on a device: "gdbus call --system --dest org.freedesktop.DBus --object-path /org/freedesktop/DBus --method org.freedesktop.DBus.RequestName org.chromium.LibCrosService 7" TEST=This should return (uint32 1,) Review URL: https://chromiumcodereview.appspot.com/20555003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@214589 0039d316-1c4b-4281-b951-d872f2087c98
* Linux/CrOS: Listen for mtpd service owner change events and communicate with ↵thestig@chromium.org2013-06-101-2/+53
| | | | | | | | | | | | | the new service owner. The mtpd dbus service may not start right away. Any attempts to use it may be racy due to the lack of a service owner. Listening for service owner changes fixes this race. BUG=241302 TEST=Manual, see bug for repro case. Review URL: https://chromiumcodereview.appspot.com/15741025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@205331 0039d316-1c4b-4281-b951-d872f2087c98
* dbus: adding PostTaskToDBusThreadAndReplyharuki@chromium.org2013-05-081-0/+7
| | | | | | | | | | | | This CL only adds a util method. BUG=172821 TEST=unittests R=satorux@chromium.org Review URL: https://codereview.chromium.org/14985008 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@198876 0039d316-1c4b-4281-b951-d872f2087c98
* Add a method to check if a D-Bus service has an owner. Use it for mtpd.thestig@chromium.org2013-05-041-0/+30
| | | | | | | | BUG=181064 Review URL: https://chromiumcodereview.appspot.com/14568005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@198328 0039d316-1c4b-4281-b951-d872f2087c98
* Support D-Bus Object Managerkeybuk@chromium.org2013-03-251-0/+39
| | | | | | | | | | | | | | | | | Object Manager is a new standard D-Bus interface, closely related to the Properties interface. It is used by BlueZ 5.x thus the need to implement it now. The intended use is that Chrome D-Bus Client singletons set up a link to an object manager in their constructor and register themselves to handle their particular interface. BUG=220951 TEST=dbus_unittests Review URL: https://codereview.chromium.org/12491014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@190440 0039d316-1c4b-4281-b951-d872f2087c98
* DBus: Use TaskRunners instead of MessageLoopProxies.thestig@chromium.org2013-02-201-23/+26
| | | | | | Review URL: https://chromiumcodereview.appspot.com/12255043 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@183362 0039d316-1c4b-4281-b951-d872f2087c98
* Supporting callback for Disconnected signal.nona@chromium.org2013-02-151-0/+14
| | | | | | | | | | | | | If the connection with dbus-daemon is closed, callback function set with SetDisconnectedCallback will be called. BUG=None TEST=ran dbus_unittests Review URL: https://chromiumcodereview.appspot.com/12224139 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@182736 0039d316-1c4b-4281-b951-d872f2087c98
* Call get_dispatch_status function to handle Disconnected signal.nona@chromium.org2013-02-081-0/+13
| | | | | | | | | | | | | It turns out that dbus_connection_get_dispatch_status should be called even if the connection is lost, otherwise we miss "Disconnected" signal. BUG=174431 TEST=Manually done on alex and ran dbus_unittests. Review URL: https://chromiumcodereview.appspot.com/12211022 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@181479 0039d316-1c4b-4281-b951-d872f2087c98
* DBus: Bus::AddMatch and RemoveMatch support repeated rules.deymo@chromium.org2013-01-311-4/+8
| | | | | | | | | | | | | | This fix counts the number of times the same rule is added to a dbus::Bus and removes the rule from the real DBus connection when all the copies of the same match rule have been removed. BUG=chromium:173054 TEST=BusTest.DoubleAddAndRemoveMatch passes. Review URL: https://chromiumcodereview.appspot.com/12088068 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@179809 0039d316-1c4b-4281-b951-d872f2087c98
* D-Bus: ObjectProxy remove function for Bus object.deymo@chromium.org2013-01-291-5/+42
| | | | | | | | | | | | | | | | This implements a remove function for an ObjectProxy owned by a bus object. Although the Bus object removes all the objects at shutdown, this functions permits to reduce the memory usage for objects no longer needed and reduce the number of dbus matching rules used in the bus connection. BUG=chromium:170182 TEST=BusTest.RemoveObjectProxy (run out/Debug/dbus_unittests) Review URL: https://chromiumcodereview.appspot.com/12022004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@179400 0039d316-1c4b-4281-b951-d872f2087c98
* dbus: Make it possible to build as shared_library.tfarina@chromium.org2012-11-051-2/+3
| | | | | | | | | | BUG=158887 R=satorux@chromium.org NOTRY=true Review URL: https://chromiumcodereview.appspot.com/11364033 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165893 0039d316-1c4b-4281-b951-d872f2087c98
* Remove the rest of #pragma once in one big CL.ajwong@chromium.org2012-07-111-1/+0
| | | | | | | | | For context see this thread: https://groups.google.com/a/chromium.org/forum/?fromgroups#!topic/chromium-dev/RMcVNGjB4II TBR=thakis,pkasting,jam git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146163 0039d316-1c4b-4281-b951-d872f2087c98
* Extends dbus module to accept user specified addresses.nona@chromium.org2012-04-191-2/+24
| | | | | | | | | | | | | | To connect ibus-daemon, needs to extend dbus module to accept user specified addresses. The ibus provides text inputting features and it is already used in Chrome OS. The ibus uses dbus protocol but using the ibus-daemon instead of the dbus-daemon. BUG=chromium-os:26334 TEST=ran dbus_unittests Review URL: http://codereview.chromium.org/10021044 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@132933 0039d316-1c4b-4281-b951-d872f2087c98
* dbus: allow unregistering of exported objectskeybuk@chromium.org2012-03-141-0/+13
| | | | | | | | | | | | | | | | Not all objects are permanent, some are transient and if we ever re-use the object path, we want a new instance of the exported object to be created rather than re-use an existing one. BUG=chromium-os:21320 TEST=dbus_unittests and included change to agent service provider Change-Id: I09882bbe2f70356182ac301c4260473051333424 Review URL: http://codereview.chromium.org/9691025 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@126527 0039d316-1c4b-4281-b951-d872f2087c98
* Convert uses of int ms to TimeDelta in dbus.tedvessenes@gmail.com2012-03-111-1/+1
| | | | | | | | | | R=satorux@chromium.org BUG=108171 Review URL: http://codereview.chromium.org/9582044 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@126055 0039d316-1c4b-4281-b951-d872f2087c98
* dbus: remove service name from ExportedObjectkeybuk@chromium.org2012-03-101-8/+31
| | | | | | | | | | | | | | | | | | | | | | | | Well-known names in D-Bus are merely aliases to unique connection ids maintained by the bus, they have no purpose in qualifying object paths or interfaces and it's perfectly legimiate for a client to make requests to the unique connection id (e.g. in response to a signal, which does not reference the well-known name of the origin connection). Remove the service_name member from dbus::ExportedObject, from its constructor and from dbus::Bus::GetExportedObject and require code to call dbus::Bus::RequestOwnership if a well-known name is desired. This requires making that function callable from the origin thread with a callback for the return value. BUG=chromium-os:27101 TEST=dbus_unittests Change-Id: Ib91de8b68ad9c3b432e224a2c715f0c2ca1af463 Review URL: http://codereview.chromium.org/9668018 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@125970 0039d316-1c4b-4281-b951-d872f2087c98
* dbus: add ObjectPath typekeybuk@google.com2012-02-141-7/+8
| | | | | | | | | | | | | | | | | | Rather than use std::string for object paths, add a dbus::ObjectPath type that wraps one while allowing more type-safety. This solves all sorts of issues with confusing object paths for strings, and allows us to do Properties code using templates disambiguating them from strings. BUG=chromium:109194 TEST=built and run tests Change-Id: Icaf6f19daea4af23a9d2ec0ed76d2cbd379d680e Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=121920 Review URL: https://chromiumcodereview.appspot.com/9378039 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@121941 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 121920 - dbus: add ObjectPath typedpapad@chromium.org2012-02-141-8/+7
| | | | | | | | | | | | | | | | | | | | Rather than use std::string for object paths, add a dbus::ObjectPath type that wraps one while allowing more type-safety. This solves all sorts of issues with confusing object paths for strings, and allows us to do Properties code using templates disambiguating them from strings. BUG=chromium:109194 TEST=built and run tests Change-Id: Icaf6f19daea4af23a9d2ec0ed76d2cbd379d680e Review URL: http://codereview.chromium.org/9378039 TBR=keybuk@chromium.org Review URL: https://chromiumcodereview.appspot.com/9363045 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@121923 0039d316-1c4b-4281-b951-d872f2087c98
* dbus: add ObjectPath typekeybuk@chromium.org2012-02-141-7/+8
| | | | | | | | | | | | | | | | | Rather than use std::string for object paths, add a dbus::ObjectPath type that wraps one while allowing more type-safety. This solves all sorts of issues with confusing object paths for strings, and allows us to do Properties code using templates disambiguating them from strings. BUG=chromium:109194 TEST=built and run tests Change-Id: Icaf6f19daea4af23a9d2ec0ed76d2cbd379d680e Review URL: http://codereview.chromium.org/9378039 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@121920 0039d316-1c4b-4281-b951-d872f2087c98
* Allow dbus clients to silence logging when a service is unavailable.adamk@chromium.org2012-02-101-4/+13
| | | | | | | | BUG=109696 Review URL: https://chromiumcodereview.appspot.com/9373039 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@121544 0039d316-1c4b-4281-b951-d872f2087c98
* chrome: dbus: support asynchronous method repliesvlaviano@chromium.org2011-11-301-2/+6
| | | | | | | | | | | | BUG=chromium-os:23241 TEST=Unit tests and manual testing on device. Change-Id: Iab009ddbd12dea1e12299ae0ddccd4e430d9cf97 Review URL: http://codereview.chromium.org/8728020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@112131 0039d316-1c4b-4281-b951-d872f2087c98
* Revert 111479 - chrome: dbus: support asynchronous method repliesthestig@chromium.org2011-11-241-6/+2
| | | | | | | | | | | | | | | BUG=chromium-os:23241 TEST=Unit tests and manual testing on device. Change-Id: I4d665897687030f4ab2379e4f6ddb9b3ebe02af4 Review URL: http://codereview.chromium.org/8637002 TBR=vlaviano@chromium.org Review URL: http://codereview.chromium.org/8682032 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@111487 0039d316-1c4b-4281-b951-d872f2087c98
* chrome: dbus: support asynchronous method repliesvlaviano@chromium.org2011-11-241-2/+6
| | | | | | | | | | | | BUG=chromium-os:23241 TEST=Unit tests and manual testing on device. Change-Id: I4d665897687030f4ab2379e4f6ddb9b3ebe02af4 Review URL: http://codereview.chromium.org/8637002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@111479 0039d316-1c4b-4281-b951-d872f2087c98
* dbus: Eliminate an irrelevant LOG(ERROR) from Bus::AddMatch().satorux@chromium.org2011-10-121-1/+2
| | | | | | | | | | | | | | Clients of the library cannot tell if a match rule has been already added or not (we could expose such a function but not so useful). Hence LOG(ERROR) is irrelevant here. Also update the comment in bus.h. TEST=dbus_unittests BUG=none Review URL: http://codereview.chromium.org/8223021 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105205 0039d316-1c4b-4281-b951-d872f2087c98
* Eliminate a timed wait from ExportedObject::HandleMessage().satorux@chromium.org2011-10-071-0/+3
| | | | | | | | | | | | | | | | | Previouslly, we blocked in D-Bus thread until the method call is handled in the UI thread. Turned out this was a bad idea, and caused a crash when the UI thread is hanging (crosbug.com/21341). This patch will eliminate the timed wait and incoming methods will be handled completely asynchronously. BUG=chromium-os:21341 TEST=run dbus_unittests under valgrind Review URL: http://codereview.chromium.org/8175009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104497 0039d316-1c4b-4281-b951-d872f2087c98
* Fix a bug in dbus::Bus::AddFilterFunction().satorux@chromium.org2011-10-061-5/+9
| | | | | | | | | | | We should not reject the same function if it's associated with different data. BUG=99258 TEST=adde a unit test and confirmed it passed. Review URL: http://codereview.chromium.org/8161005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104208 0039d316-1c4b-4281-b951-d872f2087c98
* Use MessageLoopProxy for the origin message loop as well.satorux@chromium.org2011-09-081-1/+1
| | | | | | | | | | | | | Inspired by mdm's patch to use the message loop proxy for the D-Bus thread. Using MessageLoopProxy is a great way to make shutdown safer. We should use this for the origin message loop as well. BUG=chromium:90036 TEST=dbus_unittests Review URL: http://codereview.chromium.org/7847013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@100279 0039d316-1c4b-4281-b951-d872f2087c98
* Linux: use MessageLoopProxy instead of base::Thread in our DBus client library. mdm@chromium.org2011-09-061-14/+15
| | | | | | | | | This allows us to use BrowserThread::GetMessageLoopProxyForThread() to specify the DBus thread. Also do a little bit of unrelated comment cleanup. BUG=90036 Review URL: http://codereview.chromium.org/7800023 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99794 0039d316-1c4b-4281-b951-d872f2087c98
* Add Bus::ShutdownOnDBusThreadAndBlock() and remove bus::Shutdown()satorux@chromium.org2011-09-021-14/+20
| | | | | | | | | | | | | | | | This function is intended to use at the the very end of the browser shutdown, where it it makes more sense to shut down the bus synchronously, than trying to make it asynchronous. Remove Bus::Shutdown() as we are unlikely to need it for the production code. BUG=chromium:90036 TEST=dbus_unittests Review URL: http://codereview.chromium.org/7830009 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99331 0039d316-1c4b-4281-b951-d872f2087c98
* Fix typos in the D-Bus library.satorux@chromium.org2011-08-311-4/+4
| | | | | | | | | | | | Just wanted to remove the blank line in bus.h, but fixed typos along the way. BUG=chromium:90036 TEST=dbus_unittests Review URL: http://codereview.chromium.org/7792049 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@99006 0039d316-1c4b-4281-b951-d872f2087c98
* Minor cleanups and improvements for the D-Bus library.satorux@chromium.org2011-08-271-1/+7
| | | | | | | | | | | | | | | | | - Add mock_export_object.{cc,h} to dbus.gyp, which were missing. - Add a comment about shutdown of Bus in bus.h. - Update mock_unittest.cc to call ShutdownAndBlock(). - Replace DCHECKs with LOG(ERROR)s followed by early exit. - Add virtual to SetUp() and TearDown() in tests. - Renamed a member variable to make it clearer. BUG=chromium:90036 TEST=dbus_unittests Review URL: http://codereview.chromium.org/7745044 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98560 0039d316-1c4b-4281-b951-d872f2087c98
* Add mock classes for Bus, ObjectProxy, and ExportedObject.satorux@chromium.org2011-08-251-1/+4
| | | | | | | | | | | | Also add mock_unittest.cc that demonstrates how to mock synchronos and asynchronos D-Bus method calls. BUG=90036 TEST=dbus_unittests Review URL: http://codereview.chromium.org/7714030 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98188 0039d316-1c4b-4281-b951-d872f2087c98
* Reuse existing object proxies and exported objects, if these exist.satorux@chromium.org2011-08-231-8/+34
| | | | | | | | | | | | The Bus object shouldn't return new objects if the bus object already owns the requested object proxies, or the exported objects. BUG=90036 TEST=dbus_unittests Review URL: http://codereview.chromium.org/7702001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97898 0039d316-1c4b-4281-b951-d872f2087c98
* Add support for sending and receiving D-Bus signals.satorux@chromium.org2011-08-231-4/+71
| | | | | | | | | | | | | | | | ObjectProxy is used to receive signals from the remote object. ExportedObject is used to send signals from the exported object. Note that signals are asynchronos so we don't have a test in end_to_end_sync_unittest.cc BUG=90036 TEST=run unit tests Review URL: http://codereview.chromium.org/7655033 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97831 0039d316-1c4b-4281-b951-d872f2087c98
* Implement Bus and ObjectProxy classes for our D-Bus library.satorux@chromium.org2011-08-171-0/+367
ObjectProxy is used to access remote objects. ExportedObject is used to export objects to other D-Bus BUG=90036 TEST=run unit tests. The code is not yet used in Chrome. Review URL: http://codereview.chromium.org/7491029 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@97204 0039d316-1c4b-4281-b951-d872f2087c98