diff --git a/java/proto.go b/java/proto.go index ab913d868..8d2380322 100644 --- a/java/proto.go +++ b/java/proto.go @@ -73,13 +73,15 @@ func genProto(ctx android.ModuleContext, protoFiles android.Paths, flags android } func protoDeps(ctx android.BottomUpMutatorContext, p *android.ProtoProperties) { + const unspecifiedProtobufPluginType = "" if String(p.Proto.Plugin) == "" { switch String(p.Proto.Type) { + case "stream": // does not require additional dependencies case "micro": ctx.AddVariationDependencies(nil, staticLibTag, "libprotobuf-java-micro") case "nano": ctx.AddVariationDependencies(nil, staticLibTag, "libprotobuf-java-nano") - case "lite", "": + case "lite", unspecifiedProtobufPluginType: ctx.AddVariationDependencies(nil, staticLibTag, "libprotobuf-java-lite") case "full": if ctx.Host() || ctx.BazelConversionMode() { diff --git a/java/proto_test.go b/java/proto_test.go new file mode 100644 index 000000000..d1cb71448 --- /dev/null +++ b/java/proto_test.go @@ -0,0 +1,53 @@ +// Copyright 2022 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package java + +import ( + "strings" + "testing" + + "android/soong/android" +) + +const protoModules = ` +java_library_static { + name: "libprotobuf-java-lite", +} +` + +func TestProtoStream(t *testing.T) { + bp := ` + java_library { + name: "java-stream-protos", + proto: { + type: "stream", + }, + srcs: [ + "a.proto", + "b.proto", + ], + } + ` + + ctx := android.GroupFixturePreparers( + PrepareForIntegrationTestWithJava, + ).RunTestWithBp(t, protoModules+bp) + + proto0 := ctx.ModuleForTests("java-stream-protos", "android_common").Output("proto/proto0.srcjar") + + if cmd := proto0.RuleParams.Command; !strings.Contains(cmd, "--javastream_out=") { + t.Errorf("expected '--javastream_out' in %q", cmd) + } +}