Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / net / spdy / buffered_spdy_framer.h
index a77de75..426bc5f 100644 (file)
@@ -81,7 +81,7 @@ class NET_EXPORT_PRIVATE BufferedSpdyFramerVisitorInterface {
   virtual void OnSettingsAck() {}
 
   // Called at the completion of parsing SETTINGS id and value tuples.
-  virtual void OnSettingsEnd() {};
+  virtual void OnSettingsEnd() {}
 
   // Called when a PING frame has been parsed.
   virtual void OnPing(SpdyPingId unique_id, bool is_ack) = 0;
@@ -100,7 +100,14 @@ class NET_EXPORT_PRIVATE BufferedSpdyFramerVisitorInterface {
 
   // Called when a PUSH_PROMISE frame has been parsed.
   virtual void OnPushPromise(SpdyStreamId stream_id,
-                             SpdyStreamId promised_stream_id) = 0;
+                             SpdyStreamId promised_stream_id,
+                             const SpdyHeaderBlock& headers) = 0;
+
+  // Called when a frame type we don't recognize is received.
+  // Return true if this appears to be a valid extension frame, false otherwise.
+  // We distinguish between extension frames and nonsense by checking
+  // whether the stream id is valid.
+  virtual bool OnUnknownFrame(SpdyStreamId stream_id, int frame_type) = 0;
 
  protected:
   virtual ~BufferedSpdyFramerVisitorInterface() {}
@@ -162,6 +169,7 @@ class NET_EXPORT_PRIVATE BufferedSpdyFramer
                                  size_t length,
                                  bool fin) OVERRIDE;
   virtual void OnContinuation(SpdyStreamId stream_id, bool end) OVERRIDE;
+  virtual bool OnUnknownFrame(SpdyStreamId stream_id, int frame_type) OVERRIDE;
 
   // SpdyFramer methods.
   size_t ProcessInput(const char* data, size_t len);
@@ -196,6 +204,9 @@ class NET_EXPORT_PRIVATE BufferedSpdyFramer
                              const char* data,
                              uint32 len,
                              SpdyDataFlags flags);
+  SpdyFrame* CreatePushPromise(SpdyStreamId stream_id,
+                               SpdyStreamId promised_stream_id,
+                               const SpdyHeaderBlock* headers);
 
   // Serialize a frame of unknown type.
   SpdySerializedFrame* SerializeFrame(const SpdyFrameIR& frame) {
@@ -252,6 +263,7 @@ class NET_EXPORT_PRIVATE BufferedSpdyFramer
     SpdyFrameType type;
     SpdyStreamId stream_id;
     SpdyStreamId associated_stream_id;
+    SpdyStreamId promised_stream_id;
     SpdyPriority priority;
     uint8 credential_slot;
     bool fin;