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/session_manager_client.h" | 5 #include "chromeos/dbus/session_manager_client.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
222 return policy; | 222 return policy; |
223 } | 223 } |
224 | 224 |
225 void RetrievePolicyForUser(const cryptohome::Identification& cryptohome_id, | 225 void RetrievePolicyForUser(const cryptohome::Identification& cryptohome_id, |
226 const RetrievePolicyCallback& callback) override { | 226 const RetrievePolicyCallback& callback) override { |
227 CallRetrievePolicyByUsername( | 227 CallRetrievePolicyByUsername( |
228 login_manager::kSessionManagerRetrievePolicyForUser, cryptohome_id.id(), | 228 login_manager::kSessionManagerRetrievePolicyForUser, cryptohome_id.id(), |
229 callback); | 229 callback); |
230 } | 230 } |
231 | 231 |
232 void RetrievePolicyForUserWithErrorCallback( | |
233 const cryptohome::Identification& cryptohome_id, | |
234 const RetrievePolicyCallback& callback, | |
235 const ErrorCallback& error_callback) override { | |
236 CallRetrievePolicyByUsernameWithErrorCallback( | |
237 login_manager::kSessionManagerRetrievePolicyForUser, cryptohome_id.id(), | |
238 callback, error_callback); | |
239 } | |
240 | |
232 std::string BlockingRetrievePolicyForUser( | 241 std::string BlockingRetrievePolicyForUser( |
233 const cryptohome::Identification& cryptohome_id) override { | 242 const cryptohome::Identification& cryptohome_id) override { |
234 dbus::MethodCall method_call( | 243 dbus::MethodCall method_call( |
235 login_manager::kSessionManagerInterface, | 244 login_manager::kSessionManagerInterface, |
236 login_manager::kSessionManagerRetrievePolicyForUser); | 245 login_manager::kSessionManagerRetrievePolicyForUser); |
237 dbus::MessageWriter writer(&method_call); | 246 dbus::MessageWriter writer(&method_call); |
238 writer.AppendString(cryptohome_id.id()); | 247 writer.AppendString(cryptohome_id.id()); |
239 std::unique_ptr<dbus::Response> response = | 248 std::unique_ptr<dbus::Response> response = |
240 blocking_method_caller_->CallMethodAndBlock(&method_call); | 249 blocking_method_caller_->CallMethodAndBlock(&method_call); |
241 std::string policy; | 250 std::string policy; |
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
498 session_manager_proxy_->CallMethod( | 507 session_manager_proxy_->CallMethod( |
499 &method_call, | 508 &method_call, |
500 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | 509 dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, |
501 base::Bind( | 510 base::Bind( |
502 &SessionManagerClientImpl::OnRetrievePolicy, | 511 &SessionManagerClientImpl::OnRetrievePolicy, |
503 weak_ptr_factory_.GetWeakPtr(), | 512 weak_ptr_factory_.GetWeakPtr(), |
504 method_name, | 513 method_name, |
505 callback)); | 514 callback)); |
506 } | 515 } |
507 | 516 |
517 void CallRetrievePolicyByUsernameWithErrorCallback( | |
518 const std::string& method_name, | |
519 const std::string& account_id, | |
520 const RetrievePolicyCallback& callback, | |
521 const ErrorCallback& error_callback) { | |
522 dbus::MethodCall method_call(login_manager::kSessionManagerInterface, | |
523 method_name); | |
524 dbus::MessageWriter writer(&method_call); | |
525 writer.AppendString(account_id); | |
Daniel Erat
2017/04/10 18:59:26
please avoid copy-and-pasting code (i.e. the exist
igorcov
2017/04/18 10:23:18
Done.
| |
526 session_manager_proxy_->CallMethodWithErrorCallback( | |
527 &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT, | |
528 base::Bind(&SessionManagerClientImpl::OnRetrievePolicy, | |
529 weak_ptr_factory_.GetWeakPtr(), method_name, callback), | |
530 base::Bind(&SessionManagerClientImpl::OnRetrievePolicyWithError, | |
531 weak_ptr_factory_.GetWeakPtr(), error_callback)); | |
532 } | |
533 | |
508 void CallStorePolicyByUsername(const std::string& method_name, | 534 void CallStorePolicyByUsername(const std::string& method_name, |
509 const std::string& account_id, | 535 const std::string& account_id, |
510 const std::string& policy_blob, | 536 const std::string& policy_blob, |
511 const StorePolicyCallback& callback) { | 537 const StorePolicyCallback& callback) { |
512 dbus::MethodCall method_call(login_manager::kSessionManagerInterface, | 538 dbus::MethodCall method_call(login_manager::kSessionManagerInterface, |
513 method_name); | 539 method_name); |
514 dbus::MessageWriter writer(&method_call); | 540 dbus::MessageWriter writer(&method_call); |
515 writer.AppendString(account_id); | 541 writer.AppendString(account_id); |
516 // static_cast does not work due to signedness. | 542 // static_cast does not work due to signedness. |
517 writer.AppendArrayOfBytes( | 543 writer.AppendArrayOfBytes( |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
616 // Called when kSessionManagerRetrievePolicy or | 642 // Called when kSessionManagerRetrievePolicy or |
617 // kSessionManagerRetrievePolicyForUser method is complete. | 643 // kSessionManagerRetrievePolicyForUser method is complete. |
618 void OnRetrievePolicy(const std::string& method_name, | 644 void OnRetrievePolicy(const std::string& method_name, |
619 const RetrievePolicyCallback& callback, | 645 const RetrievePolicyCallback& callback, |
620 dbus::Response* response) { | 646 dbus::Response* response) { |
621 std::string serialized_proto; | 647 std::string serialized_proto; |
622 ExtractString(method_name, response, &serialized_proto); | 648 ExtractString(method_name, response, &serialized_proto); |
623 callback.Run(serialized_proto); | 649 callback.Run(serialized_proto); |
624 } | 650 } |
625 | 651 |
652 void OnRetrievePolicyWithError(const ErrorCallback& callback, | |
653 dbus::ErrorResponse* response) { | |
654 std::string error_name; | |
655 std::string error_message; | |
656 dbus::MessageReader reader(response); | |
657 error_name = response->GetErrorName(); | |
658 reader.PopString(&error_message); | |
659 callback.Run(error_name, error_message); | |
660 } | |
661 | |
626 // Called when kSessionManagerStorePolicy or kSessionManagerStorePolicyForUser | 662 // Called when kSessionManagerStorePolicy or kSessionManagerStorePolicyForUser |
627 // method is complete. | 663 // method is complete. |
628 void OnStorePolicy(const std::string& method_name, | 664 void OnStorePolicy(const std::string& method_name, |
629 const StorePolicyCallback& callback, | 665 const StorePolicyCallback& callback, |
630 dbus::Response* response) { | 666 dbus::Response* response) { |
631 bool success = false; | 667 bool success = false; |
632 if (!response) { | 668 if (!response) { |
633 LOG(ERROR) << "Failed to call " << method_name; | 669 LOG(ERROR) << "Failed to call " << method_name; |
634 } else { | 670 } else { |
635 dbus::MessageReader reader(response); | 671 dbus::MessageReader reader(response); |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
887 base::PostTaskWithTraitsAndReplyWithResult( | 923 base::PostTaskWithTraitsAndReplyWithResult( |
888 FROM_HERE, | 924 FROM_HERE, |
889 base::TaskTraits() | 925 base::TaskTraits() |
890 .WithShutdownBehavior( | 926 .WithShutdownBehavior( |
891 base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN) | 927 base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN) |
892 .MayBlock(), | 928 .MayBlock(), |
893 base::Bind(&GetFileContent, | 929 base::Bind(&GetFileContent, |
894 GetUserFilePath(cryptohome_id, kStubPolicyFile)), | 930 GetUserFilePath(cryptohome_id, kStubPolicyFile)), |
895 callback); | 931 callback); |
896 } | 932 } |
933 void RetrievePolicyForUserWithErrorCallback( | |
934 const cryptohome::Identification& cryptohome_id, | |
935 const RetrievePolicyCallback& callback, | |
936 const ErrorCallback& error_callback) override { | |
937 RetrievePolicyForUser(cryptohome_id, callback); | |
938 } | |
897 std::string BlockingRetrievePolicyForUser( | 939 std::string BlockingRetrievePolicyForUser( |
898 const cryptohome::Identification& cryptohome_id) override { | 940 const cryptohome::Identification& cryptohome_id) override { |
899 return GetFileContent(GetUserFilePath(cryptohome_id, kStubPolicyFile)); | 941 return GetFileContent(GetUserFilePath(cryptohome_id, kStubPolicyFile)); |
900 } | 942 } |
901 void RetrieveDeviceLocalAccountPolicy( | 943 void RetrieveDeviceLocalAccountPolicy( |
902 const std::string& account_id, | 944 const std::string& account_id, |
903 const RetrievePolicyCallback& callback) override { | 945 const RetrievePolicyCallback& callback) override { |
904 RetrievePolicyForUser(cryptohome::Identification::FromString(account_id), | 946 RetrievePolicyForUser(cryptohome::Identification::FromString(account_id), |
905 callback); | 947 callback); |
906 } | 948 } |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1053 | 1095 |
1054 SessionManagerClient* SessionManagerClient::Create( | 1096 SessionManagerClient* SessionManagerClient::Create( |
1055 DBusClientImplementationType type) { | 1097 DBusClientImplementationType type) { |
1056 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) | 1098 if (type == REAL_DBUS_CLIENT_IMPLEMENTATION) |
1057 return new SessionManagerClientImpl(); | 1099 return new SessionManagerClientImpl(); |
1058 DCHECK_EQ(FAKE_DBUS_CLIENT_IMPLEMENTATION, type); | 1100 DCHECK_EQ(FAKE_DBUS_CLIENT_IMPLEMENTATION, type); |
1059 return new SessionManagerClientStubImpl(); | 1101 return new SessionManagerClientStubImpl(); |
1060 } | 1102 } |
1061 | 1103 |
1062 } // namespace chromeos | 1104 } // namespace chromeos |
OLD | NEW |