| 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 "chrome/browser/extensions/api/messaging/native_message_port.h" | 5 #include "chrome/browser/extensions/api/messaging/native_message_port.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/single_thread_task_runner.h" | 10 #include "base/single_thread_task_runner.h" |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 | 43 |
| 44 NativeMessagePort::Core::Core( | 44 NativeMessagePort::Core::Core( |
| 45 std::unique_ptr<NativeMessageHost> host, | 45 std::unique_ptr<NativeMessageHost> host, |
| 46 base::WeakPtr<NativeMessagePort> port, | 46 base::WeakPtr<NativeMessagePort> port, |
| 47 scoped_refptr<base::SingleThreadTaskRunner> message_service_task_runner) | 47 scoped_refptr<base::SingleThreadTaskRunner> message_service_task_runner) |
| 48 : host_(std::move(host)), | 48 : host_(std::move(host)), |
| 49 port_(port), | 49 port_(port), |
| 50 message_service_task_runner_(message_service_task_runner), | 50 message_service_task_runner_(message_service_task_runner), |
| 51 host_task_runner_(host_->task_runner()) { | 51 host_task_runner_(host_->task_runner()) { |
| 52 DCHECK(message_service_task_runner_->BelongsToCurrentThread()); | 52 DCHECK(message_service_task_runner_->BelongsToCurrentThread()); |
| 53 host_task_runner_->PostTask(FROM_HERE, | 53 host_task_runner_->PostTask( |
| 54 base::Bind(&NativeMessageHost::Start, | 54 FROM_HERE, |
| 55 base::Unretained(host_.get()), | 55 base::BindOnce(&NativeMessageHost::Start, base::Unretained(host_.get()), |
| 56 base::Unretained(this))); | 56 base::Unretained(this))); |
| 57 } | 57 } |
| 58 | 58 |
| 59 NativeMessagePort::Core::~Core() { | 59 NativeMessagePort::Core::~Core() { |
| 60 DCHECK(host_task_runner_->BelongsToCurrentThread()); | 60 DCHECK(host_task_runner_->BelongsToCurrentThread()); |
| 61 } | 61 } |
| 62 | 62 |
| 63 void NativeMessagePort::Core::OnMessageFromChrome(const std::string& message) { | 63 void NativeMessagePort::Core::OnMessageFromChrome(const std::string& message) { |
| 64 DCHECK(message_service_task_runner_->BelongsToCurrentThread()); | 64 DCHECK(message_service_task_runner_->BelongsToCurrentThread()); |
| 65 host_task_runner_->PostTask(FROM_HERE, | 65 host_task_runner_->PostTask( |
| 66 base::Bind(&NativeMessageHost::OnMessage, | 66 FROM_HERE, base::BindOnce(&NativeMessageHost::OnMessage, |
| 67 base::Unretained(host_.get()), | 67 base::Unretained(host_.get()), message)); |
| 68 message)); | |
| 69 } | 68 } |
| 70 | 69 |
| 71 void NativeMessagePort::Core::PostMessageFromNativeHost( | 70 void NativeMessagePort::Core::PostMessageFromNativeHost( |
| 72 const std::string& message) { | 71 const std::string& message) { |
| 73 DCHECK(host_task_runner_->BelongsToCurrentThread()); | 72 DCHECK(host_task_runner_->BelongsToCurrentThread()); |
| 74 message_service_task_runner_->PostTask( | 73 message_service_task_runner_->PostTask( |
| 75 FROM_HERE, | 74 FROM_HERE, base::BindOnce(&NativeMessagePort::PostMessageFromNativeHost, |
| 76 base::Bind( | 75 port_, message)); |
| 77 &NativeMessagePort::PostMessageFromNativeHost, port_, message)); | |
| 78 } | 76 } |
| 79 | 77 |
| 80 void NativeMessagePort::Core::CloseChannel(const std::string& error_message) { | 78 void NativeMessagePort::Core::CloseChannel(const std::string& error_message) { |
| 81 DCHECK(host_task_runner_->BelongsToCurrentThread()); | 79 DCHECK(host_task_runner_->BelongsToCurrentThread()); |
| 82 message_service_task_runner_->PostTask( | 80 message_service_task_runner_->PostTask( |
| 83 FROM_HERE, | 81 FROM_HERE, |
| 84 base::Bind(&NativeMessagePort::CloseChannel, port_, error_message)); | 82 base::BindOnce(&NativeMessagePort::CloseChannel, port_, error_message)); |
| 85 } | 83 } |
| 86 | 84 |
| 87 NativeMessagePort::NativeMessagePort( | 85 NativeMessagePort::NativeMessagePort( |
| 88 base::WeakPtr<MessageService> message_service, | 86 base::WeakPtr<MessageService> message_service, |
| 89 const PortId& port_id, | 87 const PortId& port_id, |
| 90 std::unique_ptr<NativeMessageHost> native_message_host) | 88 std::unique_ptr<NativeMessageHost> native_message_host) |
| 91 : weak_message_service_(message_service), | 89 : weak_message_service_(message_service), |
| 92 host_task_runner_(native_message_host->task_runner()), | 90 host_task_runner_(native_message_host->task_runner()), |
| 93 port_id_(port_id), | 91 port_id_(port_id), |
| 94 weak_factory_(this) { | 92 weak_factory_(this) { |
| (...skipping 30 matching lines...) Expand all Loading... |
| 125 } | 123 } |
| 126 | 124 |
| 127 void NativeMessagePort::CloseChannel(const std::string& error_message) { | 125 void NativeMessagePort::CloseChannel(const std::string& error_message) { |
| 128 DCHECK(thread_checker_.CalledOnValidThread()); | 126 DCHECK(thread_checker_.CalledOnValidThread()); |
| 129 if (weak_message_service_) { | 127 if (weak_message_service_) { |
| 130 weak_message_service_->CloseChannel(port_id_, error_message); | 128 weak_message_service_->CloseChannel(port_id_, error_message); |
| 131 } | 129 } |
| 132 } | 130 } |
| 133 | 131 |
| 134 } // namespace extensions | 132 } // namespace extensions |
| OLD | NEW |