Chromium Code Reviews| Index: dbus/object_proxy.cc |
| =================================================================== |
| --- dbus/object_proxy.cc (revision 197157) |
| +++ dbus/object_proxy.cc (working copy) |
| @@ -18,6 +18,8 @@ |
| #include "dbus/object_proxy.h" |
| #include "dbus/scoped_dbus_error.h" |
| +namespace dbus { |
| + |
| namespace { |
| const char kErrorServiceUnknown[] = "org.freedesktop.DBus.Error.ServiceUnknown"; |
| @@ -28,6 +30,15 @@ |
| // The path of D-Bus Object sending NameOwnerChanged signal. |
| const char kDBusSystemObjectPath[] = "/org/freedesktop/DBus"; |
| +// The D-Bus Object interface. |
| +const char kDBusSystemObjectInterface[] = "org.freedesktop.DBus"; |
| + |
| +// The D-Bus Object address. |
| +const char kDBusSystemObjectAddress[] = "org.freedesktop.DBus"; |
| + |
| +// The NameOwnerChanged member in |kDBusSystemObjectInterface|. |
| +const char kNameOwnerChangedMember[] = "NameOwnerChanged"; |
| + |
| // Gets the absolute signal name by concatenating the interface name and |
| // the signal name. Used for building keys for method_table_ in |
| // ObjectProxy. |
| @@ -38,13 +49,11 @@ |
| } |
| // An empty function used for ObjectProxy::EmptyResponseCallback(). |
| -void EmptyResponseCallbackBody(dbus::Response* unused_response) { |
| +void EmptyResponseCallbackBody(Response* /*response*/) { |
| } |
| } // namespace |
| -namespace dbus { |
| - |
| ObjectProxy::ObjectProxy(Bus* bus, |
| const std::string& service_name, |
| const ObjectPath& object_path, |
| @@ -285,18 +294,17 @@ |
| } else if (dbus_message_get_type(response_message) == |
| DBUS_MESSAGE_TYPE_ERROR) { |
| // This will take |response_message| and release (unref) it. |
| - scoped_ptr<dbus::ErrorResponse> error_response( |
| - dbus::ErrorResponse::FromRawMessage(response_message)); |
| + scoped_ptr<ErrorResponse> error_response( |
| + ErrorResponse::FromRawMessage(response_message)); |
| error_callback.Run(error_response.get()); |
| // Delete the message on the D-Bus thread. See below for why. |
| bus_->PostTaskToDBusThread( |
| FROM_HERE, |
| - base::Bind(&base::DeletePointer<dbus::ErrorResponse>, |
| + base::Bind(&base::DeletePointer<ErrorResponse>, |
| error_response.release())); |
| } else { |
| // This will take |response_message| and release (unref) it. |
| - scoped_ptr<dbus::Response> response( |
| - dbus::Response::FromRawMessage(response_message)); |
| + scoped_ptr<Response> response(Response::FromRawMessage(response_message)); |
| // The response is successfully received. |
| response_callback.Run(response.get()); |
| // The message should be deleted on the D-Bus thread for a complicated |
| @@ -319,8 +327,7 @@ |
| // thread, not from the current thread here, which is likely UI thread. |
| bus_->PostTaskToDBusThread( |
| FROM_HERE, |
| - base::Bind(&base::DeletePointer<dbus::Response>, |
| - response.release())); |
| + base::Bind(&base::DeletePointer<Response>, response.release())); |
| method_call_successful = true; |
| // Record time spent for the method call. Don't include failures. |
| @@ -439,10 +446,10 @@ |
| // Verify the signal comes from the object we're proxying for, this is |
| // our last chance to return DBUS_HANDLER_RESULT_NOT_YET_HANDLED and |
| // allow other object proxies to handle instead. |
| - const dbus::ObjectPath path = signal->GetPath(); |
| + const ObjectPath path = signal->GetPath(); |
| if (path != object_path_) { |
| if (path.value() == kDBusSystemObjectPath && |
| - signal->GetMember() == "NameOwnerChanged") { |
| + signal->GetMember() == kNameOwnerChangedMember) { |
| // Handle NameOwnerChanged separately |
| return HandleNameOwnerChanged(signal.Pass()); |
| } |
| @@ -507,7 +514,7 @@ |
| // RunResponseCallback(). |
| bus_->PostTaskToDBusThread( |
| FROM_HERE, |
| - base::Bind(&base::DeletePointer<dbus::Signal>, signal)); |
| + base::Bind(&base::DeletePointer<Signal>, signal)); |
| // Record time spent for handling the signal. |
| UMA_HISTOGRAM_TIMES("DBus.SignalHandleTime", |
| @@ -541,7 +548,7 @@ |
| ErrorResponse* error_response) { |
| if (error_response) { |
| // Error message may contain the error message as string. |
| - dbus::MessageReader reader(error_response); |
| + MessageReader reader(error_response); |
| std::string error_message; |
| reader.PopString(&error_message); |
| LogMethodCallFailure(interface_name, |
| @@ -564,8 +571,8 @@ |
| ScopedDBusError error; |
| bus_->AddMatch(match_rule, error.get()); |
| if (error.is_set()) { |
| - LOG(ERROR) << "Failed to add match rule \"" << match_rule << "\". Got " << |
| - error.name() << ": " << error.message(); |
| + LOG(ERROR) << "Failed to add match rule \"" << match_rule << "\". Got " |
| + << error.name() << ": " << error.message(); |
| return false; |
| } else { |
| // Store the match rule, so that we can remove this in Detach(). |
| @@ -594,8 +601,8 @@ |
| ScopedDBusError error; |
| bus_->AddMatch(match_rule, error.get()); |
| if (error.is_set()) { |
| - LOG(ERROR) << "Failed to add match rule \"" << match_rule << "\". Got " << |
| - error.name() << ": " << error.message(); |
| + LOG(ERROR) << "Failed to add match rule \"" << match_rule << "\". Got " |
| + << error.name() << ": " << error.message(); |
| return false; |
| } |
| // Store the match rule, so that we can remove this in Detach(). |
| @@ -605,37 +612,7 @@ |
| void ObjectProxy::UpdateNameOwnerAndBlock() { |
| bus_->AssertOnDBusThread(); |
| - |
| - MethodCall get_name_owner_call("org.freedesktop.DBus", "GetNameOwner"); |
| - MessageWriter writer(&get_name_owner_call); |
| - writer.AppendString(service_name_); |
| - VLOG(1) << "Method call: " << get_name_owner_call.ToString(); |
| - |
| - const dbus::ObjectPath obj_path("/org/freedesktop/DBus"); |
| - ScopedDBusError error; |
| - if (!get_name_owner_call.SetDestination("org.freedesktop.DBus") || |
| - !get_name_owner_call.SetPath(obj_path)) { |
| - LOG(ERROR) << "Failed to get name owner."; |
| - return; |
| - } |
| - |
| - DBusMessage* response_message = bus_->SendWithReplyAndBlock( |
| - get_name_owner_call.raw_message(), |
| - TIMEOUT_USE_DEFAULT, |
| - error.get()); |
| - if (!response_message) { |
| - LOG(ERROR) << "Failed to get name owner. Got " << error.name() << ": " << |
| - error.message(); |
| - return; |
| - } |
| - scoped_ptr<Response> response(Response::FromRawMessage(response_message)); |
| - MessageReader reader(response.get()); |
| - |
| - std::string new_service_name_owner; |
| - if (reader.PopString(&new_service_name_owner)) |
| - service_name_owner_ = new_service_name_owner; |
| - else |
| - service_name_owner_.clear(); |
| + service_name_owner_ = bus_->GetServiceOwnerAndBlock(service_name_, false); |
|
satorux1
2013/05/01 01:19:27
false of what? :)
Lei Zhang
2013/05/01 01:40:50
Done.
|
| } |
| DBusHandlerResult ObjectProxy::HandleNameOwnerChanged( |
| @@ -644,9 +621,9 @@ |
| bus_->AssertOnDBusThread(); |
| // Confirm the validity of the NameOwnerChanged signal. |
| - if (signal->GetMember() == "NameOwnerChanged" && |
| - signal->GetInterface() == "org.freedesktop.DBus" && |
| - signal->GetSender() == "org.freedesktop.DBus") { |
| + if (signal->GetMember() == kNameOwnerChangedMember && |
| + signal->GetInterface() == kDBusSystemObjectInterface && |
| + signal->GetSender() == kDBusSystemObjectAddress) { |
| MessageReader reader(signal.get()); |
| std::string name, old_owner, new_owner; |
| if (reader.PopString(&name) && |