Move IsInvalidHeaderKeyChar() from balsa_frame.cc anonymous namespace to header_properties.

This is for consistency with IsInvalidHeaderChar().

Also, add tests for IsInvalidHeaderKeyChar(), and extend tests for IsInvalidHeaderChar().

PiperOrigin-RevId: 446704033
diff --git a/quiche/common/balsa/header_properties.cc b/quiche/common/balsa/header_properties.cc
index 6722239..561fe7a 100644
--- a/quiche/common/balsa/header_properties.cc
+++ b/quiche/common/balsa/header_properties.cc
@@ -59,6 +59,15 @@
   });
 }
 
+std::array<bool, 256> buildInvalidHeaderKeyCharLookupTable() {
+  std::array<bool, 256> invalidCharTable;
+  invalidCharTable.fill(false);
+  for (uint8_t c : kInvalidHeaderKeyCharList) {
+    invalidCharTable[c] = true;
+  }
+  return invalidCharTable;
+}
+
 std::array<bool, 256> buildInvalidCharLookupTable() {
   std::array<bool, 256> invalidCharTable;
   invalidCharTable.fill(false);
@@ -76,6 +85,13 @@
   return multivalued_headers->contains(header);
 }
 
+bool IsInvalidHeaderKeyChar(uint8_t c) {
+  static const std::array<bool, 256> invalidHeaderKeyCharTable =
+      buildInvalidHeaderKeyCharLookupTable();
+
+  return invalidHeaderKeyCharTable[c];
+}
+
 bool IsInvalidHeaderChar(uint8_t c) {
   static const std::array<bool, 256> invalidCharTable =
       buildInvalidCharLookupTable();