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> |
| 8 |
7 #include "base/bind.h" | 9 #include "base/bind.h" |
8 #include "base/single_thread_task_runner.h" | 10 #include "base/single_thread_task_runner.h" |
9 #include "base/thread_task_runner_handle.h" | 11 #include "base/thread_task_runner_handle.h" |
10 #include "chrome/browser/extensions/api/messaging/native_message_process_host.h" | 12 #include "chrome/browser/extensions/api/messaging/native_message_process_host.h" |
11 #include "content/public/browser/browser_thread.h" | 13 #include "content/public/browser/browser_thread.h" |
12 | 14 |
13 namespace extensions { | 15 namespace extensions { |
14 | 16 |
15 // Handles jumping between the |host_task_runner| and the | 17 // Handles jumping between the |host_task_runner| and the |
16 // |message_service_task_runner|. | 18 // |message_service_task_runner|. |
(...skipping 19 matching lines...) Expand all Loading... |
36 base::WeakPtr<NativeMessagePort> port_; | 38 base::WeakPtr<NativeMessagePort> port_; |
37 | 39 |
38 scoped_refptr<base::SingleThreadTaskRunner> message_service_task_runner_; | 40 scoped_refptr<base::SingleThreadTaskRunner> message_service_task_runner_; |
39 scoped_refptr<base::SingleThreadTaskRunner> host_task_runner_; | 41 scoped_refptr<base::SingleThreadTaskRunner> host_task_runner_; |
40 }; | 42 }; |
41 | 43 |
42 NativeMessagePort::Core::Core( | 44 NativeMessagePort::Core::Core( |
43 scoped_ptr<NativeMessageHost> host, | 45 scoped_ptr<NativeMessageHost> host, |
44 base::WeakPtr<NativeMessagePort> port, | 46 base::WeakPtr<NativeMessagePort> port, |
45 scoped_refptr<base::SingleThreadTaskRunner> message_service_task_runner) | 47 scoped_refptr<base::SingleThreadTaskRunner> message_service_task_runner) |
46 : host_(host.Pass()), | 48 : host_(std::move(host)), |
47 port_(port), | 49 port_(port), |
48 message_service_task_runner_(message_service_task_runner), | 50 message_service_task_runner_(message_service_task_runner), |
49 host_task_runner_(host_->task_runner()) { | 51 host_task_runner_(host_->task_runner()) { |
50 DCHECK(message_service_task_runner_->BelongsToCurrentThread()); | 52 DCHECK(message_service_task_runner_->BelongsToCurrentThread()); |
51 host_task_runner_->PostTask(FROM_HERE, | 53 host_task_runner_->PostTask(FROM_HERE, |
52 base::Bind(&NativeMessageHost::Start, | 54 base::Bind(&NativeMessageHost::Start, |
53 base::Unretained(host_.get()), | 55 base::Unretained(host_.get()), |
54 base::Unretained(this))); | 56 base::Unretained(this))); |
55 } | 57 } |
56 | 58 |
(...skipping 26 matching lines...) Expand all Loading... |
83 } | 85 } |
84 | 86 |
85 NativeMessagePort::NativeMessagePort( | 87 NativeMessagePort::NativeMessagePort( |
86 base::WeakPtr<MessageService> message_service, | 88 base::WeakPtr<MessageService> message_service, |
87 int port_id, | 89 int port_id, |
88 scoped_ptr<NativeMessageHost> native_message_host) | 90 scoped_ptr<NativeMessageHost> native_message_host) |
89 : weak_message_service_(message_service), | 91 : weak_message_service_(message_service), |
90 host_task_runner_(native_message_host->task_runner()), | 92 host_task_runner_(native_message_host->task_runner()), |
91 port_id_(port_id), | 93 port_id_(port_id), |
92 weak_factory_(this) { | 94 weak_factory_(this) { |
93 core_.reset(new Core(native_message_host.Pass(), | 95 core_.reset(new Core(std::move(native_message_host), |
94 weak_factory_.GetWeakPtr(), | 96 weak_factory_.GetWeakPtr(), |
95 base::ThreadTaskRunnerHandle::Get())); | 97 base::ThreadTaskRunnerHandle::Get())); |
96 } | 98 } |
97 | 99 |
98 NativeMessagePort::~NativeMessagePort() { | 100 NativeMessagePort::~NativeMessagePort() { |
99 DCHECK(thread_checker_.CalledOnValidThread()); | 101 DCHECK(thread_checker_.CalledOnValidThread()); |
100 host_task_runner_->DeleteSoon(FROM_HERE, core_.release()); | 102 host_task_runner_->DeleteSoon(FROM_HERE, core_.release()); |
101 } | 103 } |
102 | 104 |
103 void NativeMessagePort::DispatchOnMessage( | 105 void NativeMessagePort::DispatchOnMessage( |
(...skipping 12 matching lines...) Expand all Loading... |
116 } | 118 } |
117 | 119 |
118 void NativeMessagePort::CloseChannel(const std::string& error_message) { | 120 void NativeMessagePort::CloseChannel(const std::string& error_message) { |
119 DCHECK(thread_checker_.CalledOnValidThread()); | 121 DCHECK(thread_checker_.CalledOnValidThread()); |
120 if (weak_message_service_) { | 122 if (weak_message_service_) { |
121 weak_message_service_->CloseChannel(port_id_, error_message); | 123 weak_message_service_->CloseChannel(port_id_, error_message); |
122 } | 124 } |
123 } | 125 } |
124 | 126 |
125 } // namespace extensions | 127 } // namespace extensions |
OLD | NEW |