| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "base/files/file_path.h" | 5 #include "base/files/file_path.h" |
| 6 #include "base/files/file_util.h" | 6 #include "base/files/file_util.h" |
| 7 #include "base/files/scoped_temp_dir.h" | 7 #include "base/files/scoped_temp_dir.h" |
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" |
| 9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
| 10 #include "base/threading/thread.h" | 10 #include "base/threading/thread.h" |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 | 67 |
| 68 base::ScopedTempDir temp_dir_; | 68 base::ScopedTempDir temp_dir_; |
| 69 base::FilePath socket_path_; | 69 base::FilePath socket_path_; |
| 70 scoped_ptr<ExternalApplicationListener> listener_; | 70 scoped_ptr<ExternalApplicationListener> listener_; |
| 71 }; | 71 }; |
| 72 | 72 |
| 73 namespace { | 73 namespace { |
| 74 | 74 |
| 75 class StubShellImpl : public InterfaceImpl<Shell> { | 75 class StubShellImpl : public InterfaceImpl<Shell> { |
| 76 private: | 76 private: |
| 77 void ConnectToApplication( | 77 void ConnectToApplication(const String& requestor_url, |
| 78 const String& requestor_url, | 78 InterfaceRequest<ServiceProvider> services, |
| 79 InterfaceRequest<ServiceProvider> in_service_provider) override { | 79 ServiceProviderPtr exported_services) override { |
| 80 ServiceProviderPtr out_service_provider; | 80 client()->AcceptConnection(requestor_url, services.Pass(), |
| 81 out_service_provider.Bind(in_service_provider.PassMessagePipe()); | 81 exported_services.Pass()); |
| 82 client()->AcceptConnection(requestor_url, out_service_provider.Pass()); | |
| 83 } | 82 } |
| 84 }; | 83 }; |
| 85 | 84 |
| 86 void DoLocalRegister(const GURL& app_url, ScopedMessagePipeHandle shell) { | 85 void DoLocalRegister(const GURL& app_url, ScopedMessagePipeHandle shell) { |
| 87 BindToPipe(new StubShellImpl, shell.Pass()); | 86 BindToPipe(new StubShellImpl, shell.Pass()); |
| 88 } | 87 } |
| 89 | 88 |
| 90 void QuitLoopOnConnect(scoped_refptr<base::TaskRunner> loop, | 89 void QuitLoopOnConnect(scoped_refptr<base::TaskRunner> loop, |
| 91 base::Closure quit_callback, | 90 base::Closure quit_callback, |
| 92 int rv) { | 91 int rv) { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 118 public: | 117 public: |
| 119 QuitLoopOnConnectApplicationImpl(const std::string& url, | 118 QuitLoopOnConnectApplicationImpl(const std::string& url, |
| 120 scoped_refptr<base::TaskRunner> loop, | 119 scoped_refptr<base::TaskRunner> loop, |
| 121 base::Closure quit_callback) | 120 base::Closure quit_callback) |
| 122 : url_(url), to_quit_(loop), quit_callback_(quit_callback) {} | 121 : url_(url), to_quit_(loop), quit_callback_(quit_callback) {} |
| 123 | 122 |
| 124 private: | 123 private: |
| 125 void Initialize(Array<String> args) override {} | 124 void Initialize(Array<String> args) override {} |
| 126 | 125 |
| 127 void AcceptConnection(const String& requestor_url, | 126 void AcceptConnection(const String& requestor_url, |
| 128 ServiceProviderPtr p) override { | 127 InterfaceRequest<ServiceProvider> services, |
| 128 ServiceProviderPtr exported_services) override { |
| 129 DVLOG(1) << url_ << " accepting connection from " << requestor_url; | 129 DVLOG(1) << url_ << " accepting connection from " << requestor_url; |
| 130 to_quit_->PostTask(FROM_HERE, quit_callback_); | 130 to_quit_->PostTask(FROM_HERE, quit_callback_); |
| 131 } | 131 } |
| 132 | 132 |
| 133 const std::string url_; | 133 const std::string url_; |
| 134 scoped_refptr<base::TaskRunner> to_quit_; | 134 scoped_refptr<base::TaskRunner> to_quit_; |
| 135 base::Closure quit_callback_; | 135 base::Closure quit_callback_; |
| 136 }; | 136 }; |
| 137 | 137 |
| 138 class FakeExternalApplication { | 138 class FakeExternalApplication { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 151 base::Closure register_complete_callback) { | 151 base::Closure register_complete_callback) { |
| 152 connection_->Register( | 152 connection_->Register( |
| 153 GURL(url_), | 153 GURL(url_), |
| 154 base::Bind(&FakeExternalApplication::OnRegister, base::Unretained(this), | 154 base::Bind(&FakeExternalApplication::OnRegister, base::Unretained(this), |
| 155 register_complete_callback)); | 155 register_complete_callback)); |
| 156 application_impl_ = application_impl.Pass(); | 156 application_impl_ = application_impl.Pass(); |
| 157 } | 157 } |
| 158 | 158 |
| 159 void ConnectToAppByUrl(std::string app_url) { | 159 void ConnectToAppByUrl(std::string app_url) { |
| 160 ServiceProviderPtr sp; | 160 ServiceProviderPtr sp; |
| 161 ptr_->ConnectToApplication(app_url, GetProxy(&sp)); | 161 ptr_->ConnectToApplication(app_url, GetProxy(&sp), ServiceProviderPtr()); |
| 162 } | 162 } |
| 163 | 163 |
| 164 const std::string& url() { return url_; } | 164 const std::string& url() { return url_; } |
| 165 | 165 |
| 166 private: | 166 private: |
| 167 void OnRegister(base::Closure complete_callback, ShellPtr shell) { | 167 void OnRegister(base::Closure complete_callback, ShellPtr shell) { |
| 168 ptr_ = shell.Pass(); | 168 ptr_ = shell.Pass(); |
| 169 ptr_.set_client(application_impl_.get()); | 169 ptr_.set_client(application_impl_.get()); |
| 170 complete_callback.Run(); | 170 complete_callback.Run(); |
| 171 } | 171 } |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 run_loop_.Run(); | 246 run_loop_.Run(); |
| 247 | 247 |
| 248 // The apps need to be destroyed on the thread where they did socket stuff. | 248 // The apps need to be destroyed on the thread where they did socket stuff. |
| 249 io_thread_.task_runner()->PostTask( | 249 io_thread_.task_runner()->PostTask( |
| 250 FROM_HERE, base::Bind(&DestroyOnIOThread, base::Passed(&supersweet_app), | 250 FROM_HERE, base::Bind(&DestroyOnIOThread, base::Passed(&supersweet_app), |
| 251 base::Passed(&awesome_app))); | 251 base::Passed(&awesome_app))); |
| 252 } | 252 } |
| 253 | 253 |
| 254 } // namespace shell | 254 } // namespace shell |
| 255 } // namespace mojo | 255 } // namespace mojo |
| OLD | NEW |