Index: net/http2/hpack/decoder/hpack_string_decoder_test.cc |
diff --git a/net/http2/hpack/decoder/hpack_string_decoder_test.cc b/net/http2/hpack/decoder/hpack_string_decoder_test.cc |
index e4afc61e4e74bb3a02c34877e6cd534e435a5c85..614fa0d5980bbb0edef18d34195f223791050ac4 100644 |
--- a/net/http2/hpack/decoder/hpack_string_decoder_test.cc |
+++ b/net/http2/hpack/decoder/hpack_string_decoder_test.cc |
@@ -6,8 +6,6 @@ |
// Tests of HpackStringDecoder. |
-#include "base/bind.h" |
-#include "base/bind_helpers.h" |
#include "base/strings/string_piece.h" |
#include "net/http2/hpack/decoder/hpack_string_collector.h" |
#include "net/http2/hpack/decoder/hpack_string_decoder_listener.h" |
@@ -74,32 +72,27 @@ class HpackStringDecoderTest |
return collector_.Collected(s, huffman_encoded); |
} |
- // Note that base::Bind() makes a copy of |expected_str| even though it is |
- // taken as a constant reference, so even if MakeValidator is called with a |
- // C-style string that is cast to a temporary std::string that gets destroyed |
- // after the call to MakeValidator, |expected_str| is still valid later when |
- // the Validator is run. |
- AssertionResult StringValidator(const string& expected_str, |
- bool expected_huffman, |
- const DecodeBuffer& input, |
- DecodeStatus status) { |
- AssertionResult result = Collected(expected_str, expected_huffman); |
- if (result) { |
- VERIFY_EQ(collector_, |
- HpackStringCollector(expected_str, expected_huffman)); |
- } else { |
- VERIFY_NE(collector_, |
- HpackStringCollector(expected_str, expected_huffman)); |
- } |
- VLOG(2) << collector_.ToString(); |
- collector_.Clear(); |
- VLOG(2) << collector_; |
- return result; |
- } |
+ // expected_str is a string rather than a const string& or StringPiece so that |
+ // the lambda makes a copy of the string, and thus the string to be passed to |
+ // Collected outlives the call to MakeValidator. |
Validator MakeValidator(const string& expected_str, bool expected_huffman) { |
- return base::Bind(&HpackStringDecoderTest::StringValidator, |
- base::Unretained(this), expected_str, expected_huffman); |
+ return |
+ [expected_str, expected_huffman, this]( |
+ const DecodeBuffer& input, DecodeStatus status) -> AssertionResult { |
+ AssertionResult result = Collected(expected_str, expected_huffman); |
+ if (result) { |
+ VERIFY_EQ(collector_, |
+ HpackStringCollector(expected_str, expected_huffman)); |
+ } else { |
+ VERIFY_NE(collector_, |
+ HpackStringCollector(expected_str, expected_huffman)); |
+ } |
+ VLOG(2) << collector_.ToString(); |
+ collector_.Clear(); |
+ VLOG(2) << collector_; |
+ return result; |
+ }; |
} |
const StartMethod start_method_; |