xref: /aosp_15_r20/external/cronet/third_party/protobuf/patches/0039-generate-mediapipe-anylite.patch (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Workerdiff --git a/src/google/protobuf/compiler/cpp/helpers.cc b/src/google/protobuf/compiler/cpp/helpers.cc
2*6777b538SAndroid Build Coastguard Workerindex 4b7c5c9d912b1..5288fa321270b 100644
3*6777b538SAndroid Build Coastguard Worker--- a/src/google/protobuf/compiler/cpp/helpers.cc
4*6777b538SAndroid Build Coastguard Worker+++ b/src/google/protobuf/compiler/cpp/helpers.cc
5*6777b538SAndroid Build Coastguard Worker@@ -72,6 +72,14 @@ namespace {
6*6777b538SAndroid Build Coastguard Worker static const char kAnyMessageName[] = "Any";
7*6777b538SAndroid Build Coastguard Worker static const char kAnyProtoFile[] = "google/protobuf/any.proto";
8*6777b538SAndroid Build Coastguard Worker
9*6777b538SAndroid Build Coastguard Worker+// TODO(crbug.com/332939935): This is used to allow generating an AnyLite proto
10*6777b538SAndroid Build Coastguard Worker+// compatible with /third_party/medialite instead of checking in compiled
11*6777b538SAndroid Build Coastguard Worker+// protobufs that complicate rolling.
12*6777b538SAndroid Build Coastguard Worker+// Upstream should be fixed so that we don't need to generate a separate
13*6777b538SAndroid Build Coastguard Worker+// AnyLite, then this patch/change should be dropped.
14*6777b538SAndroid Build Coastguard Worker+static const char kAnyLiteMessageName[] = "AnyLite";
15*6777b538SAndroid Build Coastguard Worker+static const char kAnyLiteProtoFile[] = "google/protobuf/any_lite.proto";
16*6777b538SAndroid Build Coastguard Worker+
17*6777b538SAndroid Build Coastguard Worker std::string DotsToColons(const std::string& name) {
18*6777b538SAndroid Build Coastguard Worker   return StringReplace(name, ".", "::", true);
19*6777b538SAndroid Build Coastguard Worker }
20*6777b538SAndroid Build Coastguard Worker@@ -1082,11 +1090,13 @@ FieldOptions::CType EffectiveStringCType(const FieldDescriptor* field,
21*6777b538SAndroid Build Coastguard Worker }
22*6777b538SAndroid Build Coastguard Worker
23*6777b538SAndroid Build Coastguard Worker bool IsAnyMessage(const FileDescriptor* descriptor, const Options& options) {
24*6777b538SAndroid Build Coastguard Worker-  return descriptor->name() == kAnyProtoFile;
25*6777b538SAndroid Build Coastguard Worker+  return descriptor->name() == kAnyProtoFile ||
26*6777b538SAndroid Build Coastguard Worker+         descriptor->name() == kAnyLiteProtoFile;
27*6777b538SAndroid Build Coastguard Worker }
28*6777b538SAndroid Build Coastguard Worker
29*6777b538SAndroid Build Coastguard Worker bool IsAnyMessage(const Descriptor* descriptor, const Options& options) {
30*6777b538SAndroid Build Coastguard Worker-  return descriptor->name() == kAnyMessageName &&
31*6777b538SAndroid Build Coastguard Worker+  return (descriptor->name() == kAnyMessageName ||
32*6777b538SAndroid Build Coastguard Worker+          descriptor->name() == kAnyLiteMessageName) &&
33*6777b538SAndroid Build Coastguard Worker          IsAnyMessage(descriptor->file(), options);
34*6777b538SAndroid Build Coastguard Worker }
35*6777b538SAndroid Build Coastguard Worker
36*6777b538SAndroid Build Coastguard Workerdiff --git a/src/google/protobuf/compiler/cpp/message.cc b/src/google/protobuf/compiler/cpp/message.cc
37*6777b538SAndroid Build Coastguard Workerindex dd1daa30b080f..24e303c55e54a 100644
38*6777b538SAndroid Build Coastguard Worker--- a/src/google/protobuf/compiler/cpp/message.cc
39*6777b538SAndroid Build Coastguard Worker+++ b/src/google/protobuf/compiler/cpp/message.cc
40*6777b538SAndroid Build Coastguard Worker@@ -2085,13 +2085,17 @@ void MessageGenerator::GenerateClassMethods(io::Printer* printer) {
41*6777b538SAndroid Build Coastguard Worker           "      message, type_url_field, value_field);\n"
42*6777b538SAndroid Build Coastguard Worker           "}\n");
43*6777b538SAndroid Build Coastguard Worker     }
44*6777b538SAndroid Build Coastguard Worker-    format(
45*6777b538SAndroid Build Coastguard Worker-        "bool $classname$::ParseAnyTypeUrl(\n"
46*6777b538SAndroid Build Coastguard Worker-        "    ::PROTOBUF_NAMESPACE_ID::ConstStringParam type_url,\n"
47*6777b538SAndroid Build Coastguard Worker-        "    std::string* full_type_name) {\n"
48*6777b538SAndroid Build Coastguard Worker-        "  return ::_pbi::ParseAnyTypeUrl(type_url, full_type_name);\n"
49*6777b538SAndroid Build Coastguard Worker-        "}\n"
50*6777b538SAndroid Build Coastguard Worker-        "\n");
51*6777b538SAndroid Build Coastguard Worker+    // TODO(crbug.com/332939935): Remove this workaround when the AnyLite patch
52*6777b538SAndroid Build Coastguard Worker+    // can go away.
53*6777b538SAndroid Build Coastguard Worker+    if (descriptor_->name() != "AnyLite") {
54*6777b538SAndroid Build Coastguard Worker+      format(
55*6777b538SAndroid Build Coastguard Worker+          "bool $classname$::ParseAnyTypeUrl(\n"
56*6777b538SAndroid Build Coastguard Worker+          "    ::PROTOBUF_NAMESPACE_ID::ConstStringParam type_url,\n"
57*6777b538SAndroid Build Coastguard Worker+          "    std::string* full_type_name) {\n"
58*6777b538SAndroid Build Coastguard Worker+          "  return ::_pbi::ParseAnyTypeUrl(type_url, full_type_name);\n"
59*6777b538SAndroid Build Coastguard Worker+          "}\n"
60*6777b538SAndroid Build Coastguard Worker+          "\n");
61*6777b538SAndroid Build Coastguard Worker+    }
62*6777b538SAndroid Build Coastguard Worker   }
63*6777b538SAndroid Build Coastguard Worker
64*6777b538SAndroid Build Coastguard Worker   format(
65