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