| 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 |