| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "cronet_bidirectional_stream_adapter.h" | 5 #include "cronet_bidirectional_stream_adapter.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 // Reset global references. | 64 // Reset global references. |
| 65 jwrite_buffer_list.Reset(); | 65 jwrite_buffer_list.Reset(); |
| 66 jwrite_buffer_pos_list.Reset(); | 66 jwrite_buffer_pos_list.Reset(); |
| 67 jwrite_buffer_limit_list.Reset(); | 67 jwrite_buffer_limit_list.Reset(); |
| 68 } | 68 } |
| 69 | 69 |
| 70 static jlong CreateBidirectionalStream( | 70 static jlong CreateBidirectionalStream( |
| 71 JNIEnv* env, | 71 JNIEnv* env, |
| 72 const base::android::JavaParamRef<jobject>& jbidi_stream, | 72 const base::android::JavaParamRef<jobject>& jbidi_stream, |
| 73 jlong jurl_request_context_adapter, | 73 jlong jurl_request_context_adapter, |
| 74 jboolean jdisable_auto_flush) { | 74 jboolean jdelay_headers_until_next_send_data) { |
| 75 CronetURLRequestContextAdapter* context_adapter = | 75 CronetURLRequestContextAdapter* context_adapter = |
| 76 reinterpret_cast<CronetURLRequestContextAdapter*>( | 76 reinterpret_cast<CronetURLRequestContextAdapter*>( |
| 77 jurl_request_context_adapter); | 77 jurl_request_context_adapter); |
| 78 DCHECK(context_adapter); | 78 DCHECK(context_adapter); |
| 79 | 79 |
| 80 CronetBidirectionalStreamAdapter* adapter = | 80 CronetBidirectionalStreamAdapter* adapter = |
| 81 new CronetBidirectionalStreamAdapter(context_adapter, env, jbidi_stream, | 81 new CronetBidirectionalStreamAdapter(context_adapter, env, jbidi_stream, |
| 82 jdisable_auto_flush); | 82 jdelay_headers_until_next_send_data); |
| 83 | 83 |
| 84 return reinterpret_cast<jlong>(adapter); | 84 return reinterpret_cast<jlong>(adapter); |
| 85 } | 85 } |
| 86 | 86 |
| 87 // static | 87 // static |
| 88 bool CronetBidirectionalStreamAdapter::RegisterJni(JNIEnv* env) { | 88 bool CronetBidirectionalStreamAdapter::RegisterJni(JNIEnv* env) { |
| 89 return RegisterNativesImpl(env); | 89 return RegisterNativesImpl(env); |
| 90 } | 90 } |
| 91 | 91 |
| 92 CronetBidirectionalStreamAdapter::CronetBidirectionalStreamAdapter( | 92 CronetBidirectionalStreamAdapter::CronetBidirectionalStreamAdapter( |
| 93 CronetURLRequestContextAdapter* context, | 93 CronetURLRequestContextAdapter* context, |
| 94 JNIEnv* env, | 94 JNIEnv* env, |
| 95 const base::android::JavaParamRef<jobject>& jbidi_stream, | 95 const base::android::JavaParamRef<jobject>& jbidi_stream, |
| 96 bool disable_auto_flush) | 96 bool delay_headers_until_next_send_data) |
| 97 : context_(context), | 97 : context_(context), |
| 98 owner_(env, jbidi_stream), | 98 owner_(env, jbidi_stream), |
| 99 disable_auto_flush_(disable_auto_flush), | 99 delay_headers_until_next_send_data_(delay_headers_until_next_send_data), |
| 100 stream_failed_(false) {} | 100 stream_failed_(false) {} |
| 101 | 101 |
| 102 CronetBidirectionalStreamAdapter::~CronetBidirectionalStreamAdapter() { | 102 CronetBidirectionalStreamAdapter::~CronetBidirectionalStreamAdapter() { |
| 103 DCHECK(context_->IsOnNetworkThread()); | 103 DCHECK(context_->IsOnNetworkThread()); |
| 104 } | 104 } |
| 105 | 105 |
| 106 jint CronetBidirectionalStreamAdapter::Start( | 106 jint CronetBidirectionalStreamAdapter::Start( |
| 107 JNIEnv* env, | 107 JNIEnv* env, |
| 108 const base::android::JavaParamRef<jobject>& jcaller, | 108 const base::android::JavaParamRef<jobject>& jcaller, |
| 109 const base::android::JavaParamRef<jstring>& jurl, | 109 const base::android::JavaParamRef<jstring>& jurl, |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 314 DCHECK(context_->IsOnNetworkThread()); | 314 DCHECK(context_->IsOnNetworkThread()); |
| 315 DCHECK(!bidi_stream_); | 315 DCHECK(!bidi_stream_); |
| 316 request_info->extra_headers.SetHeaderIfMissing( | 316 request_info->extra_headers.SetHeaderIfMissing( |
| 317 net::HttpRequestHeaders::kUserAgent, context_->GetURLRequestContext() | 317 net::HttpRequestHeaders::kUserAgent, context_->GetURLRequestContext() |
| 318 ->http_user_agent_settings() | 318 ->http_user_agent_settings() |
| 319 ->GetUserAgent()); | 319 ->GetUserAgent()); |
| 320 bidi_stream_.reset(new net::BidirectionalStream( | 320 bidi_stream_.reset(new net::BidirectionalStream( |
| 321 std::move(request_info), context_->GetURLRequestContext() | 321 std::move(request_info), context_->GetURLRequestContext() |
| 322 ->http_transaction_factory() | 322 ->http_transaction_factory() |
| 323 ->GetSession(), | 323 ->GetSession(), |
| 324 disable_auto_flush_, this)); | 324 delay_headers_until_next_send_data_, this)); |
| 325 } | 325 } |
| 326 | 326 |
| 327 void CronetBidirectionalStreamAdapter::ReadDataOnNetworkThread( | 327 void CronetBidirectionalStreamAdapter::ReadDataOnNetworkThread( |
| 328 scoped_refptr<IOBufferWithByteBuffer> read_buffer, | 328 scoped_refptr<IOBufferWithByteBuffer> read_buffer, |
| 329 int buffer_size) { | 329 int buffer_size) { |
| 330 DCHECK(context_->IsOnNetworkThread()); | 330 DCHECK(context_->IsOnNetworkThread()); |
| 331 DCHECK(read_buffer); | 331 DCHECK(read_buffer); |
| 332 DCHECK(!read_buffer_); | 332 DCHECK(!read_buffer_); |
| 333 | 333 |
| 334 read_buffer_ = read_buffer; | 334 read_buffer_ = read_buffer; |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 391 | 391 |
| 392 std::vector<std::string> headers; | 392 std::vector<std::string> headers; |
| 393 for (const auto& header : header_block) { | 393 for (const auto& header : header_block) { |
| 394 headers.push_back(header.first.as_string()); | 394 headers.push_back(header.first.as_string()); |
| 395 headers.push_back(header.second.as_string()); | 395 headers.push_back(header.second.as_string()); |
| 396 } | 396 } |
| 397 return base::android::ToJavaArrayOfStrings(env, headers); | 397 return base::android::ToJavaArrayOfStrings(env, headers); |
| 398 } | 398 } |
| 399 | 399 |
| 400 } // namespace cronet | 400 } // namespace cronet |
| OLD | NEW |