Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "chromeos/dbus/permission_broker_client.h" | 5 #include "chromeos/dbus/permission_broker_client.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 35 const ResultCallback& callback) override { | 35 const ResultCallback& callback) override { |
| 36 dbus::MethodCall method_call(kPermissionBrokerInterface, kCheckPathAccess); | 36 dbus::MethodCall method_call(kPermissionBrokerInterface, kCheckPathAccess); |
| 37 dbus::MessageWriter writer(&method_call); | 37 dbus::MessageWriter writer(&method_call); |
| 38 writer.AppendString(path); | 38 writer.AppendString(path); |
| 39 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 39 proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| 40 base::Bind(&PermissionBrokerClientImpl::OnResponse, | 40 base::Bind(&PermissionBrokerClientImpl::OnResponse, |
| 41 weak_ptr_factory_.GetWeakPtr(), callback)); | 41 weak_ptr_factory_.GetWeakPtr(), callback)); |
| 42 } | 42 } |
| 43 | 43 |
| 44 void OpenPath(const std::string& path, | 44 void OpenPath(const std::string& path, |
| 45 const OpenPathCallback& callback) override { | 45 const OpenPathCallback& callback, |
| 46 const ErrorCallback& error_callback) override { | |
| 46 dbus::MethodCall method_call(kPermissionBrokerInterface, kOpenPath); | 47 dbus::MethodCall method_call(kPermissionBrokerInterface, kOpenPath); |
| 47 dbus::MessageWriter writer(&method_call); | 48 dbus::MessageWriter writer(&method_call); |
| 48 writer.AppendString(path); | 49 writer.AppendString(path); |
| 49 proxy_->CallMethod( | 50 proxy_->CallMethodWithErrorCallback( |
| 50 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 51 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
| 51 base::Bind(&PermissionBrokerClientImpl::OnOpenPathResponse, | 52 base::Bind(&PermissionBrokerClientImpl::OnOpenPathResponse, |
| 52 weak_ptr_factory_.GetWeakPtr(), callback)); | 53 weak_ptr_factory_.GetWeakPtr(), callback), |
| 54 base::Bind(&PermissionBrokerClientImpl::OnError, | |
| 55 weak_ptr_factory_.GetWeakPtr(), error_callback)); | |
| 53 } | 56 } |
| 54 | 57 |
| 55 void RequestTcpPortAccess(uint16_t port, | 58 void RequestTcpPortAccess(uint16_t port, |
| 56 const std::string& interface, | 59 const std::string& interface, |
| 57 const dbus::FileDescriptor& lifeline_fd, | 60 const dbus::FileDescriptor& lifeline_fd, |
| 58 const ResultCallback& callback) override { | 61 const ResultCallback& callback) override { |
| 59 dbus::MethodCall method_call(kPermissionBrokerInterface, | 62 dbus::MethodCall method_call(kPermissionBrokerInterface, |
| 60 kRequestTcpPortAccess); | 63 kRequestTcpPortAccess); |
| 61 dbus::MessageWriter writer(&method_call); | 64 dbus::MessageWriter writer(&method_call); |
| 62 writer.AppendUint16(port); | 65 writer.AppendUint16(port); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 126 bool result = false; | 129 bool result = false; |
| 127 dbus::MessageReader reader(response); | 130 dbus::MessageReader reader(response); |
| 128 if (!reader.PopBool(&result)) | 131 if (!reader.PopBool(&result)) |
| 129 LOG(WARNING) << "Could not parse response: " << response->ToString(); | 132 LOG(WARNING) << "Could not parse response: " << response->ToString(); |
| 130 callback.Run(result); | 133 callback.Run(result); |
| 131 } | 134 } |
| 132 | 135 |
| 133 void OnOpenPathResponse(const OpenPathCallback& callback, | 136 void OnOpenPathResponse(const OpenPathCallback& callback, |
| 134 dbus::Response* response) { | 137 dbus::Response* response) { |
| 135 dbus::FileDescriptor fd; | 138 dbus::FileDescriptor fd; |
| 136 if (response) { | 139 dbus::MessageReader reader(response); |
| 137 dbus::MessageReader reader(response); | 140 if (!reader.PopFileDescriptor(&fd)) |
| 138 if (!reader.PopFileDescriptor(&fd)) | 141 LOG(WARNING) << "Could not parse response: " << response->ToString(); |
| 139 LOG(WARNING) << "Could not parse response: " << response->ToString(); | |
| 140 } else { | |
| 141 LOG(WARNING) << "Access request method call failed."; | |
| 142 } | |
| 143 | |
| 144 callback.Run(std::move(fd)); | 142 callback.Run(std::move(fd)); |
| 145 } | 143 } |
| 146 | 144 |
| 145 void OnError(const ErrorCallback& callback, dbus::ErrorResponse* response) { | |
| 146 std::string error_name; | |
| 147 std::string error_message; | |
| 148 if (response) { | |
| 149 dbus::MessageReader reader(response); | |
| 150 error_name = response->GetErrorName(); | |
| 151 reader.PopString(&error_message); | |
| 152 } else { | |
| 153 error_name = "org.chromium.Error.NoResponse"; | |
|
stevenjb
2016/02/10 00:01:02
nit: define at the top of the file:
const char kN
Reilly Grant (use Gerrit)
2016/02/10 00:16:32
Done.
| |
| 154 } | |
| 155 callback.Run(error_name, error_message); | |
| 156 } | |
| 157 | |
| 147 dbus::ObjectProxy* proxy_; | 158 dbus::ObjectProxy* proxy_; |
| 148 | 159 |
| 149 // Note: This should remain the last member so that it will be destroyed | 160 // Note: This should remain the last member so that it will be destroyed |
| 150 // first, invalidating its weak pointers, before the other members are | 161 // first, invalidating its weak pointers, before the other members are |
| 151 // destroyed. | 162 // destroyed. |
| 152 base::WeakPtrFactory<PermissionBrokerClientImpl> weak_ptr_factory_; | 163 base::WeakPtrFactory<PermissionBrokerClientImpl> weak_ptr_factory_; |
| 153 | 164 |
| 154 DISALLOW_COPY_AND_ASSIGN(PermissionBrokerClientImpl); | 165 DISALLOW_COPY_AND_ASSIGN(PermissionBrokerClientImpl); |
| 155 }; | 166 }; |
| 156 | 167 |
| 157 PermissionBrokerClient::PermissionBrokerClient() {} | 168 PermissionBrokerClient::PermissionBrokerClient() {} |
| 158 | 169 |
| 159 PermissionBrokerClient::~PermissionBrokerClient() {} | 170 PermissionBrokerClient::~PermissionBrokerClient() {} |
| 160 | 171 |
| 161 PermissionBrokerClient* PermissionBrokerClient::Create() { | 172 PermissionBrokerClient* PermissionBrokerClient::Create() { |
| 162 return new PermissionBrokerClientImpl(); | 173 return new PermissionBrokerClientImpl(); |
| 163 } | 174 } |
| 164 | 175 |
| 165 } // namespace chromeos | 176 } // namespace chromeos |
| OLD | NEW |