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

Side by Side Diff: dbus/bus.cc

Issue 24554002: dbus: Replace PostTaskTo*Thread methods with Get*TaskRunner (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 2 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 | « dbus/bus.h ('k') | dbus/end_to_end_async_unittest.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 #include "dbus/bus.h" 5 #include "dbus/bus.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/message_loop/message_loop_proxy.h" 10 #include "base/message_loop/message_loop_proxy.h"
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 AddRef(); // Balanced on Complete(). 117 AddRef(); // Balanced on Complete().
118 } 118 }
119 119
120 // Returns true if the timeout is ready to be monitored. 120 // Returns true if the timeout is ready to be monitored.
121 bool IsReadyToBeMonitored() { 121 bool IsReadyToBeMonitored() {
122 return dbus_timeout_get_enabled(raw_timeout_); 122 return dbus_timeout_get_enabled(raw_timeout_);
123 } 123 }
124 124
125 // Starts monitoring the timeout. 125 // Starts monitoring the timeout.
126 void StartMonitoring(Bus* bus) { 126 void StartMonitoring(Bus* bus) {
127 bus->PostDelayedTaskToDBusThread(FROM_HERE, 127 bus->GetDBusTaskRunner()->PostDelayedTask(
128 base::Bind(&Timeout::HandleTimeout, 128 FROM_HERE,
129 this), 129 base::Bind(&Timeout::HandleTimeout, this),
130 GetInterval()); 130 GetInterval());
131 monitoring_is_active_ = true; 131 monitoring_is_active_ = true;
132 } 132 }
133 133
134 // Stops monitoring the timeout. 134 // Stops monitoring the timeout.
135 void StopMonitoring() { 135 void StopMonitoring() {
136 // We cannot take back the delayed task we posted in 136 // We cannot take back the delayed task we posted in
137 // StartMonitoring(), so we just mark the monitoring is inactive now. 137 // StartMonitoring(), so we just mark the monitoring is inactive now.
138 monitoring_is_active_ = false; 138 monitoring_is_active_ = false;
139 } 139 }
140 140
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 int options, 259 int options,
260 const base::Closure& callback) { 260 const base::Closure& callback) {
261 AssertOnOriginThread(); 261 AssertOnOriginThread();
262 262
263 // Check if we have the requested object proxy. 263 // Check if we have the requested object proxy.
264 const ObjectProxyTable::key_type key(service_name + object_path.value(), 264 const ObjectProxyTable::key_type key(service_name + object_path.value(),
265 options); 265 options);
266 ObjectProxyTable::iterator iter = object_proxy_table_.find(key); 266 ObjectProxyTable::iterator iter = object_proxy_table_.find(key);
267 if (iter != object_proxy_table_.end()) { 267 if (iter != object_proxy_table_.end()) {
268 // Object is present. Remove it now and Detach in the DBus thread. 268 // Object is present. Remove it now and Detach in the DBus thread.
269 PostTaskToDBusThread(FROM_HERE, base::Bind( 269 GetDBusTaskRunner()->PostTask(
270 &Bus::RemoveObjectProxyInternal, 270 FROM_HERE,
271 this, iter->second, callback)); 271 base::Bind(&Bus::RemoveObjectProxyInternal,
272 this, iter->second, callback));
272 273
273 object_proxy_table_.erase(iter); 274 object_proxy_table_.erase(iter);
274 return true; 275 return true;
275 } 276 }
276 return false; 277 return false;
277 } 278 }
278 279
279 void Bus::RemoveObjectProxyInternal(scoped_refptr<ObjectProxy> object_proxy, 280 void Bus::RemoveObjectProxyInternal(scoped_refptr<ObjectProxy> object_proxy,
280 const base::Closure& callback) { 281 const base::Closure& callback) {
281 AssertOnDBusThread(); 282 AssertOnDBusThread();
282 283
283 object_proxy.get()->Detach(); 284 object_proxy.get()->Detach();
284 285
285 PostTaskToOriginThread(FROM_HERE, callback); 286 GetOriginTaskRunner()->PostTask(FROM_HERE, callback);
286 } 287 }
287 288
288 ExportedObject* Bus::GetExportedObject(const ObjectPath& object_path) { 289 ExportedObject* Bus::GetExportedObject(const ObjectPath& object_path) {
289 AssertOnOriginThread(); 290 AssertOnOriginThread();
290 291
291 // Check if we already have the requested exported object. 292 // Check if we already have the requested exported object.
292 ExportedObjectTable::iterator iter = exported_object_table_.find(object_path); 293 ExportedObjectTable::iterator iter = exported_object_table_.find(object_path);
293 if (iter != exported_object_table_.end()) { 294 if (iter != exported_object_table_.end()) {
294 return iter->second.get(); 295 return iter->second.get();
295 } 296 }
(...skipping 15 matching lines...) Expand all
311 return; 312 return;
312 313
313 scoped_refptr<ExportedObject> exported_object = iter->second; 314 scoped_refptr<ExportedObject> exported_object = iter->second;
314 exported_object_table_.erase(iter); 315 exported_object_table_.erase(iter);
315 316
316 // Post the task to perform the final unregistration to the D-Bus thread. 317 // Post the task to perform the final unregistration to the D-Bus thread.
317 // Since the registration also happens on the D-Bus thread in 318 // Since the registration also happens on the D-Bus thread in
318 // TryRegisterObjectPath(), and the task runner we post to is a 319 // TryRegisterObjectPath(), and the task runner we post to is a
319 // SequencedTaskRunner, there is a guarantee that this will happen before any 320 // SequencedTaskRunner, there is a guarantee that this will happen before any
320 // future registration call. 321 // future registration call.
321 PostTaskToDBusThread(FROM_HERE, 322 GetDBusTaskRunner()->PostTask(
322 base::Bind(&Bus::UnregisterExportedObjectInternal, 323 FROM_HERE,
323 this, exported_object)); 324 base::Bind(&Bus::UnregisterExportedObjectInternal,
325 this, exported_object));
324 } 326 }
325 327
326 void Bus::UnregisterExportedObjectInternal( 328 void Bus::UnregisterExportedObjectInternal(
327 scoped_refptr<ExportedObject> exported_object) { 329 scoped_refptr<ExportedObject> exported_object) {
328 AssertOnDBusThread(); 330 AssertOnDBusThread();
329 331
330 exported_object->Unregister(); 332 exported_object->Unregister();
331 } 333 }
332 334
333 ObjectManager* Bus::GetObjectManager(const std::string& service_name, 335 ObjectManager* Bus::GetObjectManager(const std::string& service_name,
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 } 480 }
479 481
480 connection_ = NULL; 482 connection_ = NULL;
481 shutdown_completed_ = true; 483 shutdown_completed_ = true;
482 } 484 }
483 485
484 void Bus::ShutdownOnDBusThreadAndBlock() { 486 void Bus::ShutdownOnDBusThreadAndBlock() {
485 AssertOnOriginThread(); 487 AssertOnOriginThread();
486 DCHECK(dbus_task_runner_.get()); 488 DCHECK(dbus_task_runner_.get());
487 489
488 PostTaskToDBusThread(FROM_HERE, base::Bind( 490 GetDBusTaskRunner()->PostTask(
489 &Bus::ShutdownOnDBusThreadAndBlockInternal, 491 FROM_HERE,
490 this)); 492 base::Bind(&Bus::ShutdownOnDBusThreadAndBlockInternal, this));
491 493
492 // http://crbug.com/125222 494 // http://crbug.com/125222
493 base::ThreadRestrictions::ScopedAllowWait allow_wait; 495 base::ThreadRestrictions::ScopedAllowWait allow_wait;
494 496
495 // Wait until the shutdown is complete on the D-Bus thread. 497 // Wait until the shutdown is complete on the D-Bus thread.
496 // The shutdown should not hang, but set timeout just in case. 498 // The shutdown should not hang, but set timeout just in case.
497 const int kTimeoutSecs = 3; 499 const int kTimeoutSecs = 3;
498 const base::TimeDelta timeout(base::TimeDelta::FromSeconds(kTimeoutSecs)); 500 const base::TimeDelta timeout(base::TimeDelta::FromSeconds(kTimeoutSecs));
499 const bool signaled = on_shutdown_.TimedWait(timeout); 501 const bool signaled = on_shutdown_.TimedWait(timeout);
500 LOG_IF(ERROR, !signaled) << "Failed to shutdown the bus"; 502 LOG_IF(ERROR, !signaled) << "Failed to shutdown the bus";
501 } 503 }
502 504
503 void Bus::RequestOwnership(const std::string& service_name, 505 void Bus::RequestOwnership(const std::string& service_name,
504 ServiceOwnershipOptions options, 506 ServiceOwnershipOptions options,
505 OnOwnershipCallback on_ownership_callback) { 507 OnOwnershipCallback on_ownership_callback) {
506 AssertOnOriginThread(); 508 AssertOnOriginThread();
507 509
508 PostTaskToDBusThread(FROM_HERE, base::Bind( 510 GetDBusTaskRunner()->PostTask(
509 &Bus::RequestOwnershipInternal, 511 FROM_HERE,
510 this, service_name, options, on_ownership_callback)); 512 base::Bind(&Bus::RequestOwnershipInternal,
513 this, service_name, options, on_ownership_callback));
511 } 514 }
512 515
513 void Bus::RequestOwnershipInternal(const std::string& service_name, 516 void Bus::RequestOwnershipInternal(const std::string& service_name,
514 ServiceOwnershipOptions options, 517 ServiceOwnershipOptions options,
515 OnOwnershipCallback on_ownership_callback) { 518 OnOwnershipCallback on_ownership_callback) {
516 AssertOnDBusThread(); 519 AssertOnDBusThread();
517 520
518 bool success = Connect(); 521 bool success = Connect();
519 if (success) 522 if (success)
520 success = RequestOwnershipAndBlock(service_name, options); 523 success = RequestOwnershipAndBlock(service_name, options);
521 524
522 PostTaskToOriginThread(FROM_HERE, 525 GetOriginTaskRunner()->PostTask(FROM_HERE,
523 base::Bind(on_ownership_callback, 526 base::Bind(on_ownership_callback,
524 service_name, 527 service_name,
525 success)); 528 success));
526 } 529 }
527 530
528 bool Bus::RequestOwnershipAndBlock(const std::string& service_name, 531 bool Bus::RequestOwnershipAndBlock(const std::string& service_name,
529 ServiceOwnershipOptions options) { 532 ServiceOwnershipOptions options) {
530 DCHECK(connection_); 533 DCHECK(connection_);
531 // dbus_bus_request_name() is a blocking call. 534 // dbus_bus_request_name() is a blocking call.
532 AssertOnDBusThread(); 535 AssertOnDBusThread();
533 536
534 // Check if we already own the service name. 537 // Check if we already own the service name.
535 if (owned_service_names_.find(service_name) != owned_service_names_.end()) { 538 if (owned_service_names_.find(service_name) != owned_service_names_.end()) {
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 // if the connection is lost. Otherwise we will miss "Disconnected" signal. 786 // if the connection is lost. Otherwise we will miss "Disconnected" signal.
784 // (crbug.com/174431) 787 // (crbug.com/174431)
785 if (dbus_connection_get_dispatch_status(connection_) == 788 if (dbus_connection_get_dispatch_status(connection_) ==
786 DBUS_DISPATCH_DATA_REMAINS) { 789 DBUS_DISPATCH_DATA_REMAINS) {
787 while (dbus_connection_dispatch(connection_) == 790 while (dbus_connection_dispatch(connection_) ==
788 DBUS_DISPATCH_DATA_REMAINS) { 791 DBUS_DISPATCH_DATA_REMAINS) {
789 } 792 }
790 } 793 }
791 } 794 }
792 795
793 void Bus::PostTaskToDBusThreadAndReply( 796 base::TaskRunner* Bus::GetDBusTaskRunner() {
794 const tracked_objects::Location& from_here, 797 if (dbus_task_runner_.get())
795 const base::Closure& task, 798 return dbus_task_runner_.get();
796 const base::Closure& reply) { 799 else
797 AssertOnOriginThread(); 800 return GetOriginTaskRunner();
798
799 if (dbus_task_runner_.get()) {
800 if (!dbus_task_runner_->PostTaskAndReply(from_here, task, reply)) {
801 LOG(WARNING) << "Failed to post a task to the D-Bus thread message loop";
802 }
803 } else {
804 DCHECK(origin_task_runner_.get());
805 if (!origin_task_runner_->PostTaskAndReply(from_here, task, reply)) {
806 LOG(WARNING) << "Failed to post a task to the origin message loop";
807 }
808 }
809 } 801 }
810 802
811 void Bus::PostTaskToOriginThread(const tracked_objects::Location& from_here, 803 base::TaskRunner* Bus::GetOriginTaskRunner() {
812 const base::Closure& task) {
813 DCHECK(origin_task_runner_.get()); 804 DCHECK(origin_task_runner_.get());
814 if (!origin_task_runner_->PostTask(from_here, task)) { 805 return origin_task_runner_.get();
815 LOG(WARNING) << "Failed to post a task to the origin message loop";
816 }
817 }
818
819 void Bus::PostTaskToDBusThread(const tracked_objects::Location& from_here,
820 const base::Closure& task) {
821 if (dbus_task_runner_.get()) {
822 if (!dbus_task_runner_->PostTask(from_here, task)) {
823 LOG(WARNING) << "Failed to post a task to the D-Bus thread message loop";
824 }
825 } else {
826 DCHECK(origin_task_runner_.get());
827 if (!origin_task_runner_->PostTask(from_here, task)) {
828 LOG(WARNING) << "Failed to post a task to the origin message loop";
829 }
830 }
831 }
832
833 void Bus::PostDelayedTaskToDBusThread(
834 const tracked_objects::Location& from_here,
835 const base::Closure& task,
836 base::TimeDelta delay) {
837 if (dbus_task_runner_.get()) {
838 if (!dbus_task_runner_->PostDelayedTask(
839 from_here, task, delay)) {
840 LOG(WARNING) << "Failed to post a task to the D-Bus thread message loop";
841 }
842 } else {
843 DCHECK(origin_task_runner_.get());
844 if (!origin_task_runner_->PostDelayedTask(from_here, task, delay)) {
845 LOG(WARNING) << "Failed to post a task to the origin message loop";
846 }
847 }
848 } 806 }
849 807
850 bool Bus::HasDBusThread() { 808 bool Bus::HasDBusThread() {
851 return dbus_task_runner_.get() != NULL; 809 return dbus_task_runner_.get() != NULL;
852 } 810 }
853 811
854 void Bus::AssertOnOriginThread() { 812 void Bus::AssertOnOriginThread() {
855 DCHECK_EQ(origin_thread_id_, base::PlatformThread::CurrentId()); 813 DCHECK_EQ(origin_thread_id_, base::PlatformThread::CurrentId());
856 } 814 }
857 815
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
901 std::string service_owner; 859 std::string service_owner;
902 if (!reader.PopString(&service_owner)) 860 if (!reader.PopString(&service_owner))
903 service_owner.clear(); 861 service_owner.clear();
904 return service_owner; 862 return service_owner;
905 } 863 }
906 864
907 void Bus::GetServiceOwner(const std::string& service_name, 865 void Bus::GetServiceOwner(const std::string& service_name,
908 const GetServiceOwnerCallback& callback) { 866 const GetServiceOwnerCallback& callback) {
909 AssertOnOriginThread(); 867 AssertOnOriginThread();
910 868
911 PostTaskToDBusThread( 869 GetDBusTaskRunner()->PostTask(
912 FROM_HERE, 870 FROM_HERE,
913 base::Bind(&Bus::GetServiceOwnerInternal, this, service_name, callback)); 871 base::Bind(&Bus::GetServiceOwnerInternal, this, service_name, callback));
914 } 872 }
915 873
916 void Bus::GetServiceOwnerInternal(const std::string& service_name, 874 void Bus::GetServiceOwnerInternal(const std::string& service_name,
917 const GetServiceOwnerCallback& callback) { 875 const GetServiceOwnerCallback& callback) {
918 AssertOnDBusThread(); 876 AssertOnDBusThread();
919 877
920 std::string service_owner; 878 std::string service_owner;
921 if (Connect()) 879 if (Connect())
922 service_owner = GetServiceOwnerAndBlock(service_name, SUPPRESS_ERRORS); 880 service_owner = GetServiceOwnerAndBlock(service_name, SUPPRESS_ERRORS);
923 PostTaskToOriginThread(FROM_HERE, base::Bind(callback, service_owner)); 881 GetOriginTaskRunner()->PostTask(FROM_HERE,
882 base::Bind(callback, service_owner));
924 } 883 }
925 884
926 void Bus::ListenForServiceOwnerChange( 885 void Bus::ListenForServiceOwnerChange(
927 const std::string& service_name, 886 const std::string& service_name,
928 const GetServiceOwnerCallback& callback) { 887 const GetServiceOwnerCallback& callback) {
929 AssertOnOriginThread(); 888 AssertOnOriginThread();
930 DCHECK(!service_name.empty()); 889 DCHECK(!service_name.empty());
931 DCHECK(!callback.is_null()); 890 DCHECK(!callback.is_null());
932 891
933 PostTaskToDBusThread(FROM_HERE, 892 GetDBusTaskRunner()->PostTask(
934 base::Bind(&Bus::ListenForServiceOwnerChangeInternal, 893 FROM_HERE,
935 this, service_name, callback)); 894 base::Bind(&Bus::ListenForServiceOwnerChangeInternal,
895 this, service_name, callback));
936 } 896 }
937 897
938 void Bus::ListenForServiceOwnerChangeInternal( 898 void Bus::ListenForServiceOwnerChangeInternal(
939 const std::string& service_name, 899 const std::string& service_name,
940 const GetServiceOwnerCallback& callback) { 900 const GetServiceOwnerCallback& callback) {
941 AssertOnDBusThread(); 901 AssertOnDBusThread();
942 DCHECK(!service_name.empty()); 902 DCHECK(!service_name.empty());
943 DCHECK(!callback.is_null()); 903 DCHECK(!callback.is_null());
944 904
945 if (!Connect() || !SetUpAsyncOperations()) 905 if (!Connect() || !SetUpAsyncOperations())
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
979 callbacks.push_back(callback); 939 callbacks.push_back(callback);
980 } 940 }
981 941
982 void Bus::UnlistenForServiceOwnerChange( 942 void Bus::UnlistenForServiceOwnerChange(
983 const std::string& service_name, 943 const std::string& service_name,
984 const GetServiceOwnerCallback& callback) { 944 const GetServiceOwnerCallback& callback) {
985 AssertOnOriginThread(); 945 AssertOnOriginThread();
986 DCHECK(!service_name.empty()); 946 DCHECK(!service_name.empty());
987 DCHECK(!callback.is_null()); 947 DCHECK(!callback.is_null());
988 948
989 PostTaskToDBusThread(FROM_HERE, 949 GetDBusTaskRunner()->PostTask(
990 base::Bind(&Bus::UnlistenForServiceOwnerChangeInternal, 950 FROM_HERE,
991 this, service_name, callback)); 951 base::Bind(&Bus::UnlistenForServiceOwnerChangeInternal,
952 this, service_name, callback));
992 } 953 }
993 954
994 void Bus::UnlistenForServiceOwnerChangeInternal( 955 void Bus::UnlistenForServiceOwnerChangeInternal(
995 const std::string& service_name, 956 const std::string& service_name,
996 const GetServiceOwnerCallback& callback) { 957 const GetServiceOwnerCallback& callback) {
997 AssertOnDBusThread(); 958 AssertOnDBusThread();
998 DCHECK(!service_name.empty()); 959 DCHECK(!service_name.empty());
999 DCHECK(!callback.is_null()); 960 DCHECK(!callback.is_null());
1000 961
1001 ServiceOwnerChangedListenerMap::iterator it = 962 ServiceOwnerChangedListenerMap::iterator it =
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
1096 1057
1097 void Bus::OnDispatchStatusChanged(DBusConnection* connection, 1058 void Bus::OnDispatchStatusChanged(DBusConnection* connection,
1098 DBusDispatchStatus status) { 1059 DBusDispatchStatus status) {
1099 DCHECK_EQ(connection, connection_); 1060 DCHECK_EQ(connection, connection_);
1100 AssertOnDBusThread(); 1061 AssertOnDBusThread();
1101 1062
1102 // We cannot call ProcessAllIncomingDataIfAny() here, as calling 1063 // We cannot call ProcessAllIncomingDataIfAny() here, as calling
1103 // dbus_connection_dispatch() inside DBusDispatchStatusFunction is 1064 // dbus_connection_dispatch() inside DBusDispatchStatusFunction is
1104 // prohibited by the D-Bus library. Hence, we post a task here instead. 1065 // prohibited by the D-Bus library. Hence, we post a task here instead.
1105 // See comments for dbus_connection_set_dispatch_status_function(). 1066 // See comments for dbus_connection_set_dispatch_status_function().
1106 PostTaskToDBusThread(FROM_HERE, 1067 GetDBusTaskRunner()->PostTask(FROM_HERE,
1107 base::Bind(&Bus::ProcessAllIncomingDataIfAny, 1068 base::Bind(&Bus::ProcessAllIncomingDataIfAny,
1108 this)); 1069 this));
1109 } 1070 }
1110 1071
1111 void Bus::OnConnectionDisconnected(DBusConnection* connection) { 1072 void Bus::OnConnectionDisconnected(DBusConnection* connection) {
1112 AssertOnDBusThread(); 1073 AssertOnDBusThread();
1113 1074
1114 if (!on_disconnected_closure_.is_null()) 1075 if (!on_disconnected_closure_.is_null())
1115 PostTaskToOriginThread(FROM_HERE, on_disconnected_closure_); 1076 GetOriginTaskRunner()->PostTask(FROM_HERE, on_disconnected_closure_);
1116 1077
1117 if (!connection) 1078 if (!connection)
1118 return; 1079 return;
1119 DCHECK(!dbus_connection_get_is_connected(connection)); 1080 DCHECK(!dbus_connection_get_is_connected(connection));
1120 1081
1121 ShutdownAndBlock(); 1082 ShutdownAndBlock();
1122 } 1083 }
1123 1084
1124 void Bus::OnServiceOwnerChanged(DBusMessage* message) { 1085 void Bus::OnServiceOwnerChanged(DBusMessage* message) {
1125 DCHECK(message); 1086 DCHECK(message);
(...skipping 21 matching lines...) Expand all
1147 return; 1108 return;
1148 } 1109 }
1149 1110
1150 ServiceOwnerChangedListenerMap::const_iterator it = 1111 ServiceOwnerChangedListenerMap::const_iterator it =
1151 service_owner_changed_listener_map_.find(service_name); 1112 service_owner_changed_listener_map_.find(service_name);
1152 if (it == service_owner_changed_listener_map_.end()) 1113 if (it == service_owner_changed_listener_map_.end())
1153 return; 1114 return;
1154 1115
1155 const std::vector<GetServiceOwnerCallback>& callbacks = it->second; 1116 const std::vector<GetServiceOwnerCallback>& callbacks = it->second;
1156 for (size_t i = 0; i < callbacks.size(); ++i) { 1117 for (size_t i = 0; i < callbacks.size(); ++i) {
1157 PostTaskToOriginThread(FROM_HERE, 1118 GetOriginTaskRunner()->PostTask(FROM_HERE,
1158 base::Bind(callbacks[i], new_owner)); 1119 base::Bind(callbacks[i], new_owner));
1159 } 1120 }
1160 } 1121 }
1161 1122
1162 // static 1123 // static
1163 dbus_bool_t Bus::OnAddWatchThunk(DBusWatch* raw_watch, void* data) { 1124 dbus_bool_t Bus::OnAddWatchThunk(DBusWatch* raw_watch, void* data) {
1164 Bus* self = static_cast<Bus*>(data); 1125 Bus* self = static_cast<Bus*>(data);
1165 return self->OnAddWatch(raw_watch); 1126 return self->OnAddWatch(raw_watch);
1166 } 1127 }
1167 1128
1168 // static 1129 // static
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1228 kNameOwnerChangedSignal)) { 1189 kNameOwnerChangedSignal)) {
1229 Bus* self = static_cast<Bus*>(data); 1190 Bus* self = static_cast<Bus*>(data);
1230 self->OnServiceOwnerChanged(message); 1191 self->OnServiceOwnerChanged(message);
1231 } 1192 }
1232 // Always return unhandled to let others, e.g. ObjectProxies, handle the same 1193 // Always return unhandled to let others, e.g. ObjectProxies, handle the same
1233 // signal. 1194 // signal.
1234 return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; 1195 return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
1235 } 1196 }
1236 1197
1237 } // namespace dbus 1198 } // namespace dbus
OLDNEW
« no previous file with comments | « dbus/bus.h ('k') | dbus/end_to_end_async_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698