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 "content/child/web_data_consumer_handle_impl.h" | 5 #include "content/child/web_data_consumer_handle_impl.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <limits> | 9 #include <limits> |
10 #include <utility> | 10 #include <utility> |
(...skipping 19 matching lines...) Expand all Loading... |
30 friend class base::RefCountedThreadSafe<Context>; | 30 friend class base::RefCountedThreadSafe<Context>; |
31 ~Context() {} | 31 ~Context() {} |
32 Handle handle_; | 32 Handle handle_; |
33 | 33 |
34 DISALLOW_COPY_AND_ASSIGN(Context); | 34 DISALLOW_COPY_AND_ASSIGN(Context); |
35 }; | 35 }; |
36 | 36 |
37 WebDataConsumerHandleImpl::ReaderImpl::ReaderImpl( | 37 WebDataConsumerHandleImpl::ReaderImpl::ReaderImpl( |
38 scoped_refptr<Context> context, | 38 scoped_refptr<Context> context, |
39 Client* client) | 39 Client* client) |
40 : context_(context), handle_watcher_(FROM_HERE), client_(client) { | 40 : context_(context), |
| 41 handle_watcher_(FROM_HERE, mojo::SimpleWatcher::ArmingPolicy::AUTOMATIC), |
| 42 client_(client) { |
41 if (client_) | 43 if (client_) |
42 StartWatching(); | 44 StartWatching(); |
43 } | 45 } |
44 | 46 |
45 WebDataConsumerHandleImpl::ReaderImpl::~ReaderImpl() { | 47 WebDataConsumerHandleImpl::ReaderImpl::~ReaderImpl() { |
46 } | 48 } |
47 | 49 |
48 Result WebDataConsumerHandleImpl::ReaderImpl::read(void* data, | 50 Result WebDataConsumerHandleImpl::ReaderImpl::read(void* data, |
49 size_t size, | 51 size_t size, |
50 Flags flags, | 52 Flags flags, |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 case MOJO_RESULT_SHOULD_WAIT: | 125 case MOJO_RESULT_SHOULD_WAIT: |
124 return ShouldWait; | 126 return ShouldWait; |
125 case MOJO_RESULT_RESOURCE_EXHAUSTED: | 127 case MOJO_RESULT_RESOURCE_EXHAUSTED: |
126 return ResourceExhausted; | 128 return ResourceExhausted; |
127 default: | 129 default: |
128 return UnexpectedError; | 130 return UnexpectedError; |
129 } | 131 } |
130 } | 132 } |
131 | 133 |
132 void WebDataConsumerHandleImpl::ReaderImpl::StartWatching() { | 134 void WebDataConsumerHandleImpl::ReaderImpl::StartWatching() { |
133 handle_watcher_.Start( | 135 handle_watcher_.Watch( |
134 context_->handle().get(), MOJO_HANDLE_SIGNAL_READABLE, | 136 context_->handle().get(), MOJO_HANDLE_SIGNAL_READABLE, |
135 base::Bind(&ReaderImpl::OnHandleGotReadable, base::Unretained(this))); | 137 base::Bind(&ReaderImpl::OnHandleGotReadable, base::Unretained(this))); |
136 } | 138 } |
137 | 139 |
138 void WebDataConsumerHandleImpl::ReaderImpl::OnHandleGotReadable(MojoResult) { | 140 void WebDataConsumerHandleImpl::ReaderImpl::OnHandleGotReadable(MojoResult) { |
139 DCHECK(client_); | 141 DCHECK(client_); |
140 client_->didGetReadable(); | 142 client_->didGetReadable(); |
141 } | 143 } |
142 | 144 |
143 WebDataConsumerHandleImpl::WebDataConsumerHandleImpl(Handle handle) | 145 WebDataConsumerHandleImpl::WebDataConsumerHandleImpl(Handle handle) |
144 : context_(new Context(std::move(handle))) {} | 146 : context_(new Context(std::move(handle))) {} |
145 | 147 |
146 WebDataConsumerHandleImpl::~WebDataConsumerHandleImpl() { | 148 WebDataConsumerHandleImpl::~WebDataConsumerHandleImpl() { |
147 } | 149 } |
148 | 150 |
149 std::unique_ptr<blink::WebDataConsumerHandle::Reader> | 151 std::unique_ptr<blink::WebDataConsumerHandle::Reader> |
150 WebDataConsumerHandleImpl::obtainReader(Client* client) { | 152 WebDataConsumerHandleImpl::obtainReader(Client* client) { |
151 return base::WrapUnique(new ReaderImpl(context_, client)); | 153 return base::WrapUnique(new ReaderImpl(context_, client)); |
152 } | 154 } |
153 | 155 |
154 const char* WebDataConsumerHandleImpl::debugName() const { | 156 const char* WebDataConsumerHandleImpl::debugName() const { |
155 return "WebDataConsumerHandleImpl"; | 157 return "WebDataConsumerHandleImpl"; |
156 } | 158 } |
157 | 159 |
158 } // namespace content | 160 } // namespace content |
OLD | NEW |