Remove dynamic grpc generation.

Fall back to manual file generation.

Bug: 62875795
Test: checked out head, cherry picked this cl, th
Change-Id: I47b9fb65acb259ead09055783ad5e65718ec8891
diff --git a/Android.mk b/Android.mk
index dfb0ee3..5eb098d 100644
--- a/Android.mk
+++ b/Android.mk
@@ -5,6 +5,10 @@
 # * b/62417801 modify translation string naming convention:
 #      $ find . -type d | grep 262 | rename 's/(values)\-([a-zA-Z\+\-]+)\-(mcc262-mnc01)/$1-$3-$2/'
 # * b/37077388 temporarily disable proguard with javac
+# * b/62875795 include manually generated GRPC service class:
+#      $ protoc --plugin=protoc-gen-grpc-java=prebuilts/tools/common/m2/repository/io/grpc/protoc-gen-grpc-java/1.0.3/protoc-gen-grpc-java-1.0.3-linux-x86_64.exe \
+#               --grpc-java_out=lite:"packages/apps/Dialer/java/com/android/voicemail/impl/" \
+#               --proto_path="packages/apps/Dialer/java/com/android/voicemail/impl/transcribe/grpc/" "packages/apps/Dialer/java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto"
 LOCAL_PATH:= $(call my-dir)
 include $(CLEAR_VARS)
 
@@ -49,7 +53,12 @@
 	$(BASE_DIR)/dialer/buildtype/test/BuildTypeAccessorImpl.java \
 	$(BASE_DIR)/dialer/constants/googledialer/ConstantsImpl.java \
 	$(BASE_DIR)/dialer/binary/google/GoogleStubDialerRootComponent.java \
-	$(BASE_DIR)/dialer/binary/google/GoogleStubDialerApplication.java
+	$(BASE_DIR)/dialer/binary/google/GoogleStubDialerApplication.java \
+
+# * b/62875795
+ifneq ($(wildcard packages/apps/Dialer/java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java),)
+$(error Please remove file packages/apps/Dialer/java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java )
+endif
 
 EXCLUDE_RESOURCE_DIRECTORIES := \
 	java/com/android/incallui/maps/impl/res \
@@ -72,31 +81,9 @@
 LOCAL_FULL_LIBS_MANIFEST_FILES := \
 	$(addprefix $(LOCAL_PATH)/, $(DIALER_MANIFEST_FILES))
 
-# * b/62875795 include manually generated GRPC service class:
-ifeq ($(HOST_OS),linux)
-	define gen-dialer-grpc
-	$(shell cd $(LOCAL_PATH) ; \
-		../../../prebuilts/tools/linux-x86_64/protoc/bin/protoc --plugin=protoc-gen-grpc-java=../../../prebuilts/tools/common/m2/repository/io/grpc/protoc-gen-grpc-java/1.0.3/protoc-gen-grpc-java-1.0.3-linux-x86_64.exe \
-		--grpc-java_out=lite:"java/com/android/voicemail/impl/" \
-		--proto_path="java/com/android/voicemail/impl/transcribe/grpc/" "java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto")
-	endef
-endif
-ifeq ($(HOST_OS),darwin)
-	define gen-dialer-grpc
-	$(shell cd $(LOCAL_PATH) ; \
-		../../../prebuilts/tools/darwin-x86_64/protoc/bin/protoc --plugin=protoc-gen-grpc-java=../../../prebuilts/tools/common/m2/repository/io/grpc/protoc-gen-grpc-java/1.0.3/protoc-gen-grpc-java-1.0.3-osx-x86_64.exe \
-		--grpc-java_out=lite:"java/com/android/voicemail/impl/" \
-		--proto_path="java/com/android/voicemail/impl/transcribe/grpc/" "java/com/android/voicemail/impl/transcribe/grpc/voicemail_transcription.proto")
-	endef
-endif
-
-$(call gen-dialer-grpc)
-
 LOCAL_SRC_FILES := $(call all-java-files-under, $(SRC_DIRS))
-LOCAL_SRC_FILES := $(filter-out $(EXCLUDE_FILES),$(LOCAL_SRC_FILES))
-# * b/62875795 include manually generated GRPC service class:
-LOCAL_SRC_FILES += java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java
 LOCAL_SRC_FILES += $(call all-proto-files-under, $(SRC_DIRS))
+LOCAL_SRC_FILES := $(filter-out $(EXCLUDE_FILES),$(LOCAL_SRC_FILES))
 
 LOCAL_PROTOC_FLAGS := --proto_path=$(LOCAL_PATH)
 
diff --git a/CleanSpec.mk b/CleanSpec.mk
new file mode 100644
index 0000000..fecdf79
--- /dev/null
+++ b/CleanSpec.mk
@@ -0,0 +1,41 @@
+# Copyright (C) 2017 The Android Open Source Project
+#
+# 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.
+#
+
+# If you don't need to do a full clean build but would like to touch
+# a file or delete some intermediate files, add a clean step to the end
+# of the list.  These steps will only be run once, if they haven't been
+# run before.
+#
+# E.g.:
+#     $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
+#     $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
+#
+# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
+# files that are missing or have been moved.
+#
+# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
+# Use $(OUT_DIR) to refer to the "out" directory.
+#
+# If you need to re-do something that's already mentioned, just copy
+# the command and add it to the bottom of the list.  E.g., if a change
+# that you made last week required touching a file and a change you
+# made today requires touching the same file, just copy the old
+# touch step and add it to the end of the list.
+#
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
+
+$(call add-clean-step, (cd packages/apps/Dialer; git clean -f java/com/android/voicemail/impl/com/google/internal/communications/voicemailtranscription/v1/VoicemailTranscriptionServiceGrpc.java >&2) || true)
diff --git a/java/com/android/voicemail/impl/VoicemailTranscriptionServiceGrpc.java b/java/com/android/voicemail/impl/VoicemailTranscriptionServiceGrpc.java
new file mode 100644
index 0000000..448c693
--- /dev/null
+++ b/java/com/android/voicemail/impl/VoicemailTranscriptionServiceGrpc.java
@@ -0,0 +1,254 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * 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 com.google.internal.communications.voicemailtranscription.v1;
+
+import static io.grpc.stub.ClientCalls.asyncUnaryCall;
+import static io.grpc.stub.ClientCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ClientCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ClientCalls.blockingUnaryCall;
+import static io.grpc.stub.ClientCalls.blockingServerStreamingCall;
+import static io.grpc.stub.ClientCalls.futureUnaryCall;
+import static io.grpc.MethodDescriptor.generateFullMethodName;
+import static io.grpc.stub.ServerCalls.asyncUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncServerStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncClientStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncBidiStreamingCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall;
+import static io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall;
+
+/**
+ * <pre>
+ * RPC service for transcribing voicemails.
+ * </pre>
+ */
+@javax.annotation.Generated(
+    value = "by gRPC proto compiler (version 1.0.3)",
+    comments = "Source: voicemail_transcription.proto")
+public class VoicemailTranscriptionServiceGrpc {
+
+  private VoicemailTranscriptionServiceGrpc() {}
+
+  public static final String SERVICE_NAME = "google.internal.communications.voicemailtranscription.v1.VoicemailTranscriptionService";
+
+  // Static method descriptors that strictly reflect the proto.
+  @io.grpc.ExperimentalApi("https://github.com/grpc/grpc-java/issues/1901")
+  public static final io.grpc.MethodDescriptor<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest,
+      com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse> METHOD_TRANSCRIBE_VOICEMAIL =
+      io.grpc.MethodDescriptor.create(
+          io.grpc.MethodDescriptor.MethodType.UNARY,
+          generateFullMethodName(
+              "google.internal.communications.voicemailtranscription.v1.VoicemailTranscriptionService", "TranscribeVoicemail"),
+          io.grpc.protobuf.lite.ProtoLiteUtils.marshaller(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest.getDefaultInstance()),
+          io.grpc.protobuf.lite.ProtoLiteUtils.marshaller(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse.getDefaultInstance()));
+
+  /**
+   * Creates a new async stub that supports all call types for the service
+   */
+  public static VoicemailTranscriptionServiceStub newStub(io.grpc.Channel channel) {
+    return new VoicemailTranscriptionServiceStub(channel);
+  }
+
+  /**
+   * Creates a new blocking-style stub that supports unary and streaming output calls on the service
+   */
+  public static VoicemailTranscriptionServiceBlockingStub newBlockingStub(
+      io.grpc.Channel channel) {
+    return new VoicemailTranscriptionServiceBlockingStub(channel);
+  }
+
+  /**
+   * Creates a new ListenableFuture-style stub that supports unary and streaming output calls on the service
+   */
+  public static VoicemailTranscriptionServiceFutureStub newFutureStub(
+      io.grpc.Channel channel) {
+    return new VoicemailTranscriptionServiceFutureStub(channel);
+  }
+
+  /**
+   * <pre>
+   * RPC service for transcribing voicemails.
+   * </pre>
+   */
+  public static abstract class VoicemailTranscriptionServiceImplBase implements io.grpc.BindableService {
+
+    /**
+     * <pre>
+     * Returns a transcript of the given voicemail.
+     * </pre>
+     */
+    public void transcribeVoicemail(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest request,
+        io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse> responseObserver) {
+      asyncUnimplementedUnaryCall(METHOD_TRANSCRIBE_VOICEMAIL, responseObserver);
+    }
+
+    @java.lang.Override public io.grpc.ServerServiceDefinition bindService() {
+      return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor())
+          .addMethod(
+            METHOD_TRANSCRIBE_VOICEMAIL,
+            asyncUnaryCall(
+              new MethodHandlers<
+                com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest,
+                com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse>(
+                  this, METHODID_TRANSCRIBE_VOICEMAIL)))
+          .build();
+    }
+  }
+
+  /**
+   * <pre>
+   * RPC service for transcribing voicemails.
+   * </pre>
+   */
+  public static final class VoicemailTranscriptionServiceStub extends io.grpc.stub.AbstractStub<VoicemailTranscriptionServiceStub> {
+    private VoicemailTranscriptionServiceStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private VoicemailTranscriptionServiceStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected VoicemailTranscriptionServiceStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new VoicemailTranscriptionServiceStub(channel, callOptions);
+    }
+
+    /**
+     * <pre>
+     * Returns a transcript of the given voicemail.
+     * </pre>
+     */
+    public void transcribeVoicemail(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest request,
+        io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse> responseObserver) {
+      asyncUnaryCall(
+          getChannel().newCall(METHOD_TRANSCRIBE_VOICEMAIL, getCallOptions()), request, responseObserver);
+    }
+  }
+
+  /**
+   * <pre>
+   * RPC service for transcribing voicemails.
+   * </pre>
+   */
+  public static final class VoicemailTranscriptionServiceBlockingStub extends io.grpc.stub.AbstractStub<VoicemailTranscriptionServiceBlockingStub> {
+    private VoicemailTranscriptionServiceBlockingStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private VoicemailTranscriptionServiceBlockingStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected VoicemailTranscriptionServiceBlockingStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new VoicemailTranscriptionServiceBlockingStub(channel, callOptions);
+    }
+
+    /**
+     * <pre>
+     * Returns a transcript of the given voicemail.
+     * </pre>
+     */
+    public com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse transcribeVoicemail(com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest request) {
+      return blockingUnaryCall(
+          getChannel(), METHOD_TRANSCRIBE_VOICEMAIL, getCallOptions(), request);
+    }
+  }
+
+  /**
+   * <pre>
+   * RPC service for transcribing voicemails.
+   * </pre>
+   */
+  public static final class VoicemailTranscriptionServiceFutureStub extends io.grpc.stub.AbstractStub<VoicemailTranscriptionServiceFutureStub> {
+    private VoicemailTranscriptionServiceFutureStub(io.grpc.Channel channel) {
+      super(channel);
+    }
+
+    private VoicemailTranscriptionServiceFutureStub(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      super(channel, callOptions);
+    }
+
+    @java.lang.Override
+    protected VoicemailTranscriptionServiceFutureStub build(io.grpc.Channel channel,
+        io.grpc.CallOptions callOptions) {
+      return new VoicemailTranscriptionServiceFutureStub(channel, callOptions);
+    }
+
+    /**
+     * <pre>
+     * Returns a transcript of the given voicemail.
+     * </pre>
+     */
+    public com.google.common.util.concurrent.ListenableFuture<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse> transcribeVoicemail(
+        com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest request) {
+      return futureUnaryCall(
+          getChannel().newCall(METHOD_TRANSCRIBE_VOICEMAIL, getCallOptions()), request);
+    }
+  }
+
+  private static final int METHODID_TRANSCRIBE_VOICEMAIL = 0;
+
+  private static class MethodHandlers<Req, Resp> implements
+      io.grpc.stub.ServerCalls.UnaryMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ServerStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.ClientStreamingMethod<Req, Resp>,
+      io.grpc.stub.ServerCalls.BidiStreamingMethod<Req, Resp> {
+    private final VoicemailTranscriptionServiceImplBase serviceImpl;
+    private final int methodId;
+
+    public MethodHandlers(VoicemailTranscriptionServiceImplBase serviceImpl, int methodId) {
+      this.serviceImpl = serviceImpl;
+      this.methodId = methodId;
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public void invoke(Req request, io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        case METHODID_TRANSCRIBE_VOICEMAIL:
+          serviceImpl.transcribeVoicemail((com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailRequest) request,
+              (io.grpc.stub.StreamObserver<com.google.internal.communications.voicemailtranscription.v1.TranscribeVoicemailResponse>) responseObserver);
+          break;
+        default:
+          throw new AssertionError();
+      }
+    }
+
+    @java.lang.Override
+    @java.lang.SuppressWarnings("unchecked")
+    public io.grpc.stub.StreamObserver<Req> invoke(
+        io.grpc.stub.StreamObserver<Resp> responseObserver) {
+      switch (methodId) {
+        default:
+          throw new AssertionError();
+      }
+    }
+  }
+
+  public static io.grpc.ServiceDescriptor getServiceDescriptor() {
+    return new io.grpc.ServiceDescriptor(SERVICE_NAME,
+        METHOD_TRANSCRIBE_VOICEMAIL);
+  }
+
+}