diff --git a/http2/decoder/payload_decoders/altsvc_payload_decoder.cc b/http2/decoder/payload_decoders/altsvc_payload_decoder.cc
index 39d3fc9..f95417c 100644
--- a/http2/decoder/payload_decoders/altsvc_payload_decoder.cc
+++ b/http2/decoder/payload_decoders/altsvc_payload_decoder.cc
@@ -6,13 +6,13 @@
 
 #include <stddef.h>
 
+#include "absl/base/macros.h"
 #include "http2/decoder/decode_buffer.h"
 #include "http2/decoder/http2_frame_decoder_listener.h"
 #include "http2/http2_constants.h"
 #include "http2/http2_structures.h"
 #include "http2/platform/api/http2_bug_tracker.h"
 #include "http2/platform/api/http2_logging.h"
-#include "http2/platform/api/http2_macros.h"
 
 namespace http2 {
 
@@ -72,7 +72,7 @@
     switch (payload_state_) {
       case PayloadState::kStartDecodingStruct:
         status = state->StartDecodingStructureInPayload(&altsvc_fields_, db);
-        HTTP2_FALLTHROUGH;
+        ABSL_FALLTHROUGH_INTENDED;
 
       case PayloadState::kMaybeDecodedStruct:
         if (status == DecodeStatus::kDecodeDone &&
@@ -95,7 +95,7 @@
                            state->remaining_payload());
           return state->ReportFrameSizeError();
         }
-        HTTP2_FALLTHROUGH;
+        ABSL_FALLTHROUGH_INTENDED;
 
       case PayloadState::kDecodingStrings:
         return DecodeStrings(state, db);
diff --git a/http2/decoder/payload_decoders/data_payload_decoder.cc b/http2/decoder/payload_decoders/data_payload_decoder.cc
index 5868d43..523ead1 100644
--- a/http2/decoder/payload_decoders/data_payload_decoder.cc
+++ b/http2/decoder/payload_decoders/data_payload_decoder.cc
@@ -6,13 +6,13 @@
 
 #include <stddef.h>
 
+#include "absl/base/macros.h"
 #include "http2/decoder/decode_buffer.h"
 #include "http2/decoder/http2_frame_decoder_listener.h"
 #include "http2/http2_constants.h"
 #include "http2/http2_structures.h"
 #include "http2/platform/api/http2_bug_tracker.h"
 #include "http2/platform/api/http2_logging.h"
-#include "http2/platform/api/http2_macros.h"
 
 namespace http2 {
 
@@ -97,7 +97,7 @@
       if (status != DecodeStatus::kDecodeDone) {
         return status;
       }
-      HTTP2_FALLTHROUGH;
+      ABSL_FALLTHROUGH_INTENDED;
 
     case PayloadState::kReadPayload:
       avail = state->AvailablePayload(db);
@@ -110,7 +110,7 @@
         payload_state_ = PayloadState::kReadPayload;
         return DecodeStatus::kDecodeInProgress;
       }
-      HTTP2_FALLTHROUGH;
+      ABSL_FALLTHROUGH_INTENDED;
 
     case PayloadState::kSkipPadding:
       // SkipPadding handles the OnPadding callback.
diff --git a/http2/decoder/payload_decoders/goaway_payload_decoder.cc b/http2/decoder/payload_decoders/goaway_payload_decoder.cc
index a2cfd09..3231feb 100644
--- a/http2/decoder/payload_decoders/goaway_payload_decoder.cc
+++ b/http2/decoder/payload_decoders/goaway_payload_decoder.cc
@@ -6,13 +6,13 @@
 
 #include <stddef.h>
 
+#include "absl/base/macros.h"
 #include "http2/decoder/decode_buffer.h"
 #include "http2/decoder/http2_frame_decoder_listener.h"
 #include "http2/http2_constants.h"
 #include "http2/http2_structures.h"
 #include "http2/platform/api/http2_bug_tracker.h"
 #include "http2/platform/api/http2_logging.h"
-#include "http2/platform/api/http2_macros.h"
 
 namespace http2 {
 
@@ -74,7 +74,7 @@
     switch (payload_state_) {
       case PayloadState::kStartDecodingFixedFields:
         status = state->StartDecodingStructureInPayload(&goaway_fields_, db);
-        HTTP2_FALLTHROUGH;
+        ABSL_FALLTHROUGH_INTENDED;
 
       case PayloadState::kHandleFixedFieldsStatus:
         if (status == DecodeStatus::kDecodeDone) {
@@ -92,7 +92,7 @@
           payload_state_ = PayloadState::kResumeDecodingFixedFields;
           return status;
         }
-        HTTP2_FALLTHROUGH;
+        ABSL_FALLTHROUGH_INTENDED;
 
       case PayloadState::kReadOpaqueData:
         // The opaque data is all the remains to be decoded, so anything left
diff --git a/http2/decoder/payload_decoders/headers_payload_decoder.cc b/http2/decoder/payload_decoders/headers_payload_decoder.cc
index a312fb9..5ae1f99 100644
--- a/http2/decoder/payload_decoders/headers_payload_decoder.cc
+++ b/http2/decoder/payload_decoders/headers_payload_decoder.cc
@@ -6,13 +6,13 @@
 
 #include <stddef.h>
 
+#include "absl/base/macros.h"
 #include "http2/decoder/decode_buffer.h"
 #include "http2/decoder/http2_frame_decoder_listener.h"
 #include "http2/http2_constants.h"
 #include "http2/http2_structures.h"
 #include "http2/platform/api/http2_bug_tracker.h"
 #include "http2/platform/api/http2_logging.h"
-#include "http2/platform/api/http2_macros.h"
 
 namespace http2 {
 
@@ -129,7 +129,7 @@
           payload_state_ = PayloadState::kReadPayload;
           continue;
         }
-        HTTP2_FALLTHROUGH;
+        ABSL_FALLTHROUGH_INTENDED;
 
       case PayloadState::kStartDecodingPriorityFields:
         status = state->StartDecodingStructureInPayload(&priority_fields_, db);
@@ -138,7 +138,7 @@
           return status;
         }
         state->listener()->OnHeadersPriority(priority_fields_);
-        HTTP2_FALLTHROUGH;
+        ABSL_FALLTHROUGH_INTENDED;
 
       case PayloadState::kReadPayload:
         avail = state->AvailablePayload(db);
@@ -151,7 +151,7 @@
           payload_state_ = PayloadState::kReadPayload;
           return DecodeStatus::kDecodeInProgress;
         }
-        HTTP2_FALLTHROUGH;
+        ABSL_FALLTHROUGH_INTENDED;
 
       case PayloadState::kSkipPadding:
         // SkipPadding handles the OnPadding callback.
diff --git a/http2/decoder/payload_decoders/priority_update_payload_decoder.cc b/http2/decoder/payload_decoders/priority_update_payload_decoder.cc
index bf78216..ff6758c 100644
--- a/http2/decoder/payload_decoders/priority_update_payload_decoder.cc
+++ b/http2/decoder/payload_decoders/priority_update_payload_decoder.cc
@@ -6,13 +6,13 @@
 
 #include <stddef.h>
 
+#include "absl/base/macros.h"
 #include "http2/decoder/decode_buffer.h"
 #include "http2/decoder/http2_frame_decoder_listener.h"
 #include "http2/http2_constants.h"
 #include "http2/http2_structures.h"
 #include "http2/platform/api/http2_bug_tracker.h"
 #include "http2/platform/api/http2_logging.h"
-#include "http2/platform/api/http2_macros.h"
 
 namespace http2 {
 
@@ -76,7 +76,7 @@
       case PayloadState::kStartDecodingFixedFields:
         status = state->StartDecodingStructureInPayload(
             &priority_update_fields_, db);
-        HTTP2_FALLTHROUGH;
+        ABSL_FALLTHROUGH_INTENDED;
 
       case PayloadState::kHandleFixedFieldsStatus:
         if (status == DecodeStatus::kDecodeDone) {
@@ -95,7 +95,7 @@
           payload_state_ = PayloadState::kResumeDecodingFixedFields;
           return status;
         }
-        HTTP2_FALLTHROUGH;
+        ABSL_FALLTHROUGH_INTENDED;
 
       case PayloadState::kReadPriorityFieldValue:
         // Anything left in the decode buffer is the Priority Field Value.
diff --git a/http2/decoder/payload_decoders/push_promise_payload_decoder.cc b/http2/decoder/payload_decoders/push_promise_payload_decoder.cc
index 95fb5f5..8dff0b9 100644
--- a/http2/decoder/payload_decoders/push_promise_payload_decoder.cc
+++ b/http2/decoder/payload_decoders/push_promise_payload_decoder.cc
@@ -6,13 +6,13 @@
 
 #include <stddef.h>
 
+#include "absl/base/macros.h"
 #include "http2/decoder/decode_buffer.h"
 #include "http2/decoder/http2_frame_decoder_listener.h"
 #include "http2/http2_constants.h"
 #include "http2/http2_structures.h"
 #include "http2/platform/api/http2_bug_tracker.h"
 #include "http2/platform/api/http2_logging.h"
-#include "http2/platform/api/http2_macros.h"
 
 namespace http2 {
 
@@ -95,7 +95,7 @@
           payload_state_ = PayloadState::kReadPadLength;
           return status;
         }
-        HTTP2_FALLTHROUGH;
+        ABSL_FALLTHROUGH_INTENDED;
 
       case PayloadState::kStartDecodingPushPromiseFields:
         status =
@@ -107,7 +107,7 @@
         // Finished decoding the Promised Stream ID. Can now tell the listener
         // that we're starting to decode a PUSH_PROMISE frame.
         ReportPushPromise(state);
-        HTTP2_FALLTHROUGH;
+        ABSL_FALLTHROUGH_INTENDED;
 
       case PayloadState::kReadPayload:
         QUICHE_DCHECK_LT(state->remaining_payload(),
@@ -131,7 +131,7 @@
           payload_state_ = PayloadState::kReadPayload;
           return DecodeStatus::kDecodeInProgress;
         }
-        HTTP2_FALLTHROUGH;
+        ABSL_FALLTHROUGH_INTENDED;
 
       case PayloadState::kSkipPadding:
         // SkipPadding handles the OnPadding callback.
diff --git a/http2/hpack/decoder/hpack_entry_decoder.cc b/http2/hpack/decoder/hpack_entry_decoder.cc
index deb07a6..1302248 100644
--- a/http2/hpack/decoder/hpack_entry_decoder.cc
+++ b/http2/hpack/decoder/hpack_entry_decoder.cc
@@ -8,11 +8,11 @@
 
 #include <cstdint>
 
+#include "absl/base/macros.h"
 #include "http2/platform/api/http2_bug_tracker.h"
 #include "http2/platform/api/http2_flag_utils.h"
 #include "http2/platform/api/http2_flags.h"
 #include "http2/platform/api/http2_logging.h"
-#include "http2/platform/api/http2_macros.h"
 
 namespace http2 {
 namespace {
@@ -112,7 +112,7 @@
           return status;
         }
         state_ = EntryDecoderState::kDecodedType;
-        HTTP2_FALLTHROUGH;
+        ABSL_FALLTHROUGH_INTENDED;
 
       case EntryDecoderState::kDecodedType:
         // entry_type_decoder_ returned kDecodeDone, now need to decide how
@@ -144,7 +144,7 @@
           return status;
         }
         state_ = EntryDecoderState::kStartDecodingValue;
-        HTTP2_FALLTHROUGH;
+        ABSL_FALLTHROUGH_INTENDED;
 
       case EntryDecoderState::kStartDecodingValue:
         HTTP2_DVLOG(1) << "kStartDecodingValue: db->Remaining="
diff --git a/http2/hpack/decoder/hpack_string_decoder.h b/http2/hpack/decoder/hpack_string_decoder.h
index b861d23..9cddc67 100644
--- a/http2/hpack/decoder/hpack_string_decoder.h
+++ b/http2/hpack/decoder/hpack_string_decoder.h
@@ -15,11 +15,11 @@
 #include <cstdint>
 #include <string>
 
+#include "absl/base/macros.h"
 #include "http2/decoder/decode_buffer.h"
 #include "http2/decoder/decode_status.h"
 #include "http2/hpack/varint/hpack_varint_decoder.h"
 #include "http2/platform/api/http2_logging.h"
-#include "http2/platform/api/http2_macros.h"
 #include "common/platform/api/quiche_export.h"
 
 namespace http2 {
@@ -96,7 +96,7 @@
           // buffer, and hence this fall through skips another trip through the
           // switch above and more importantly skips setting the state_ variable
           // again in those cases where we don't need it.
-          HTTP2_FALLTHROUGH;
+          ABSL_FALLTHROUGH_INTENDED;
 
         case kDecodingString:
           HTTP2_DVLOG(2) << "kDecodingString: db->Remaining=" << db->Remaining()
diff --git a/http2/platform/api/http2_macros.h b/http2/platform/api/http2_macros.h
index 0be5e89..c2f990c 100644
--- a/http2/platform/api/http2_macros.h
+++ b/http2/platform/api/http2_macros.h
@@ -3,7 +3,6 @@
 
 #include "net/http2/platform/impl/http2_macros_impl.h"
 
-#define HTTP2_FALLTHROUGH HTTP2_FALLTHROUGH_IMPL
 #define HTTP2_UNREACHABLE() HTTP2_UNREACHABLE_IMPL()
 #define HTTP2_DIE_IF_NULL(ptr) HTTP2_DIE_IF_NULL_IMPL(ptr)
 
diff --git a/spdy/core/spdy_framer.cc b/spdy/core/spdy_framer.cc
index 0719883..4d62858 100644
--- a/spdy/core/spdy_framer.cc
+++ b/spdy/core/spdy_framer.cc
@@ -11,8 +11,8 @@
 #include <new>
 #include <utility>
 
+#include "absl/base/macros.h"
 #include "absl/memory/memory.h"
-#include "http2/platform/api/http2_macros.h"
 #include "common/platform/api/quiche_bug_tracker.h"
 #include "common/platform/api/quiche_logging.h"
 #include "spdy/core/spdy_bitmasks.h"
@@ -421,7 +421,7 @@
     }
     case SpdyFrameType::DATA: {
       QUICHE_DVLOG(1) << "Serialize a stream end DATA frame for VTL";
-      HTTP2_FALLTHROUGH;
+      ABSL_FALLTHROUGH_INTENDED;
     }
     default: {
       return std::make_unique<SpdyControlFrameIterator>(framer,
diff --git a/spdy/core/spdy_protocol.cc b/spdy/core/spdy_protocol.cc
index 12a716e..3fcdcc3 100644
--- a/spdy/core/spdy_protocol.cc
+++ b/spdy/core/spdy_protocol.cc
@@ -182,7 +182,6 @@
     case SETTINGS_ENABLE_CONNECT_PROTOCOL:
     case SETTINGS_DEPRECATE_HTTP2_PRIORITIES:
     case SETTINGS_EXPERIMENT_SCHEDULER:
-      // FALLTHROUGH_INTENDED
       return true;
   }
   return false;
