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