Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Side by Side Diff: components/cronet/android/cronet_bidirectional_stream_adapter.cc

Issue 1992953004: [Cronet] Make delaying sending request headers explicit in bidirectional stream (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: self review Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698