Reland: "Make javac warnings errors for WebRTC targets."

This reverts commit 2bad72a27329ff30ceb9479253f5eb3d21888d25.

Reason for revert: Fixing downstream projects (take 2).

Original change's description:
> Reland "Revert "Make javac warnings errors for WebRTC targets.""
> 
> This is a reland of 098d24c3c18f4b1fd043d7ba716d7601f0ce2b74
> Original change's description:
> > Revert "Make javac warnings errors for WebRTC targets."
> > 
> > This reverts commit 19b761403c3522902d69d61179f4d184e3632f79.
> > 
> > Reason for revert: Breaking internal builds
> > 
> > Original change's description:
> > > Make javac warnings errors for WebRTC targets.
> > > 
> > > Adds new rtc_* templates for Android targets to allow specifying
> > > default values that affect WebRTC targets.
> > > 
> > > Bug: webrtc:6597
> > > Change-Id: Ie529bfc8500d1e785b8a59dba7078b5f88ccfcd1
> > > Reviewed-on: https://webrtc-review.googlesource.com/15103
> > > Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
> > > Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
> > > Cr-Commit-Position: refs/heads/master@{#20567}
> > 
> TBR=phoglund@webrtc.org,sakal@webrtc.org
> > 
> > Change-Id: I6d3ff5604b3d4307765d3a65adb783f89fcc974c
> > No-Presubmit: true
> > No-Tree-Checks: true
> > No-Try: true
> > Bug: webrtc:6597
> > Reviewed-on: https://webrtc-review.googlesource.com/20740
> > Reviewed-by: Lu Liu <lliuu@webrtc.org>
> > Commit-Queue: Lu Liu <lliuu@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#20571}
> 
> Bug: webrtc:6597
> Change-Id: Icfb5ded46ce76b674bae67bfa02054b4ec52bb0f
> Reviewed-on: https://webrtc-review.googlesource.com/20800
> Commit-Queue: Edward Lemur <ehmaldonado@webrtc.org>
> Reviewed-by: Edward Lemur <ehmaldonado@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#20577}

TBR=phoglund@webrtc.org,ehmaldonado@webrtc.org,mbonadei@webrtc.org,sakal@webrtc.org,lliuu@webrtc.org

Change-Id: Id3713c1885318741711987ae642a269a9ca5bb85
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:6597
Reviewed-on: https://webrtc-review.googlesource.com/18441
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20588}
diff --git a/examples/BUILD.gn b/examples/BUILD.gn
index c5bc83f..01d73a4 100644
--- a/examples/BUILD.gn
+++ b/examples/BUILD.gn
@@ -49,7 +49,7 @@
 }
 
 if (is_android) {
-  android_apk("AppRTCMobile") {
+  rtc_android_apk("AppRTCMobile") {
     testonly = true
     apk_name = "AppRTCMobile"
     android_manifest = "androidapp/AndroidManifest.xml"
@@ -62,12 +62,9 @@
     ]
 
     shared_libraries = [ "../sdk/android:libjingle_peerconnection_so" ]
-
-    # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-    no_build_hooks = true
   }
 
-  android_library("AppRTCMobile_javalib") {
+  rtc_android_library("AppRTCMobile_javalib") {
     testonly = true
     android_manifest = "androidapp/AndroidManifest.xml"
 
@@ -103,9 +100,6 @@
       "../sdk/android:libjingle_peerconnection_metrics_default_java",
       "androidapp/third_party/autobanh:autobanh_java",
     ]
-
-    # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-    no_build_hooks = true
   }
 
   android_resources("AppRTCMobile_resources") {
@@ -114,7 +108,7 @@
     custom_package = "org.appspot.apprtc"
   }
 
-  instrumentation_test_apk("AppRTCMobileTest") {
+  rtc_instrumentation_test_apk("AppRTCMobileTest") {
     apk_name = "AppRTCMobileTest"
     android_manifest = "androidtests/AndroidManifest.xml"
 
@@ -128,12 +122,9 @@
       "//third_party/android_support_test_runner:runner_java",
       "//third_party/junit",
     ]
-
-    # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-    no_build_hooks = true
   }
 
-  instrumentation_test_apk("AppRTCMobileTestStubbedVideoIO") {
+  rtc_instrumentation_test_apk("AppRTCMobileTestStubbedVideoIO") {
     apk_name = "AppRTCMobileTestStubbedVideoIO"
     android_manifest = "androidtests/AndroidManifest.xml"
 
@@ -154,9 +145,6 @@
     data = [
       "../resources/reference_video_640x360_30fps.y4m",
     ]
-
-    # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-    no_build_hooks = true
   }
 }
 
@@ -676,7 +664,7 @@
 }
 
 if (is_android) {
-  android_library("webrtc_unity_java") {
+  rtc_android_library("webrtc_unity_java") {
     java_files = [ "unityplugin/java/src/org/webrtc/UnityUtility.java" ]
     deps = [
       "../rtc_base:base_java",
diff --git a/modules/audio_device/BUILD.gn b/modules/audio_device/BUILD.gn
index e50041f..8f6f746 100644
--- a/modules/audio_device/BUILD.gn
+++ b/modules/audio_device/BUILD.gn
@@ -368,7 +368,7 @@
 }
 
 if (!build_with_chromium && is_android) {
-  android_library("audio_device_java") {
+  rtc_android_library("audio_device_java") {
     java_files = [
       "android/java/src/org/webrtc/voiceengine/BuildInfo.java",
       "android/java/src/org/webrtc/voiceengine/WebRtcAudioEffects.java",
@@ -380,8 +380,5 @@
     deps = [
       "../../rtc_base:base_java",
     ]
-
-    # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-    no_build_hooks = true
   }
 }
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index 400efb6..bc9b929 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -1089,15 +1089,12 @@
 }
 
 if (is_android) {
-  android_library("base_java") {
+  rtc_android_library("base_java") {
     java_files = [
       "java/src/org/webrtc/ContextUtils.java",
       "java/src/org/webrtc/Logging.java",
       "java/src/org/webrtc/Size.java",
       "java/src/org/webrtc/ThreadUtils.java",
     ]
-
-    # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-    no_build_hooks = true
   }
 }
diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn
index 5bb7300..7422302 100644
--- a/sdk/android/BUILD.gn
+++ b/sdk/android/BUILD.gn
@@ -398,7 +398,7 @@
   ]
 }
 
-android_library("libjingle_peerconnection_java") {
+rtc_android_library("libjingle_peerconnection_java") {
   java_files = [
     "api/org/webrtc/AudioProcessingFactory.java",
     "api/org/webrtc/AudioSource.java",
@@ -502,24 +502,18 @@
     "../../modules/audio_device:audio_device_java",
     "../../rtc_base:base_java",
   ]
-
-  # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-  no_build_hooks = true
 }
 
-android_library("libjingle_peerconnection_metrics_default_java") {
+rtc_android_library("libjingle_peerconnection_metrics_default_java") {
   java_files = [ "api/org/webrtc/Metrics.java" ]
 
   deps = [
     "../../rtc_base:base_java",
   ]
-
-  # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-  no_build_hooks = true
 }
 
 if (rtc_include_tests) {
-  instrumentation_test_apk("libjingle_peerconnection_android_unittest") {
+  rtc_instrumentation_test_apk("libjingle_peerconnection_android_unittest") {
     apk_name = "libjingle_peerconnection_android_unittest"
     android_manifest = "instrumentationtests/AndroidManifest.xml"
 
@@ -561,8 +555,5 @@
     ]
 
     shared_libraries = [ "../../sdk/android:libjingle_peerconnection_so" ]
-
-    # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-    no_build_hooks = true
   }
 }
diff --git a/test/BUILD.gn b/test/BUILD.gn
index 78a734d..7277e6b 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -710,7 +710,7 @@
 }
 
 if (!build_with_chromium && is_android) {
-  android_library("native_test_java") {
+  rtc_android_library("native_test_java") {
     testonly = true
     java_files = [
       "android/org/webrtc/native_test/RTCNativeUnitTest.java",
@@ -720,8 +720,5 @@
       "../rtc_base:base_java",
       "//testing/android/native_test:native_test_java",
     ]
-
-    # TODO(sakal): Fix build hooks crbug.com/webrtc/8148
-    no_build_hooks = true
   }
 }
diff --git a/webrtc.gni b/webrtc.gni
index a4b7c18..3b504e8 100644
--- a/webrtc.gni
+++ b/webrtc.gni
@@ -398,3 +398,62 @@
     }
   }
 }
+
+if (is_android) {
+  template("rtc_android_library") {
+    android_library(target_name) {
+      forward_variables_from(invoker,
+                             "*",
+                             [
+                               "configs",
+                               "public_configs",
+                               "suppressed_configs",
+                               "visibility",
+                             ])
+
+      # Treat warnings as errors.
+      javac_args = [ "-Werror" ]
+
+      # TODO(sakal): Fix build hooks crbug.com/webrtc/8168
+      no_build_hooks = true
+    }
+  }
+
+  template("rtc_android_apk") {
+    android_apk(target_name) {
+      forward_variables_from(invoker,
+                             "*",
+                             [
+                               "configs",
+                               "public_configs",
+                               "suppressed_configs",
+                               "visibility",
+                             ])
+
+      # Treat warnings as errors.
+      javac_args = [ "-Werror" ]
+
+      # TODO(sakal): Fix build hooks crbug.com/webrtc/8168
+      no_build_hooks = true
+    }
+  }
+
+  template("rtc_instrumentation_test_apk") {
+    instrumentation_test_apk(target_name) {
+      forward_variables_from(invoker,
+                             "*",
+                             [
+                               "configs",
+                               "public_configs",
+                               "suppressed_configs",
+                               "visibility",
+                             ])
+
+      # Treat warnings as errors.
+      javac_args = [ "-Werror" ]
+
+      # TODO(sakal): Fix build hooks crbug.com/webrtc/8168
+      no_build_hooks = true
+    }
+  }
+}