tree e53e242a18fdeb0445277e4d8b481ac87a92fcd1
parent b7edbb83b14daa04c166998ff1904516b8505e32
author bnc <bnc@google.com> 1563889479 -0700
committer Copybara-Service <copybara-worker@google.com> 1563894887 -0700

Change QuicSpdyStreamBodyBuffer API to decouple from QuicStreamSequencer.

The primary motivation is cleaner tests.

Before this CL:
* QuicSpdyStreamBodyBuffer keeps QuicStreamSequencer* but only calls a single
  method,
* MockSequencer is defined but its mock method is never called,
  because QuicStreamSequencer::MarkConsumed() is not virtual,
* a MockStream is needed for QuicStreamSequencer,
* QuicStreamFrames have to be constructed and fed to QuicStreamSequencer so that
  it does not crash on MarkConsumed() calls which cannot be mocked, but data is
  never actually read from QuicStreamSequencer,
* an HttpEncoder has to be used to create actual frame headers to feed to
  QuicStreamSequencer which are then not read,
* MockStream method calls triggered by QuicStreamSequencer::MarkConsumed() are
  tested, which only indirectly tests QuicSpdyStreamBodyBuffer behavior.

After this CL:
* QuicSpdyStreamBodyBuffer methods return size_t, caller must call
  QuicStreamSequencer::MarkConsumed(),
* no QuicStreamSequencer is needed,
* no MockStream is needed,
* no HttpEncoder is needed (int literals are used for frame header length),
* no QuicStreamFrames are needed,
* QuicSpdyStreamBodyBuffer behavior is directly tested by verifying return value.

gfe-relnote: n/a, no functional change to QUIC v99-only class.
PiperOrigin-RevId: 259526373
Change-Id: I3e67bf924649f0c12bd9706d9ebe13ec4be8e1bb
