diff --git a/quic/core/quic_write_blocked_list.h b/quic/core/quic_write_blocked_list.h
index 7b7c5a8..17bc695 100644
--- a/quic/core/quic_write_blocked_list.h
+++ b/quic/core/quic_write_blocked_list.h
@@ -73,6 +73,7 @@
       QUIC_BUG << "Cannot switch scheduler with registered streams";
       return false;
     }
+    QUIC_DVLOG(1) << "Using HTTP2 Priority Scheduler";
     priority_write_scheduler_ =
         QuicMakeUnique<spdy::Http2PriorityWriteScheduler<QuicStreamId>>();
     scheduler_type_ = spdy::WriteSchedulerType::HTTP2;
diff --git a/quic/tools/quic_simple_server_session.cc b/quic/tools/quic_simple_server_session.cc
index 19a5455..7515936 100644
--- a/quic/tools/quic_simple_server_session.cc
+++ b/quic/tools/quic_simple_server_session.cc
@@ -69,6 +69,7 @@
     const std::string& request_url,
     const std::list<QuicBackendResponse::ServerPushInfo>& resources,
     QuicStreamId original_stream_id,
+    const spdy::SpdyStreamPrecedence& /*original_precedence*/,
     const spdy::SpdyHeaderBlock& original_request_headers) {
   if (!server_push_enabled()) {
     return;
@@ -81,8 +82,9 @@
         QuicUtils::StreamIdDelta(connection()->transport_version());
     SendPushPromise(original_stream_id, highest_promised_stream_id_,
                     headers.Clone());
-    promised_streams_.push_back(PromisedStreamInfo(
-        std::move(headers), highest_promised_stream_id_, resource.priority));
+    promised_streams_.push_back(
+        PromisedStreamInfo(std::move(headers), highest_promised_stream_id_,
+                           spdy::SpdyStreamPrecedence(resource.priority)));
   }
 
   // Procese promised push request as many as possible.
@@ -217,8 +219,7 @@
     DCHECK_EQ(promised_info.stream_id, promised_stream->id());
     QUIC_DLOG(INFO) << "created server push stream " << promised_stream->id();
 
-    promised_stream->SetPriority(
-        spdy::SpdyStreamPrecedence(promised_info.priority));
+    promised_stream->SetPriority(promised_info.precedence);
 
     spdy::SpdyHeaderBlock request_headers(
         std::move(promised_info.request_headers));
diff --git a/quic/tools/quic_simple_server_session.h b/quic/tools/quic_simple_server_session.h
index d8cd6b5..12748ad 100644
--- a/quic/tools/quic_simple_server_session.h
+++ b/quic/tools/quic_simple_server_session.h
@@ -40,14 +40,14 @@
    public:
     PromisedStreamInfo(spdy::SpdyHeaderBlock request_headers,
                        QuicStreamId stream_id,
-                       spdy::SpdyPriority priority)
+                       const spdy::SpdyStreamPrecedence& precedence)
         : request_headers(std::move(request_headers)),
           stream_id(stream_id),
-          priority(priority),
+          precedence(precedence),
           is_cancelled(false) {}
     spdy::SpdyHeaderBlock request_headers;
     QuicStreamId stream_id;
-    spdy::SpdyPriority priority;
+    spdy::SpdyStreamPrecedence precedence;
     bool is_cancelled;
   };
 
@@ -76,6 +76,7 @@
       const std::string& request_url,
       const std::list<QuicBackendResponse::ServerPushInfo>& resources,
       QuicStreamId original_stream_id,
+      const spdy::SpdyStreamPrecedence& original_precedence,
       const spdy::SpdyHeaderBlock& original_request_headers);
 
   void OnCanCreateNewOutgoingStream(bool unidirectional) override;
diff --git a/quic/tools/quic_simple_server_session_test.cc b/quic/tools/quic_simple_server_session_test.cc
index cd516b7..7fbce71 100644
--- a/quic/tools/quic_simple_server_session_test.cc
+++ b/quic/tools/quic_simple_server_session_test.cc
@@ -685,9 +685,10 @@
         EXPECT_CALL(*session_, SendBlocked(stream_id));
       }
     }
-    session_->PromisePushResources(request_url, push_resources,
-                                   GetNthClientInitiatedBidirectionalId(0),
-                                   request_headers);
+    session_->PromisePushResources(
+        request_url, push_resources, GetNthClientInitiatedBidirectionalId(0),
+        spdy::SpdyStreamPrecedence(0, spdy::kHttp2DefaultStreamWeight, false),
+        request_headers);
     return data_frame_header_length;
   }
 
diff --git a/quic/tools/quic_simple_server_stream.cc b/quic/tools/quic_simple_server_stream.cc
index f852206..26ea62a 100644
--- a/quic/tools/quic_simple_server_stream.cc
+++ b/quic/tools/quic_simple_server_stream.cc
@@ -239,7 +239,7 @@
                   << " push resources.";
     QuicSimpleServerSession* session =
         static_cast<QuicSimpleServerSession*>(spdy_session());
-    session->PromisePushResources(request_url, resources, id(),
+    session->PromisePushResources(request_url, resources, id(), precedence(),
                                   request_headers_);
   }
 
diff --git a/quic/tools/quic_simple_server_stream_test.cc b/quic/tools/quic_simple_server_stream_test.cc
index 75afb5d..b53f9d0 100644
--- a/quic/tools/quic_simple_server_stream_test.cc
+++ b/quic/tools/quic_simple_server_stream_test.cc
@@ -145,15 +145,17 @@
       const std::string& request_url,
       const std::list<QuicBackendResponse::ServerPushInfo>& resources,
       QuicStreamId original_stream_id,
+      const spdy::SpdyStreamPrecedence& original_precedence,
       const spdy::SpdyHeaderBlock& original_request_headers) override {
     original_request_headers_ = original_request_headers.Clone();
     PromisePushResourcesMock(request_url, resources, original_stream_id,
-                             original_request_headers);
+                             original_precedence, original_request_headers);
   }
-  MOCK_METHOD4(PromisePushResourcesMock,
+  MOCK_METHOD5(PromisePushResourcesMock,
                void(const std::string&,
                     const std::list<QuicBackendResponse::ServerPushInfo>&,
                     QuicStreamId,
+                    const spdy::SpdyStreamPrecedence&,
                     const spdy::SpdyHeaderBlock&));
 
   using QuicSession::ActivateStream;
@@ -515,7 +517,7 @@
                             host + request_path, _,
                             GetNthClientInitiatedBidirectionalStreamId(
                                 connection_->transport_version(), 0),
-                            _));
+                            _, _));
   EXPECT_CALL(*stream_, WriteHeadersMock(false));
   if (HasFrameHeader()) {
     EXPECT_CALL(session_, WritevData(_, _, header_length, _, NO_FIN));
