OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "services/user/user_shell_client.h" | 5 #include "services/user/user_shell_client.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "base/memory/weak_ptr.h" | 9 #include "base/memory/weak_ptr.h" |
10 #include "components/filesystem/lock_table.h" | 10 #include "components/filesystem/lock_table.h" |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 private: | 62 private: |
63 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; | 63 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
64 | 64 |
65 // Variables that are only accessible on the |leveldb_service_runner_| thread. | 65 // Variables that are only accessible on the |leveldb_service_runner_| thread. |
66 std::unique_ptr<leveldb::mojom::LevelDBService> leveldb_service_; | 66 std::unique_ptr<leveldb::mojom::LevelDBService> leveldb_service_; |
67 mojo::BindingSet<leveldb::mojom::LevelDBService> leveldb_bindings_; | 67 mojo::BindingSet<leveldb::mojom::LevelDBService> leveldb_bindings_; |
68 | 68 |
69 DISALLOW_COPY_AND_ASSIGN(LevelDBServiceObjects); | 69 DISALLOW_COPY_AND_ASSIGN(LevelDBServiceObjects); |
70 }; | 70 }; |
71 | 71 |
72 std::unique_ptr<shell::ShellClient> CreateUserShellClient( | 72 std::unique_ptr<shell::Service> CreateUserService( |
73 scoped_refptr<base::SingleThreadTaskRunner> user_service_runner, | 73 scoped_refptr<base::SingleThreadTaskRunner> user_service_runner, |
74 scoped_refptr<base::SingleThreadTaskRunner> leveldb_service_runner, | 74 scoped_refptr<base::SingleThreadTaskRunner> leveldb_service_runner, |
75 const base::Closure& quit_closure) { | 75 const base::Closure& quit_closure) { |
76 return base::WrapUnique(new UserShellClient( | 76 return base::WrapUnique(new UserShellClient( |
77 std::move(user_service_runner), std::move(leveldb_service_runner))); | 77 std::move(user_service_runner), std::move(leveldb_service_runner))); |
78 } | 78 } |
79 | 79 |
80 UserShellClient::UserShellClient( | 80 UserShellClient::UserShellClient( |
81 scoped_refptr<base::SingleThreadTaskRunner> user_service_runner, | 81 scoped_refptr<base::SingleThreadTaskRunner> user_service_runner, |
82 scoped_refptr<base::SingleThreadTaskRunner> leveldb_service_runner) | 82 scoped_refptr<base::SingleThreadTaskRunner> leveldb_service_runner) |
83 : user_service_runner_(std::move(user_service_runner)), | 83 : user_service_runner_(std::move(user_service_runner)), |
84 leveldb_service_runner_(std::move(leveldb_service_runner)) {} | 84 leveldb_service_runner_(std::move(leveldb_service_runner)) {} |
85 | 85 |
86 UserShellClient::~UserShellClient() { | 86 UserShellClient::~UserShellClient() { |
87 user_service_runner_->DeleteSoon(FROM_HERE, user_objects_.release()); | 87 user_service_runner_->DeleteSoon(FROM_HERE, user_objects_.release()); |
88 leveldb_service_runner_->DeleteSoon(FROM_HERE, leveldb_objects_.release()); | 88 leveldb_service_runner_->DeleteSoon(FROM_HERE, leveldb_objects_.release()); |
89 } | 89 } |
90 | 90 |
91 void UserShellClient::Initialize(shell::Connector* connector, | 91 void UserShellClient::OnStart(shell::Connector* connector, |
92 const shell::Identity& identity, | 92 const shell::Identity& identity, |
93 uint32_t id) { | 93 uint32_t id) { |
94 user_objects_.reset(new UserShellClient::UserServiceObjects( | 94 user_objects_.reset(new UserShellClient::UserServiceObjects( |
95 GetUserDirForUserId(identity.user_id()))); | 95 GetUserDirForUserId(identity.user_id()))); |
96 leveldb_objects_.reset( | 96 leveldb_objects_.reset( |
97 new UserShellClient::LevelDBServiceObjects(leveldb_service_runner_)); | 97 new UserShellClient::LevelDBServiceObjects(leveldb_service_runner_)); |
98 } | 98 } |
99 | 99 |
100 bool UserShellClient::AcceptConnection(shell::Connection* connection) { | 100 bool UserShellClient::OnConnect(shell::Connection* connection) { |
101 connection->AddInterface<leveldb::mojom::LevelDBService>(this); | 101 connection->AddInterface<leveldb::mojom::LevelDBService>(this); |
102 connection->AddInterface<mojom::UserService>(this); | 102 connection->AddInterface<mojom::UserService>(this); |
103 return true; | 103 return true; |
104 } | 104 } |
105 | 105 |
106 void UserShellClient::Create(shell::Connection* connection, | 106 void UserShellClient::Create(shell::Connection* connection, |
107 mojom::UserServiceRequest request) { | 107 mojom::UserServiceRequest request) { |
108 user_service_runner_->PostTask( | 108 user_service_runner_->PostTask( |
109 FROM_HERE, | 109 FROM_HERE, |
110 base::Bind(&UserShellClient::UserServiceObjects::OnUserServiceRequest, | 110 base::Bind(&UserShellClient::UserServiceObjects::OnUserServiceRequest, |
111 user_objects_->AsWeakPtr(), connection, | 111 user_objects_->AsWeakPtr(), connection, |
112 base::Passed(&request))); | 112 base::Passed(&request))); |
113 } | 113 } |
114 | 114 |
115 void UserShellClient::Create(shell::Connection* connection, | 115 void UserShellClient::Create(shell::Connection* connection, |
116 leveldb::mojom::LevelDBServiceRequest request) { | 116 leveldb::mojom::LevelDBServiceRequest request) { |
117 leveldb_service_runner_->PostTask( | 117 leveldb_service_runner_->PostTask( |
118 FROM_HERE, | 118 FROM_HERE, |
119 base::Bind( | 119 base::Bind( |
120 &UserShellClient::LevelDBServiceObjects::OnLevelDBServiceRequest, | 120 &UserShellClient::LevelDBServiceObjects::OnLevelDBServiceRequest, |
121 leveldb_objects_->AsWeakPtr(), connection, | 121 leveldb_objects_->AsWeakPtr(), connection, |
122 base::Passed(&request))); | 122 base::Passed(&request))); |
123 } | 123 } |
124 | 124 |
125 } // namespace user_service | 125 } // namespace user_service |
OLD | NEW |