diff --git a/http2/decoder/decode_buffer.h b/http2/decoder/decode_buffer.h
index e6604f1..241c553 100644
--- a/http2/decoder/decode_buffer.h
+++ b/http2/decoder/decode_buffer.h
@@ -17,14 +17,14 @@
 #include <algorithm>
 #include <cstdint>
 
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
 #include "net/third_party/quiche/src/http2/platform/api/http2_logging.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace http2 {
 class DecodeBufferSubset;
 
-class HTTP2_EXPORT_PRIVATE DecodeBuffer {
+class QUICHE_EXPORT_PRIVATE DecodeBuffer {
  public:
   DecodeBuffer(const char* buffer, size_t len)
       : buffer_(buffer), cursor_(buffer), beyond_(buffer + len) {
@@ -129,7 +129,7 @@
 // DecodeBuffer, though they can be nested (i.e. a DecodeBufferSubset's
 // base may itself be a DecodeBufferSubset). This avoids the AdvanceCursor
 // being called erroneously.
-class HTTP2_EXPORT_PRIVATE DecodeBufferSubset : public DecodeBuffer {
+class QUICHE_EXPORT_PRIVATE DecodeBufferSubset : public DecodeBuffer {
  public:
   DecodeBufferSubset(DecodeBuffer* base, size_t subset_len)
       : DecodeBuffer(base->cursor(), base->MinLengthRemaining(subset_len)),
diff --git a/http2/decoder/decode_http2_structures.h b/http2/decoder/decode_http2_structures.h
index 3f6a317..cd3eda6 100644
--- a/http2/decoder/decode_http2_structures.h
+++ b/http2/decoder/decode_http2_structures.h
@@ -9,7 +9,7 @@
 
 #include "net/third_party/quiche/src/http2/decoder/decode_buffer.h"
 #include "net/third_party/quiche/src/http2/http2_structures.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 
@@ -17,17 +17,17 @@
 // to end, advancing the cursor by STRUCTURE::EncodedSize(). The decode buffer
 // must be large enough (i.e. b->Remaining() >= STRUCTURE::EncodedSize()).
 
-HTTP2_EXPORT_PRIVATE void DoDecode(Http2FrameHeader* out, DecodeBuffer* b);
-HTTP2_EXPORT_PRIVATE void DoDecode(Http2PriorityFields* out, DecodeBuffer* b);
-HTTP2_EXPORT_PRIVATE void DoDecode(Http2RstStreamFields* out, DecodeBuffer* b);
-HTTP2_EXPORT_PRIVATE void DoDecode(Http2SettingFields* out, DecodeBuffer* b);
-HTTP2_EXPORT_PRIVATE void DoDecode(Http2PushPromiseFields* out,
-                                   DecodeBuffer* b);
-HTTP2_EXPORT_PRIVATE void DoDecode(Http2PingFields* out, DecodeBuffer* b);
-HTTP2_EXPORT_PRIVATE void DoDecode(Http2GoAwayFields* out, DecodeBuffer* b);
-HTTP2_EXPORT_PRIVATE void DoDecode(Http2WindowUpdateFields* out,
-                                   DecodeBuffer* b);
-HTTP2_EXPORT_PRIVATE void DoDecode(Http2AltSvcFields* out, DecodeBuffer* b);
+QUICHE_EXPORT_PRIVATE void DoDecode(Http2FrameHeader* out, DecodeBuffer* b);
+QUICHE_EXPORT_PRIVATE void DoDecode(Http2PriorityFields* out, DecodeBuffer* b);
+QUICHE_EXPORT_PRIVATE void DoDecode(Http2RstStreamFields* out, DecodeBuffer* b);
+QUICHE_EXPORT_PRIVATE void DoDecode(Http2SettingFields* out, DecodeBuffer* b);
+QUICHE_EXPORT_PRIVATE void DoDecode(Http2PushPromiseFields* out,
+                                    DecodeBuffer* b);
+QUICHE_EXPORT_PRIVATE void DoDecode(Http2PingFields* out, DecodeBuffer* b);
+QUICHE_EXPORT_PRIVATE void DoDecode(Http2GoAwayFields* out, DecodeBuffer* b);
+QUICHE_EXPORT_PRIVATE void DoDecode(Http2WindowUpdateFields* out,
+                                    DecodeBuffer* b);
+QUICHE_EXPORT_PRIVATE void DoDecode(Http2AltSvcFields* out, DecodeBuffer* b);
 
 }  // namespace http2
 
diff --git a/http2/decoder/decode_status.h b/http2/decoder/decode_status.h
index fdecd22..dcfed04 100644
--- a/http2/decoder/decode_status.h
+++ b/http2/decoder/decode_status.h
@@ -10,7 +10,7 @@
 
 #include <ostream>
 
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 
@@ -25,8 +25,8 @@
   // an HTTP/2 frame has padding declared to be larger than the payload).
   kDecodeError,
 };
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
-                                              DecodeStatus v);
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
+                                               DecodeStatus v);
 
 }  // namespace http2
 
diff --git a/http2/decoder/frame_decoder_state.h b/http2/decoder/frame_decoder_state.h
index b44d29b..69cbc76 100644
--- a/http2/decoder/frame_decoder_state.h
+++ b/http2/decoder/frame_decoder_state.h
@@ -22,15 +22,15 @@
 #include "net/third_party/quiche/src/http2/decoder/http2_structure_decoder.h"
 #include "net/third_party/quiche/src/http2/http2_constants.h"
 #include "net/third_party/quiche/src/http2/http2_structures.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
 #include "net/third_party/quiche/src/http2/platform/api/http2_logging.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 namespace test {
 class FrameDecoderStatePeer;
 }  // namespace test
 
-class HTTP2_EXPORT_PRIVATE FrameDecoderState {
+class QUICHE_EXPORT_PRIVATE FrameDecoderState {
  public:
   FrameDecoderState() {}
 
diff --git a/http2/decoder/http2_frame_decoder.h b/http2/decoder/http2_frame_decoder.h
index dea40b7..cee8ec9 100644
--- a/http2/decoder/http2_frame_decoder.h
+++ b/http2/decoder/http2_frame_decoder.h
@@ -38,15 +38,15 @@
 #include "net/third_party/quiche/src/http2/decoder/payload_decoders/unknown_payload_decoder.h"
 #include "net/third_party/quiche/src/http2/decoder/payload_decoders/window_update_payload_decoder.h"
 #include "net/third_party/quiche/src/http2/http2_structures.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
 #include "net/third_party/quiche/src/http2/platform/api/http2_logging.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 namespace test {
 class Http2FrameDecoderPeer;
 }  // namespace test
 
-class HTTP2_EXPORT_PRIVATE Http2FrameDecoder {
+class QUICHE_EXPORT_PRIVATE Http2FrameDecoder {
  public:
   explicit Http2FrameDecoder(Http2FrameDecoderListener* listener);
   Http2FrameDecoder() : Http2FrameDecoder(nullptr) {}
diff --git a/http2/decoder/http2_structure_decoder.h b/http2/decoder/http2_structure_decoder.h
index 8ef5f78..0429097 100644
--- a/http2/decoder/http2_structure_decoder.h
+++ b/http2/decoder/http2_structure_decoder.h
@@ -19,15 +19,15 @@
 #include "net/third_party/quiche/src/http2/decoder/decode_http2_structures.h"
 #include "net/third_party/quiche/src/http2/decoder/decode_status.h"
 #include "net/third_party/quiche/src/http2/http2_structures.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
 #include "net/third_party/quiche/src/http2/platform/api/http2_logging.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 namespace test {
 class Http2StructureDecoderPeer;
 }  // namespace test
 
-class HTTP2_EXPORT_PRIVATE Http2StructureDecoder {
+class QUICHE_EXPORT_PRIVATE Http2StructureDecoder {
  public:
   // The caller needs to keep track of whether to call Start or Resume.
   //
diff --git a/http2/decoder/payload_decoders/altsvc_payload_decoder.h b/http2/decoder/payload_decoders/altsvc_payload_decoder.h
index e3523f9..d6df679 100644
--- a/http2/decoder/payload_decoders/altsvc_payload_decoder.h
+++ b/http2/decoder/payload_decoders/altsvc_payload_decoder.h
@@ -11,14 +11,14 @@
 #include "net/third_party/quiche/src/http2/decoder/decode_status.h"
 #include "net/third_party/quiche/src/http2/decoder/frame_decoder_state.h"
 #include "net/third_party/quiche/src/http2/http2_structures.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 namespace test {
 class AltSvcPayloadDecoderPeer;
 }  // namespace test
 
-class HTTP2_EXPORT_PRIVATE AltSvcPayloadDecoder {
+class QUICHE_EXPORT_PRIVATE AltSvcPayloadDecoder {
  public:
   // States during decoding of a ALTSVC frame.
   enum class PayloadState {
diff --git a/http2/decoder/payload_decoders/continuation_payload_decoder.h b/http2/decoder/payload_decoders/continuation_payload_decoder.h
index 63b16ae..49716a8 100644
--- a/http2/decoder/payload_decoders/continuation_payload_decoder.h
+++ b/http2/decoder/payload_decoders/continuation_payload_decoder.h
@@ -10,11 +10,11 @@
 #include "net/third_party/quiche/src/http2/decoder/decode_buffer.h"
 #include "net/third_party/quiche/src/http2/decoder/decode_status.h"
 #include "net/third_party/quiche/src/http2/decoder/frame_decoder_state.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 
-class HTTP2_EXPORT_PRIVATE ContinuationPayloadDecoder {
+class QUICHE_EXPORT_PRIVATE ContinuationPayloadDecoder {
  public:
   // Starts the decoding of a CONTINUATION frame's payload, and completes
   // it if the entire payload is in the provided decode buffer.
diff --git a/http2/decoder/payload_decoders/data_payload_decoder.h b/http2/decoder/payload_decoders/data_payload_decoder.h
index 1e083a9..a45e0e3 100644
--- a/http2/decoder/payload_decoders/data_payload_decoder.h
+++ b/http2/decoder/payload_decoders/data_payload_decoder.h
@@ -10,14 +10,14 @@
 #include "net/third_party/quiche/src/http2/decoder/decode_buffer.h"
 #include "net/third_party/quiche/src/http2/decoder/decode_status.h"
 #include "net/third_party/quiche/src/http2/decoder/frame_decoder_state.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 namespace test {
 class DataPayloadDecoderPeer;
 }  // namespace test
 
-class HTTP2_EXPORT_PRIVATE DataPayloadDecoder {
+class QUICHE_EXPORT_PRIVATE DataPayloadDecoder {
  public:
   // States during decoding of a DATA frame.
   enum class PayloadState {
diff --git a/http2/decoder/payload_decoders/goaway_payload_decoder.h b/http2/decoder/payload_decoders/goaway_payload_decoder.h
index 7a50873..bf21bb1 100644
--- a/http2/decoder/payload_decoders/goaway_payload_decoder.h
+++ b/http2/decoder/payload_decoders/goaway_payload_decoder.h
@@ -14,14 +14,14 @@
 #include "net/third_party/quiche/src/http2/decoder/decode_status.h"
 #include "net/third_party/quiche/src/http2/decoder/frame_decoder_state.h"
 #include "net/third_party/quiche/src/http2/http2_structures.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 namespace test {
 class GoAwayPayloadDecoderPeer;
 }  // namespace test
 
-class HTTP2_EXPORT_PRIVATE GoAwayPayloadDecoder {
+class QUICHE_EXPORT_PRIVATE GoAwayPayloadDecoder {
  public:
   // States during decoding of a GOAWAY frame.
   enum class PayloadState {
diff --git a/http2/decoder/payload_decoders/headers_payload_decoder.h b/http2/decoder/payload_decoders/headers_payload_decoder.h
index d3cdfe5..80afa0c 100644
--- a/http2/decoder/payload_decoders/headers_payload_decoder.h
+++ b/http2/decoder/payload_decoders/headers_payload_decoder.h
@@ -11,14 +11,14 @@
 #include "net/third_party/quiche/src/http2/decoder/decode_status.h"
 #include "net/third_party/quiche/src/http2/decoder/frame_decoder_state.h"
 #include "net/third_party/quiche/src/http2/http2_structures.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 namespace test {
 class HeadersPayloadDecoderPeer;
 }  // namespace test
 
-class HTTP2_EXPORT_PRIVATE HeadersPayloadDecoder {
+class QUICHE_EXPORT_PRIVATE HeadersPayloadDecoder {
  public:
   // States during decoding of a HEADERS frame, unless the fast path kicks
   // in, in which case the state machine will be bypassed.
diff --git a/http2/decoder/payload_decoders/ping_payload_decoder.h b/http2/decoder/payload_decoders/ping_payload_decoder.h
index 84704fb..a24f729 100644
--- a/http2/decoder/payload_decoders/ping_payload_decoder.h
+++ b/http2/decoder/payload_decoders/ping_payload_decoder.h
@@ -12,14 +12,14 @@
 #include "net/third_party/quiche/src/http2/decoder/decode_status.h"
 #include "net/third_party/quiche/src/http2/decoder/frame_decoder_state.h"
 #include "net/third_party/quiche/src/http2/http2_structures.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 namespace test {
 class PingPayloadDecoderPeer;
 }  // namespace test
 
-class HTTP2_EXPORT_PRIVATE PingPayloadDecoder {
+class QUICHE_EXPORT_PRIVATE PingPayloadDecoder {
  public:
   // Starts the decoding of a PING frame's payload, and completes it if the
   // entire payload is in the provided decode buffer.
diff --git a/http2/decoder/payload_decoders/priority_payload_decoder.h b/http2/decoder/payload_decoders/priority_payload_decoder.h
index 921eefe..75ef651 100644
--- a/http2/decoder/payload_decoders/priority_payload_decoder.h
+++ b/http2/decoder/payload_decoders/priority_payload_decoder.h
@@ -11,14 +11,14 @@
 #include "net/third_party/quiche/src/http2/decoder/decode_status.h"
 #include "net/third_party/quiche/src/http2/decoder/frame_decoder_state.h"
 #include "net/third_party/quiche/src/http2/http2_structures.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 namespace test {
 class PriorityPayloadDecoderPeer;
 }  // namespace test
 
-class HTTP2_EXPORT_PRIVATE PriorityPayloadDecoder {
+class QUICHE_EXPORT_PRIVATE PriorityPayloadDecoder {
  public:
   // Starts the decoding of a PRIORITY frame's payload, and completes it if
   // the entire payload is in the provided decode buffer.
diff --git a/http2/decoder/payload_decoders/push_promise_payload_decoder.h b/http2/decoder/payload_decoders/push_promise_payload_decoder.h
index 2db9cb3..6cd27d2 100644
--- a/http2/decoder/payload_decoders/push_promise_payload_decoder.h
+++ b/http2/decoder/payload_decoders/push_promise_payload_decoder.h
@@ -11,14 +11,14 @@
 #include "net/third_party/quiche/src/http2/decoder/decode_status.h"
 #include "net/third_party/quiche/src/http2/decoder/frame_decoder_state.h"
 #include "net/third_party/quiche/src/http2/http2_structures.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 namespace test {
 class PushPromisePayloadDecoderPeer;
 }  // namespace test
 
-class HTTP2_EXPORT_PRIVATE PushPromisePayloadDecoder {
+class QUICHE_EXPORT_PRIVATE PushPromisePayloadDecoder {
  public:
   // States during decoding of a PUSH_PROMISE frame.
   enum class PayloadState {
diff --git a/http2/decoder/payload_decoders/rst_stream_payload_decoder.h b/http2/decoder/payload_decoders/rst_stream_payload_decoder.h
index 947fc06..6842ffb 100644
--- a/http2/decoder/payload_decoders/rst_stream_payload_decoder.h
+++ b/http2/decoder/payload_decoders/rst_stream_payload_decoder.h
@@ -11,14 +11,14 @@
 #include "net/third_party/quiche/src/http2/decoder/decode_status.h"
 #include "net/third_party/quiche/src/http2/decoder/frame_decoder_state.h"
 #include "net/third_party/quiche/src/http2/http2_structures.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 namespace test {
 class RstStreamPayloadDecoderPeer;
 }  // namespace test
 
-class HTTP2_EXPORT_PRIVATE RstStreamPayloadDecoder {
+class QUICHE_EXPORT_PRIVATE RstStreamPayloadDecoder {
  public:
   // Starts the decoding of a RST_STREAM frame's payload, and completes it if
   // the entire payload is in the provided decode buffer.
diff --git a/http2/decoder/payload_decoders/settings_payload_decoder.h b/http2/decoder/payload_decoders/settings_payload_decoder.h
index 7e3c313..e215f7e 100644
--- a/http2/decoder/payload_decoders/settings_payload_decoder.h
+++ b/http2/decoder/payload_decoders/settings_payload_decoder.h
@@ -12,14 +12,14 @@
 #include "net/third_party/quiche/src/http2/decoder/decode_status.h"
 #include "net/third_party/quiche/src/http2/decoder/frame_decoder_state.h"
 #include "net/third_party/quiche/src/http2/http2_structures.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 namespace test {
 class SettingsPayloadDecoderPeer;
 }  // namespace test
 
-class HTTP2_EXPORT_PRIVATE SettingsPayloadDecoder {
+class QUICHE_EXPORT_PRIVATE SettingsPayloadDecoder {
  public:
   // Starts the decoding of a SETTINGS frame's payload, and completes it if
   // the entire payload is in the provided decode buffer.
diff --git a/http2/decoder/payload_decoders/unknown_payload_decoder.h b/http2/decoder/payload_decoders/unknown_payload_decoder.h
index 7bf4103..a716b30 100644
--- a/http2/decoder/payload_decoders/unknown_payload_decoder.h
+++ b/http2/decoder/payload_decoders/unknown_payload_decoder.h
@@ -13,11 +13,11 @@
 #include "net/third_party/quiche/src/http2/decoder/decode_buffer.h"
 #include "net/third_party/quiche/src/http2/decoder/decode_status.h"
 #include "net/third_party/quiche/src/http2/decoder/frame_decoder_state.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 
-class HTTP2_EXPORT_PRIVATE UnknownPayloadDecoder {
+class QUICHE_EXPORT_PRIVATE UnknownPayloadDecoder {
  public:
   // Starts decoding a payload of unknown type; just passes it to the listener.
   DecodeStatus StartDecodingPayload(FrameDecoderState* state, DecodeBuffer* db);
diff --git a/http2/decoder/payload_decoders/window_update_payload_decoder.h b/http2/decoder/payload_decoders/window_update_payload_decoder.h
index 158c165..18a1f0c 100644
--- a/http2/decoder/payload_decoders/window_update_payload_decoder.h
+++ b/http2/decoder/payload_decoders/window_update_payload_decoder.h
@@ -11,14 +11,14 @@
 #include "net/third_party/quiche/src/http2/decoder/decode_status.h"
 #include "net/third_party/quiche/src/http2/decoder/frame_decoder_state.h"
 #include "net/third_party/quiche/src/http2/http2_structures.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 namespace test {
 class WindowUpdatePayloadDecoderPeer;
 }  // namespace test
 
-class HTTP2_EXPORT_PRIVATE WindowUpdatePayloadDecoder {
+class QUICHE_EXPORT_PRIVATE WindowUpdatePayloadDecoder {
  public:
   // Starts decoding a WINDOW_UPDATE frame's payload, and completes it if
   // the entire payload is in the provided decode buffer.
diff --git a/http2/hpack/decoder/hpack_block_decoder.h b/http2/hpack/decoder/hpack_block_decoder.h
index fb44c3f..ed4b0b0 100644
--- a/http2/hpack/decoder/hpack_block_decoder.h
+++ b/http2/hpack/decoder/hpack_block_decoder.h
@@ -16,12 +16,12 @@
 #include "net/third_party/quiche/src/http2/decoder/decode_status.h"
 #include "net/third_party/quiche/src/http2/hpack/decoder/hpack_entry_decoder.h"
 #include "net/third_party/quiche/src/http2/hpack/decoder/hpack_entry_decoder_listener.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
 #include "net/third_party/quiche/src/http2/platform/api/http2_logging.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 
-class HTTP2_EXPORT_PRIVATE HpackBlockDecoder {
+class QUICHE_EXPORT_PRIVATE HpackBlockDecoder {
  public:
   explicit HpackBlockDecoder(HpackEntryDecoderListener* listener)
       : listener_(listener) {
@@ -57,8 +57,8 @@
   bool before_entry_ = true;
 };
 
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
-                                              const HpackBlockDecoder& v);
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
+                                               const HpackBlockDecoder& v);
 
 }  // namespace http2
 
diff --git a/http2/hpack/decoder/hpack_decoder.h b/http2/hpack/decoder/hpack_decoder.h
index 663fef6..0de876a 100644
--- a/http2/hpack/decoder/hpack_decoder.h
+++ b/http2/hpack/decoder/hpack_decoder.h
@@ -29,7 +29,7 @@
 #include "net/third_party/quiche/src/http2/hpack/decoder/hpack_decoder_state.h"
 #include "net/third_party/quiche/src/http2/hpack/decoder/hpack_decoder_tables.h"
 #include "net/third_party/quiche/src/http2/hpack/decoder/hpack_whole_entry_buffer.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace http2 {
@@ -37,7 +37,7 @@
 class HpackDecoderPeer;
 }  // namespace test
 
-class HTTP2_EXPORT_PRIVATE HpackDecoder {
+class QUICHE_EXPORT_PRIVATE HpackDecoder {
  public:
   HpackDecoder(HpackDecoderListener* listener, size_t max_string_size);
   virtual ~HpackDecoder();
diff --git a/http2/hpack/decoder/hpack_decoder_listener.h b/http2/hpack/decoder/hpack_decoder_listener.h
index 84eaf4a..f1b76db 100644
--- a/http2/hpack/decoder/hpack_decoder_listener.h
+++ b/http2/hpack/decoder/hpack_decoder_listener.h
@@ -10,12 +10,12 @@
 
 #include "net/third_party/quiche/src/http2/hpack/hpack_string.h"
 #include "net/third_party/quiche/src/http2/hpack/http2_hpack_constants.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace http2 {
 
-class HTTP2_EXPORT_PRIVATE HpackDecoderListener {
+class QUICHE_EXPORT_PRIVATE HpackDecoderListener {
  public:
   HpackDecoderListener();
   virtual ~HpackDecoderListener();
@@ -43,7 +43,7 @@
 
 // A no-op implementation of HpackDecoderListener, useful for ignoring
 // callbacks once an error is detected.
-class HTTP2_EXPORT_PRIVATE HpackDecoderNoOpListener
+class QUICHE_EXPORT_PRIVATE HpackDecoderNoOpListener
     : public HpackDecoderListener {
  public:
   HpackDecoderNoOpListener();
diff --git a/http2/hpack/decoder/hpack_decoder_state.h b/http2/hpack/decoder/hpack_decoder_state.h
index 0139b31..4436ef3 100644
--- a/http2/hpack/decoder/hpack_decoder_state.h
+++ b/http2/hpack/decoder/hpack_decoder_state.h
@@ -21,7 +21,7 @@
 #include "net/third_party/quiche/src/http2/hpack/decoder/hpack_decoder_tables.h"
 #include "net/third_party/quiche/src/http2/hpack/decoder/hpack_whole_entry_listener.h"
 #include "net/third_party/quiche/src/http2/hpack/http2_hpack_constants.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace http2 {
@@ -29,7 +29,7 @@
 class HpackDecoderStatePeer;
 }  // namespace test
 
-class HTTP2_EXPORT_PRIVATE HpackDecoderState : public HpackWholeEntryListener {
+class QUICHE_EXPORT_PRIVATE HpackDecoderState : public HpackWholeEntryListener {
  public:
   explicit HpackDecoderState(HpackDecoderListener* listener);
   ~HpackDecoderState() override;
diff --git a/http2/hpack/decoder/hpack_decoder_string_buffer.h b/http2/hpack/decoder/hpack_decoder_string_buffer.h
index 94c46d5..1ae8e6b 100644
--- a/http2/hpack/decoder/hpack_decoder_string_buffer.h
+++ b/http2/hpack/decoder/hpack_decoder_string_buffer.h
@@ -15,12 +15,12 @@
 #include <string>
 
 #include "net/third_party/quiche/src/http2/hpack/huffman/hpack_huffman_decoder.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace http2 {
 
-class HTTP2_EXPORT_PRIVATE HpackDecoderStringBuffer {
+class QUICHE_EXPORT_PRIVATE HpackDecoderStringBuffer {
  public:
   enum class State : uint8_t { RESET, COLLECTING, COMPLETE };
   enum class Backing : uint8_t { RESET, UNBUFFERED, BUFFERED, STATIC };
@@ -93,7 +93,7 @@
   Backing backing_;
 };
 
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(
     std::ostream& out,
     const HpackDecoderStringBuffer& v);
 
diff --git a/http2/hpack/decoder/hpack_decoder_tables.h b/http2/hpack/decoder/hpack_decoder_tables.h
index 6df145c..28bab5b 100644
--- a/http2/hpack/decoder/hpack_decoder_tables.h
+++ b/http2/hpack/decoder/hpack_decoder_tables.h
@@ -24,7 +24,7 @@
 #include "net/third_party/quiche/src/http2/hpack/hpack_string.h"
 #include "net/third_party/quiche/src/http2/http2_constants.h"
 #include "net/third_party/quiche/src/http2/platform/api/http2_containers.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 namespace test {
@@ -34,7 +34,7 @@
 // HpackDecoderTablesDebugListener supports a QUIC experiment, enabling
 // the gathering of information about the time-line of use of HPACK
 // dynamic table entries.
-class HTTP2_EXPORT_PRIVATE HpackDecoderTablesDebugListener {
+class QUICHE_EXPORT_PRIVATE HpackDecoderTablesDebugListener {
  public:
   HpackDecoderTablesDebugListener();
   virtual ~HpackDecoderTablesDebugListener();
@@ -65,7 +65,7 @@
 // See http://httpwg.org/specs/rfc7541.html#static.table.definition for the
 // contents, and http://httpwg.org/specs/rfc7541.html#index.address.space for
 // info about accessing the static table.
-class HTTP2_EXPORT_PRIVATE HpackDecoderStaticTable {
+class QUICHE_EXPORT_PRIVATE HpackDecoderStaticTable {
  public:
   explicit HpackDecoderStaticTable(const std::vector<HpackStringPair>* table);
   // Uses a global table shared by all threads.
@@ -85,7 +85,7 @@
 // in the dynamic table. See these sections of the RFC:
 //   http://httpwg.org/specs/rfc7541.html#dynamic.table
 //   http://httpwg.org/specs/rfc7541.html#dynamic.table.management
-class HTTP2_EXPORT_PRIVATE HpackDecoderDynamicTable {
+class QUICHE_EXPORT_PRIVATE HpackDecoderDynamicTable {
  public:
   HpackDecoderDynamicTable();
   ~HpackDecoderDynamicTable();
@@ -144,7 +144,7 @@
   HpackDecoderTablesDebugListener* debug_listener_;
 };
 
-class HTTP2_EXPORT_PRIVATE HpackDecoderTables {
+class QUICHE_EXPORT_PRIVATE HpackDecoderTables {
  public:
   HpackDecoderTables();
   ~HpackDecoderTables();
diff --git a/http2/hpack/decoder/hpack_entry_decoder.h b/http2/hpack/decoder/hpack_entry_decoder.h
index 1848fb6..1da3644 100644
--- a/http2/hpack/decoder/hpack_entry_decoder.h
+++ b/http2/hpack/decoder/hpack_entry_decoder.h
@@ -18,12 +18,12 @@
 #include "net/third_party/quiche/src/http2/hpack/decoder/hpack_entry_type_decoder.h"
 #include "net/third_party/quiche/src/http2/hpack/decoder/hpack_string_decoder.h"
 #include "net/third_party/quiche/src/http2/hpack/http2_hpack_constants.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
 #include "net/third_party/quiche/src/http2/platform/api/http2_logging.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 
-class HTTP2_EXPORT_PRIVATE HpackEntryDecoder {
+class QUICHE_EXPORT_PRIVATE HpackEntryDecoder {
  public:
   enum class EntryDecoderState {
     // Have started decoding the type/varint, but didn't finish on the previous
@@ -75,9 +75,9 @@
   EntryDecoderState state_ = EntryDecoderState();
 };
 
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
-                                              const HpackEntryDecoder& v);
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
+                                               const HpackEntryDecoder& v);
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(
     std::ostream& out,
     HpackEntryDecoder::EntryDecoderState state);
 
diff --git a/http2/hpack/decoder/hpack_entry_decoder_listener.h b/http2/hpack/decoder/hpack_entry_decoder_listener.h
index fd11f59..ff75eeb 100644
--- a/http2/hpack/decoder/hpack_entry_decoder_listener.h
+++ b/http2/hpack/decoder/hpack_entry_decoder_listener.h
@@ -12,11 +12,11 @@
 #include <stddef.h>
 
 #include "net/third_party/quiche/src/http2/hpack/http2_hpack_constants.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 
-class HTTP2_EXPORT_PRIVATE HpackEntryDecoderListener {
+class QUICHE_EXPORT_PRIVATE HpackEntryDecoderListener {
  public:
   virtual ~HpackEntryDecoderListener() {}
 
@@ -64,7 +64,7 @@
   virtual void OnDynamicTableSizeUpdate(size_t size) = 0;
 };
 
-class HTTP2_EXPORT_PRIVATE HpackEntryDecoderVLoggingListener
+class QUICHE_EXPORT_PRIVATE HpackEntryDecoderVLoggingListener
     : public HpackEntryDecoderListener {
  public:
   HpackEntryDecoderVLoggingListener() : wrapped_(nullptr) {}
@@ -88,7 +88,7 @@
 };
 
 // A no-op implementation of HpackEntryDecoderListener.
-class HTTP2_EXPORT_PRIVATE HpackEntryDecoderNoOpListener
+class QUICHE_EXPORT_PRIVATE HpackEntryDecoderNoOpListener
     : public HpackEntryDecoderListener {
  public:
   ~HpackEntryDecoderNoOpListener() override {}
diff --git a/http2/hpack/decoder/hpack_entry_type_decoder.h b/http2/hpack/decoder/hpack_entry_type_decoder.h
index bf13cf9..ff2e77e 100644
--- a/http2/hpack/decoder/hpack_entry_type_decoder.h
+++ b/http2/hpack/decoder/hpack_entry_type_decoder.h
@@ -17,12 +17,12 @@
 #include "net/third_party/quiche/src/http2/decoder/decode_status.h"
 #include "net/third_party/quiche/src/http2/hpack/http2_hpack_constants.h"
 #include "net/third_party/quiche/src/http2/hpack/varint/hpack_varint_decoder.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
 #include "net/third_party/quiche/src/http2/platform/api/http2_logging.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 
-class HTTP2_EXPORT_PRIVATE HpackEntryTypeDecoder {
+class QUICHE_EXPORT_PRIVATE HpackEntryTypeDecoder {
  public:
   // Only call when the decode buffer has data (i.e. HpackEntryDecoder must
   // not call until there is data).
@@ -50,8 +50,8 @@
   HpackEntryType entry_type_ = HpackEntryType::kIndexedHeader;
 };
 
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
-                                              const HpackEntryTypeDecoder& v);
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
+                                               const HpackEntryTypeDecoder& v);
 
 }  // namespace http2
 #endif  // QUICHE_HTTP2_HPACK_DECODER_HPACK_ENTRY_TYPE_DECODER_H_
diff --git a/http2/hpack/decoder/hpack_string_decoder.h b/http2/hpack/decoder/hpack_string_decoder.h
index 0cd1742..cd25da4 100644
--- a/http2/hpack/decoder/hpack_string_decoder.h
+++ b/http2/hpack/decoder/hpack_string_decoder.h
@@ -18,9 +18,9 @@
 #include "net/third_party/quiche/src/http2/decoder/decode_buffer.h"
 #include "net/third_party/quiche/src/http2/decoder/decode_status.h"
 #include "net/third_party/quiche/src/http2/hpack/varint/hpack_varint_decoder.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
 #include "net/third_party/quiche/src/http2/platform/api/http2_logging.h"
 #include "net/third_party/quiche/src/http2/platform/api/http2_macros.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 
@@ -33,7 +33,7 @@
 // Resume() when more input is available, repeating until kDecodeInProgress is
 // not returned. If kDecodeDone or kDecodeError is returned, then Resume() must
 // not be called until Start() has been called to start decoding a new string.
-class HTTP2_EXPORT_PRIVATE HpackStringDecoder {
+class QUICHE_EXPORT_PRIVATE HpackStringDecoder {
  public:
   enum StringDecoderState {
     kStartDecodingLength,
@@ -202,8 +202,8 @@
   bool huffman_encoded_ = false;
 };
 
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
-                                              const HpackStringDecoder& v);
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
+                                               const HpackStringDecoder& v);
 
 }  // namespace http2
 #endif  // QUICHE_HTTP2_HPACK_DECODER_HPACK_STRING_DECODER_H_
diff --git a/http2/hpack/decoder/hpack_string_decoder_listener.h b/http2/hpack/decoder/hpack_string_decoder_listener.h
index 35a0417..6172d91 100644
--- a/http2/hpack/decoder/hpack_string_decoder_listener.h
+++ b/http2/hpack/decoder/hpack_string_decoder_listener.h
@@ -12,7 +12,7 @@
 
 #include <stddef.h>
 
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 namespace test {
@@ -20,7 +20,7 @@
 // HpackStringDecoder methods require a listener that implements the methods
 // below, but it is NOT necessary to extend this class because the methods
 // are templates.
-class HTTP2_EXPORT_PRIVATE HpackStringDecoderListener {
+class QUICHE_EXPORT_PRIVATE HpackStringDecoderListener {
  public:
   virtual ~HpackStringDecoderListener() {}
 
@@ -39,7 +39,7 @@
   virtual void OnStringEnd() = 0;
 };
 
-class HTTP2_EXPORT_PRIVATE HpackStringDecoderVLoggingListener
+class QUICHE_EXPORT_PRIVATE HpackStringDecoderVLoggingListener
     : public HpackStringDecoderListener {
  public:
   HpackStringDecoderVLoggingListener() : wrapped_(nullptr) {}
diff --git a/http2/hpack/decoder/hpack_whole_entry_buffer.h b/http2/hpack/decoder/hpack_whole_entry_buffer.h
index 814c1b4..fd445c0 100644
--- a/http2/hpack/decoder/hpack_whole_entry_buffer.h
+++ b/http2/hpack/decoder/hpack_whole_entry_buffer.h
@@ -16,14 +16,14 @@
 #include "net/third_party/quiche/src/http2/hpack/decoder/hpack_entry_decoder_listener.h"
 #include "net/third_party/quiche/src/http2/hpack/decoder/hpack_whole_entry_listener.h"
 #include "net/third_party/quiche/src/http2/hpack/http2_hpack_constants.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace http2 {
 
 // TODO(jamessynge): Consider renaming HpackEntryDecoderListener to
 // HpackEntryPartsListener or HpackEntryFragmentsListener.
-class HTTP2_EXPORT_PRIVATE HpackWholeEntryBuffer
+class QUICHE_EXPORT_PRIVATE HpackWholeEntryBuffer
     : public HpackEntryDecoderListener {
  public:
   // max_string_size specifies the maximum size of an on-the-wire string (name
diff --git a/http2/hpack/decoder/hpack_whole_entry_listener.h b/http2/hpack/decoder/hpack_whole_entry_listener.h
index eabe34a..86e8e7f 100644
--- a/http2/hpack/decoder/hpack_whole_entry_listener.h
+++ b/http2/hpack/decoder/hpack_whole_entry_listener.h
@@ -13,12 +13,12 @@
 
 #include "net/third_party/quiche/src/http2/hpack/decoder/hpack_decoder_string_buffer.h"
 #include "net/third_party/quiche/src/http2/hpack/http2_hpack_constants.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace http2 {
 
-class HTTP2_EXPORT_PRIVATE HpackWholeEntryListener {
+class QUICHE_EXPORT_PRIVATE HpackWholeEntryListener {
  public:
   virtual ~HpackWholeEntryListener();
 
diff --git a/http2/hpack/hpack_string.h b/http2/hpack/hpack_string.h
index 9aac58e..6789187 100644
--- a/http2/hpack/hpack_string.h
+++ b/http2/hpack/hpack_string.h
@@ -15,12 +15,12 @@
 #include <iosfwd>
 #include <string>
 
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace http2 {
 
-class HTTP2_EXPORT_PRIVATE HpackString {
+class QUICHE_EXPORT_PRIVATE HpackString {
  public:
   explicit HpackString(const char* data);
   explicit HpackString(quiche::QuicheStringPiece str);
@@ -44,18 +44,18 @@
   std::string str_;
 };
 
-HTTP2_EXPORT_PRIVATE bool operator==(quiche::QuicheStringPiece a,
-                                     const HpackString& b);
-HTTP2_EXPORT_PRIVATE bool operator!=(quiche::QuicheStringPiece a,
-                                     const HpackString& b);
-HTTP2_EXPORT_PRIVATE bool operator!=(const HpackString& a,
-                                     const HpackString& b);
-HTTP2_EXPORT_PRIVATE bool operator!=(const HpackString& a,
-                                     quiche::QuicheStringPiece b);
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
-                                              const HpackString& v);
+QUICHE_EXPORT_PRIVATE bool operator==(quiche::QuicheStringPiece a,
+                                      const HpackString& b);
+QUICHE_EXPORT_PRIVATE bool operator!=(quiche::QuicheStringPiece a,
+                                      const HpackString& b);
+QUICHE_EXPORT_PRIVATE bool operator!=(const HpackString& a,
+                                      const HpackString& b);
+QUICHE_EXPORT_PRIVATE bool operator!=(const HpackString& a,
+                                      quiche::QuicheStringPiece b);
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
+                                               const HpackString& v);
 
-struct HTTP2_EXPORT_PRIVATE HpackStringPair {
+struct QUICHE_EXPORT_PRIVATE HpackStringPair {
   HpackStringPair(const HpackString& name, const HpackString& value);
   HpackStringPair(quiche::QuicheStringPiece name,
                   quiche::QuicheStringPiece value);
@@ -71,8 +71,8 @@
   const HpackString value;
 };
 
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
-                                              const HpackStringPair& p);
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& os,
+                                               const HpackStringPair& p);
 
 }  // namespace http2
 
diff --git a/http2/hpack/http2_hpack_constants.h b/http2/hpack/http2_hpack_constants.h
index c973774..6decc61 100644
--- a/http2/hpack/http2_hpack_constants.h
+++ b/http2/hpack/http2_hpack_constants.h
@@ -13,7 +13,7 @@
 #include <ostream>
 #include <string>
 
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 
@@ -52,11 +52,11 @@
 };
 
 // Returns the name of the enum member.
-HTTP2_EXPORT_PRIVATE std::string HpackEntryTypeToString(HpackEntryType v);
+QUICHE_EXPORT_PRIVATE std::string HpackEntryTypeToString(HpackEntryType v);
 
 // Inserts the name of the enum member into |out|.
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
-                                              HpackEntryType v);
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
+                                               HpackEntryType v);
 
 }  // namespace http2
 
diff --git a/http2/hpack/huffman/hpack_huffman_decoder.h b/http2/hpack/huffman/hpack_huffman_decoder.h
index 73c0162..229bb58 100644
--- a/http2/hpack/huffman/hpack_huffman_decoder.h
+++ b/http2/hpack/huffman/hpack_huffman_decoder.h
@@ -18,7 +18,7 @@
 #include <iosfwd>
 #include <string>
 
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace http2 {
@@ -38,7 +38,7 @@
 
 // HuffmanBitBuffer stores the leading edge of bits to be decoded. The high
 // order bit of accumulator_ is the next bit to be decoded.
-class HTTP2_EXPORT_PRIVATE HuffmanBitBuffer {
+class QUICHE_EXPORT_PRIVATE HuffmanBitBuffer {
  public:
   HuffmanBitBuffer();
 
@@ -85,7 +85,7 @@
   return out << v.DebugString();
 }
 
-class HTTP2_EXPORT_PRIVATE HpackHuffmanDecoder {
+class QUICHE_EXPORT_PRIVATE HpackHuffmanDecoder {
  public:
   HpackHuffmanDecoder();
   ~HpackHuffmanDecoder();
diff --git a/http2/hpack/huffman/hpack_huffman_encoder.h b/http2/hpack/huffman/hpack_huffman_encoder.h
index f7a8e94..2ee4de2 100644
--- a/http2/hpack/huffman/hpack_huffman_encoder.h
+++ b/http2/hpack/huffman/hpack_huffman_encoder.h
@@ -11,14 +11,14 @@
 #include <cstddef>  // For size_t
 #include <string>
 
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 #include "net/third_party/quiche/src/common/platform/api/quiche_string_piece.h"
 
 namespace http2 {
 
 // Returns the size of the Huffman encoding of |plain|, which may be greater
 // than plain.size(). Mostly present for testing.
-HTTP2_EXPORT_PRIVATE size_t ExactHuffmanSize(quiche::QuicheStringPiece plain);
+QUICHE_EXPORT_PRIVATE size_t ExactHuffmanSize(quiche::QuicheStringPiece plain);
 
 // Returns the size of the Huffman encoding of |plain|, unless it is greater
 // than or equal to plain.size(), in which case a value greater than or equal to
@@ -26,14 +26,15 @@
 // it doesn't read as much of the input string in the event that the string is
 // not compressible by HuffmanEncode (i.e. when the encoding is longer than the
 // original string, it stops reading the input string as soon as it knows that).
-HTTP2_EXPORT_PRIVATE size_t BoundedHuffmanSize(quiche::QuicheStringPiece plain);
+QUICHE_EXPORT_PRIVATE size_t
+BoundedHuffmanSize(quiche::QuicheStringPiece plain);
 
 // Encode the plain text string |plain| with the Huffman encoding defined in
 // the HPACK RFC, 7541.  |*huffman| does not have to be empty, it is cleared at
 // the beginning of this function.  This allows reusing the same string object
 // across multiple invocations.
-HTTP2_EXPORT_PRIVATE void HuffmanEncode(quiche::QuicheStringPiece plain,
-                                        std::string* huffman);
+QUICHE_EXPORT_PRIVATE void HuffmanEncode(quiche::QuicheStringPiece plain,
+                                         std::string* huffman);
 
 }  // namespace http2
 
diff --git a/http2/hpack/varint/hpack_varint_decoder.h b/http2/hpack/varint/hpack_varint_decoder.h
index 4576446..ea4ea78 100644
--- a/http2/hpack/varint/hpack_varint_decoder.h
+++ b/http2/hpack/varint/hpack_varint_decoder.h
@@ -33,8 +33,8 @@
 
 #include "net/third_party/quiche/src/http2/decoder/decode_buffer.h"
 #include "net/third_party/quiche/src/http2/decoder/decode_status.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
 #include "net/third_party/quiche/src/http2/platform/api/http2_logging.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 
@@ -55,7 +55,7 @@
 // needed. Start and StartExtended handles the initialization of member
 // variables. This is necessary in order for HpackVarintDecoder to be part
 // of a union.
-class HTTP2_EXPORT_PRIVATE HpackVarintDecoder {
+class QUICHE_EXPORT_PRIVATE HpackVarintDecoder {
  public:
   // |prefix_value| is the first byte of the encoded varint.
   // |prefix_length| is number of bits in the first byte that are used for
diff --git a/http2/hpack/varint/hpack_varint_encoder.h b/http2/hpack/varint/hpack_varint_encoder.h
index 014380d..8b1d80a 100644
--- a/http2/hpack/varint/hpack_varint_encoder.h
+++ b/http2/hpack/varint/hpack_varint_encoder.h
@@ -9,14 +9,14 @@
 #include <cstdint>
 #include <string>
 
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 
 // HPACK integer encoder class with single static method implementing variable
 // length integer representation defined in RFC7541, Section 5.1:
 // https://httpwg.org/specs/rfc7541.html#integer.representation
-class HTTP2_EXPORT_PRIVATE HpackVarintEncoder {
+class QUICHE_EXPORT_PRIVATE HpackVarintEncoder {
  public:
   // Encode |varint|, appending encoded data to |*output|.
   // Appends between 1 and 11 bytes in total.
diff --git a/http2/http2_constants.h b/http2/http2_constants.h
index 75f294e..8d8deac 100644
--- a/http2/http2_constants.h
+++ b/http2/http2_constants.h
@@ -12,7 +12,7 @@
 #include <ostream>
 #include <string>
 
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 
@@ -56,10 +56,10 @@
 // for each unsupported value. Since these are just used for debugging/error
 // messages, that isn't a cost to we need to worry about. The same applies to
 // the functions later in this file.
-HTTP2_EXPORT_PRIVATE std::string Http2FrameTypeToString(Http2FrameType v);
-HTTP2_EXPORT_PRIVATE std::string Http2FrameTypeToString(uint8_t v);
-HTTP2_EXPORT_PRIVATE inline std::ostream& operator<<(std::ostream& out,
-                                                     Http2FrameType v) {
+QUICHE_EXPORT_PRIVATE std::string Http2FrameTypeToString(Http2FrameType v);
+QUICHE_EXPORT_PRIVATE std::string Http2FrameTypeToString(uint8_t v);
+QUICHE_EXPORT_PRIVATE inline std::ostream& operator<<(std::ostream& out,
+                                                      Http2FrameType v) {
   return out << Http2FrameTypeToString(v);
 }
 
@@ -75,10 +75,10 @@
 
 // Formats zero or more flags for the specified type of frame. Returns an
 // empty string if flags==0.
-HTTP2_EXPORT_PRIVATE std::string Http2FrameFlagsToString(Http2FrameType type,
-                                                         uint8_t flags);
-HTTP2_EXPORT_PRIVATE std::string Http2FrameFlagsToString(uint8_t type,
-                                                         uint8_t flags);
+QUICHE_EXPORT_PRIVATE std::string Http2FrameFlagsToString(Http2FrameType type,
+                                                          uint8_t flags);
+QUICHE_EXPORT_PRIVATE std::string Http2FrameFlagsToString(uint8_t type,
+                                                          uint8_t flags);
 
 // Error codes for GOAWAY and RST_STREAM frames.
 enum class Http2ErrorCode : uint32_t {
@@ -142,10 +142,10 @@
 }
 
 // Format the specified error code.
-HTTP2_EXPORT_PRIVATE std::string Http2ErrorCodeToString(uint32_t v);
-HTTP2_EXPORT_PRIVATE std::string Http2ErrorCodeToString(Http2ErrorCode v);
-HTTP2_EXPORT_PRIVATE inline std::ostream& operator<<(std::ostream& out,
-                                                     Http2ErrorCode v) {
+QUICHE_EXPORT_PRIVATE std::string Http2ErrorCodeToString(uint32_t v);
+QUICHE_EXPORT_PRIVATE std::string Http2ErrorCodeToString(Http2ErrorCode v);
+QUICHE_EXPORT_PRIVATE inline std::ostream& operator<<(std::ostream& out,
+                                                      Http2ErrorCode v) {
   return out << Http2ErrorCodeToString(v);
 }
 
@@ -222,8 +222,8 @@
 }
 
 // Format the specified settings parameter.
-HTTP2_EXPORT_PRIVATE std::string Http2SettingsParameterToString(uint32_t v);
-HTTP2_EXPORT_PRIVATE std::string Http2SettingsParameterToString(
+QUICHE_EXPORT_PRIVATE std::string Http2SettingsParameterToString(uint32_t v);
+QUICHE_EXPORT_PRIVATE std::string Http2SettingsParameterToString(
     Http2SettingsParameter v);
 inline std::ostream& operator<<(std::ostream& out, Http2SettingsParameter v) {
   return out << Http2SettingsParameterToString(v);
diff --git a/http2/http2_structures.h b/http2/http2_structures.h
index f73e109..a60ac89 100644
--- a/http2/http2_structures.h
+++ b/http2/http2_structures.h
@@ -32,12 +32,12 @@
 #include <string>
 
 #include "net/third_party/quiche/src/http2/http2_constants.h"
-#include "net/third_party/quiche/src/http2/platform/api/http2_export.h"
 #include "net/third_party/quiche/src/http2/platform/api/http2_logging.h"
+#include "net/third_party/quiche/src/common/platform/api/quiche_export.h"
 
 namespace http2 {
 
-struct HTTP2_EXPORT_PRIVATE Http2FrameHeader {
+struct QUICHE_EXPORT_PRIVATE Http2FrameHeader {
   Http2FrameHeader() {}
   Http2FrameHeader(uint32_t payload_length,
                    Http2FrameType type,
@@ -128,18 +128,18 @@
   Http2FrameFlag flags;
 };
 
-HTTP2_EXPORT_PRIVATE bool operator==(const Http2FrameHeader& a,
-                                     const Http2FrameHeader& b);
-HTTP2_EXPORT_PRIVATE inline bool operator!=(const Http2FrameHeader& a,
-                                            const Http2FrameHeader& b) {
+QUICHE_EXPORT_PRIVATE bool operator==(const Http2FrameHeader& a,
+                                      const Http2FrameHeader& b);
+QUICHE_EXPORT_PRIVATE inline bool operator!=(const Http2FrameHeader& a,
+                                             const Http2FrameHeader& b) {
   return !(a == b);
 }
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
-                                              const Http2FrameHeader& v);
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
+                                               const Http2FrameHeader& v);
 
 // Http2PriorityFields:
 
-struct HTTP2_EXPORT_PRIVATE Http2PriorityFields {
+struct QUICHE_EXPORT_PRIVATE Http2PriorityFields {
   Http2PriorityFields() {}
   Http2PriorityFields(uint32_t stream_dependency,
                       uint32_t weight,
@@ -172,14 +172,14 @@
   bool is_exclusive;
 };
 
-HTTP2_EXPORT_PRIVATE bool operator==(const Http2PriorityFields& a,
-                                     const Http2PriorityFields& b);
-HTTP2_EXPORT_PRIVATE inline bool operator!=(const Http2PriorityFields& a,
-                                            const Http2PriorityFields& b) {
+QUICHE_EXPORT_PRIVATE bool operator==(const Http2PriorityFields& a,
+                                      const Http2PriorityFields& b);
+QUICHE_EXPORT_PRIVATE inline bool operator!=(const Http2PriorityFields& a,
+                                             const Http2PriorityFields& b) {
   return !(a == b);
 }
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
-                                              const Http2PriorityFields& v);
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
+                                               const Http2PriorityFields& v);
 
 // Http2RstStreamFields:
 
@@ -192,14 +192,14 @@
   Http2ErrorCode error_code;
 };
 
-HTTP2_EXPORT_PRIVATE bool operator==(const Http2RstStreamFields& a,
-                                     const Http2RstStreamFields& b);
-HTTP2_EXPORT_PRIVATE inline bool operator!=(const Http2RstStreamFields& a,
-                                            const Http2RstStreamFields& b) {
+QUICHE_EXPORT_PRIVATE bool operator==(const Http2RstStreamFields& a,
+                                      const Http2RstStreamFields& b);
+QUICHE_EXPORT_PRIVATE inline bool operator!=(const Http2RstStreamFields& a,
+                                             const Http2RstStreamFields& b) {
   return !(a == b);
 }
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
-                                              const Http2RstStreamFields& v);
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
+                                               const Http2RstStreamFields& v);
 
 // Http2SettingFields:
 
@@ -216,14 +216,14 @@
   uint32_t value;
 };
 
-HTTP2_EXPORT_PRIVATE bool operator==(const Http2SettingFields& a,
-                                     const Http2SettingFields& b);
-HTTP2_EXPORT_PRIVATE inline bool operator!=(const Http2SettingFields& a,
-                                            const Http2SettingFields& b) {
+QUICHE_EXPORT_PRIVATE bool operator==(const Http2SettingFields& a,
+                                      const Http2SettingFields& b);
+QUICHE_EXPORT_PRIVATE inline bool operator!=(const Http2SettingFields& a,
+                                             const Http2SettingFields& b) {
   return !(a == b);
 }
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
-                                              const Http2SettingFields& v);
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
+                                               const Http2SettingFields& v);
 
 // Http2PushPromiseFields:
 
@@ -233,14 +233,14 @@
   uint32_t promised_stream_id;
 };
 
-HTTP2_EXPORT_PRIVATE bool operator==(const Http2PushPromiseFields& a,
-                                     const Http2PushPromiseFields& b);
-HTTP2_EXPORT_PRIVATE inline bool operator!=(const Http2PushPromiseFields& a,
-                                            const Http2PushPromiseFields& b) {
+QUICHE_EXPORT_PRIVATE bool operator==(const Http2PushPromiseFields& a,
+                                      const Http2PushPromiseFields& b);
+QUICHE_EXPORT_PRIVATE inline bool operator!=(const Http2PushPromiseFields& a,
+                                             const Http2PushPromiseFields& b) {
   return !(a == b);
 }
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
-                                              const Http2PushPromiseFields& v);
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
+                                               const Http2PushPromiseFields& v);
 
 // Http2PingFields:
 
@@ -250,14 +250,14 @@
   uint8_t opaque_bytes[8];
 };
 
-HTTP2_EXPORT_PRIVATE bool operator==(const Http2PingFields& a,
-                                     const Http2PingFields& b);
-HTTP2_EXPORT_PRIVATE inline bool operator!=(const Http2PingFields& a,
-                                            const Http2PingFields& b) {
+QUICHE_EXPORT_PRIVATE bool operator==(const Http2PingFields& a,
+                                      const Http2PingFields& b);
+QUICHE_EXPORT_PRIVATE inline bool operator!=(const Http2PingFields& a,
+                                             const Http2PingFields& b) {
   return !(a == b);
 }
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
-                                              const Http2PingFields& v);
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
+                                               const Http2PingFields& v);
 
 // Http2GoAwayFields:
 
@@ -274,14 +274,14 @@
   Http2ErrorCode error_code;
 };
 
-HTTP2_EXPORT_PRIVATE bool operator==(const Http2GoAwayFields& a,
-                                     const Http2GoAwayFields& b);
-HTTP2_EXPORT_PRIVATE inline bool operator!=(const Http2GoAwayFields& a,
-                                            const Http2GoAwayFields& b) {
+QUICHE_EXPORT_PRIVATE bool operator==(const Http2GoAwayFields& a,
+                                      const Http2GoAwayFields& b);
+QUICHE_EXPORT_PRIVATE inline bool operator!=(const Http2GoAwayFields& a,
+                                             const Http2GoAwayFields& b) {
   return !(a == b);
 }
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
-                                              const Http2GoAwayFields& v);
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
+                                               const Http2GoAwayFields& v);
 
 // Http2WindowUpdateFields:
 
@@ -293,14 +293,15 @@
   uint32_t window_size_increment;
 };
 
-HTTP2_EXPORT_PRIVATE bool operator==(const Http2WindowUpdateFields& a,
-                                     const Http2WindowUpdateFields& b);
-HTTP2_EXPORT_PRIVATE inline bool operator!=(const Http2WindowUpdateFields& a,
-                                            const Http2WindowUpdateFields& b) {
+QUICHE_EXPORT_PRIVATE bool operator==(const Http2WindowUpdateFields& a,
+                                      const Http2WindowUpdateFields& b);
+QUICHE_EXPORT_PRIVATE inline bool operator!=(const Http2WindowUpdateFields& a,
+                                             const Http2WindowUpdateFields& b) {
   return !(a == b);
 }
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
-                                              const Http2WindowUpdateFields& v);
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(
+    std::ostream& out,
+    const Http2WindowUpdateFields& v);
 
 // Http2AltSvcFields:
 
@@ -311,14 +312,14 @@
   uint16_t origin_length;
 };
 
-HTTP2_EXPORT_PRIVATE bool operator==(const Http2AltSvcFields& a,
-                                     const Http2AltSvcFields& b);
-HTTP2_EXPORT_PRIVATE inline bool operator!=(const Http2AltSvcFields& a,
-                                            const Http2AltSvcFields& b) {
+QUICHE_EXPORT_PRIVATE bool operator==(const Http2AltSvcFields& a,
+                                      const Http2AltSvcFields& b);
+QUICHE_EXPORT_PRIVATE inline bool operator!=(const Http2AltSvcFields& a,
+                                             const Http2AltSvcFields& b) {
   return !(a == b);
 }
-HTTP2_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
-                                              const Http2AltSvcFields& v);
+QUICHE_EXPORT_PRIVATE std::ostream& operator<<(std::ostream& out,
+                                               const Http2AltSvcFields& v);
 
 }  // namespace http2
 
diff --git a/http2/platform/api/http2_export.h b/http2/platform/api/http2_export.h
deleted file mode 100644
index e262f74..0000000
--- a/http2/platform/api/http2_export.h
+++ /dev/null
@@ -1,10 +0,0 @@
-// Copyright 2017 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef QUICHE_HTTP2_PLATFORM_API_HTTP2_EXPORT_H_
-#define QUICHE_HTTP2_PLATFORM_API_HTTP2_EXPORT_H_
-
-#include "net/http2/platform/impl/http2_export_impl.h"
-
-#endif  // QUICHE_HTTP2_PLATFORM_API_HTTP2_EXPORT_H_
