| Index: net/spdy/spdy_session.h
|
| diff --git a/net/spdy/spdy_session.h b/net/spdy/spdy_session.h
|
| index 3ad5d27138d980b3d2adf9fab5cf5d73d6bbb3ce..1acfe1b9bb7bf871a0aa49dda8c40467c516765a 100644
|
| --- a/net/spdy/spdy_session.h
|
| +++ b/net/spdy/spdy_session.h
|
| @@ -39,6 +39,10 @@
|
|
|
| namespace net {
|
|
|
| +namespace test {
|
| +class SpdyStreamTest;
|
| +}
|
| +
|
| // This is somewhat arbitrary and not really fixed, but it will always work
|
| // reasonably with ethernet. Chop the world into 2-packet chunks. This is
|
| // somewhat arbitrary, but is reasonably small and ensures that we elicit
|
| @@ -517,9 +521,15 @@ class NET_EXPORT SpdySession : public BufferedSpdyFramerVisitorInterface,
|
| bool CloseOneIdleConnection() override;
|
|
|
| private:
|
| + friend class test::SpdyStreamTest;
|
| friend class base::RefCounted<SpdySession>;
|
| - friend class SpdyStreamRequest;
|
| + friend class HttpNetworkTransactionTest;
|
| + friend class HttpProxyClientSocketPoolTest;
|
| + friend class SpdyHttpStreamTest;
|
| + friend class SpdyNetworkTransactionTest;
|
| + friend class SpdyProxyClientSocketTest;
|
| friend class SpdySessionTest;
|
| + friend class SpdyStreamRequest;
|
|
|
| // Allow tests to access our innards for testing purposes.
|
| FRIEND_TEST_ALL_PREFIXES(SpdySessionTest, ClientPing);
|
| @@ -548,6 +558,7 @@ class NET_EXPORT SpdySession : public BufferedSpdyFramerVisitorInterface,
|
| FRIEND_TEST_ALL_PREFIXES(SpdySessionTest,
|
| CancelReservedStreamOnHeadersReceived);
|
| FRIEND_TEST_ALL_PREFIXES(SpdySessionTest, RejectInvalidUnknownFrames);
|
| + FRIEND_TEST_ALL_PREFIXES(SpdySessionPoolTest, IPAddressChanged);
|
|
|
| typedef std::deque<base::WeakPtr<SpdyStreamRequest> >
|
| PendingStreamRequestQueue;
|
| @@ -958,6 +969,10 @@ class NET_EXPORT SpdySession : public BufferedSpdyFramerVisitorInterface,
|
|
|
| size_t max_concurrent_streams() const { return max_concurrent_streams_; }
|
|
|
| + // Set whether priority->dependency conversion is enabled
|
| + // by default for all future SpdySessions.
|
| + static void SetPriorityDependencyDefaultForTesting(bool enable);
|
| +
|
| // Whether Do{Read,Write}Loop() is in the call stack. Useful for
|
| // making sure we don't destroy ourselves prematurely in that case.
|
| bool in_io_loop_;
|
| @@ -1004,6 +1019,14 @@ class NET_EXPORT SpdySession : public BufferedSpdyFramerVisitorInterface,
|
| // them?
|
| ActiveStreamMap active_streams_;
|
|
|
| + // Per-priority map from stream id to all active streams. This map will
|
| + // contain the same set of streams as |active_streams_|. It is used for
|
| + // setting dependencies to match incoming requests RequestPriority.
|
| + //
|
| + // |active_streams_by_priority_| does *not* own its SpdyStream objects.
|
| + std::map<SpdyStreamId, SpdyStream*>
|
| + active_streams_by_priority_[NUM_PRIORITIES];
|
| +
|
| // (Bijective) map from the URL to the ID of the streams that have
|
| // already started to be pushed by the server, but do not have
|
| // consumers yet. Contains a subset of |active_streams_|.
|
| @@ -1182,6 +1205,10 @@ class NET_EXPORT SpdySession : public BufferedSpdyFramerVisitorInterface,
|
|
|
| TimeFunc time_func_;
|
|
|
| + // Should priority-based dependency information be sent in stream header
|
| + // frames.
|
| + bool send_priority_dependency_;
|
| +
|
| // Used for posting asynchronous IO tasks. We use this even though
|
| // SpdySession is refcounted because we don't need to keep the SpdySession
|
| // alive if the last reference is within a RunnableMethod. Just revoke the
|
|
|