Merge pull request #744 from NightlyNexus/eric/2017.04.25-doc-delay

Fix outdated watch delay doc.
diff --git a/build.gradle b/build.gradle
index 9fd268a..b7f0ac0 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,9 +1,11 @@
 buildscript {
   repositories {
     jcenter()
+    maven { url 'https://plugins.gradle.org/m2/' }
   }
   dependencies {
     classpath 'com.android.tools.build:gradle:2.3.0'
+    classpath 'net.ltgt.gradle:gradle-errorprone-plugin:0.0.10'
   }
 }
 
@@ -16,6 +18,15 @@
 //    mavenLocal()
   }
 
+  apply plugin: 'net.ltgt.errorprone'
+
+  tasks.withType(JavaCompile) {
+    options.compilerArgs += ['-Xlint:all',
+                             '-Xlint:-serial',
+                             '-Xlint:-deprecation',
+                             '-Werror']
+  }
+
   tasks.withType(Test) {
     testLogging {
       exceptionFormat 'FULL'
diff --git a/leakcanary-analyzer/src/main/java/com/squareup/leakcanary/HahaHelper.java b/leakcanary-analyzer/src/main/java/com/squareup/leakcanary/HahaHelper.java
index 58b8131..a651572 100644
--- a/leakcanary-analyzer/src/main/java/com/squareup/leakcanary/HahaHelper.java
+++ b/leakcanary-analyzer/src/main/java/com/squareup/leakcanary/HahaHelper.java
@@ -159,10 +159,10 @@
     return classInstance.getValues();
   }
 
+  @SuppressWarnings({ "unchecked", "TypeParameterUnusedInFormals" })
   static <T> T fieldValue(List<ClassInstance.FieldValue> values, String fieldName) {
     for (ClassInstance.FieldValue fieldValue : values) {
       if (fieldValue.getField().getName().equals(fieldName)) {
-        //noinspection unchecked
         return (T) fieldValue.getValue();
       }
     }
diff --git a/leakcanary-android/src/main/java/com/squareup/leakcanary/AndroidHeapDumper.java b/leakcanary-android/src/main/java/com/squareup/leakcanary/AndroidHeapDumper.java
index 3002cd7..9d61805 100644
--- a/leakcanary-android/src/main/java/com/squareup/leakcanary/AndroidHeapDumper.java
+++ b/leakcanary-android/src/main/java/com/squareup/leakcanary/AndroidHeapDumper.java
@@ -30,7 +30,7 @@
 
 public final class AndroidHeapDumper implements HeapDumper {
 
-  private final Context context;
+  final Context context;
   private final LeakDirectoryProvider leakDirectoryProvider;
   private final Handler mainHandler;
 
@@ -40,6 +40,8 @@
     mainHandler = new Handler(Looper.getMainLooper());
   }
 
+
+  @SuppressWarnings("ReferenceEquality") // Explicitly checking for named null.
   @Override public File dumpHeap() {
     File heapDumpFile = leakDirectoryProvider.newHeapDumpFile();
 
diff --git a/leakcanary-android/src/main/java/com/squareup/leakcanary/AndroidWatchExecutor.java b/leakcanary-android/src/main/java/com/squareup/leakcanary/AndroidWatchExecutor.java
index df107e5..585af09 100644
--- a/leakcanary-android/src/main/java/com/squareup/leakcanary/AndroidWatchExecutor.java
+++ b/leakcanary-android/src/main/java/com/squareup/leakcanary/AndroidWatchExecutor.java
@@ -53,7 +53,7 @@
     }
   }
 
-  private void postWaitForIdle(final Retryable retryable, final int failedAttempts) {
+  void postWaitForIdle(final Retryable retryable, final int failedAttempts) {
     mainHandler.post(new Runnable() {
       @Override public void run() {
         waitForIdle(retryable, failedAttempts);
@@ -71,7 +71,7 @@
     });
   }
 
-  private void postToBackgroundWithDelay(final Retryable retryable, final int failedAttempts) {
+  void postToBackgroundWithDelay(final Retryable retryable, final int failedAttempts) {
     long exponentialBackoffFactor = (long) Math.min(Math.pow(2, failedAttempts), maxBackoffFactor);
     long delayMillis = initialDelayMillis * exponentialBackoffFactor;
     backgroundHandler.postDelayed(new Runnable() {
diff --git a/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakActivity.java b/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakActivity.java
index f8a132e..49d530f 100644
--- a/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakActivity.java
+++ b/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakActivity.java
@@ -104,6 +104,7 @@
   private TextView failureView;
   private Button actionButton;
 
+  @SuppressWarnings("unchecked")
   @Override protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
 
@@ -116,7 +117,6 @@
       }
     }
 
-    //noinspection unchecked
     leaks = (List<Leak>) getLastNonConfigurationInstance();
 
     setContentView(R.layout.leak_canary_display_leak);
@@ -334,12 +334,12 @@
                 android.R.drawable.ic_dialog_alert)
                 .setTitle(R.string.leak_canary_delete_all)
                 .setMessage(R.string.leak_canary_delete_all_leaks_title)
-                .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
+                .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                   @Override public void onClick(DialogInterface dialog, int which) {
                     deleteAllLeaks();
                   }
                 })
-                .setNegativeButton(android.R.string.no, null)
+                .setNegativeButton(android.R.string.cancel, null)
                 .show();
           }
         });
diff --git a/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakAdapter.java b/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakAdapter.java
index fd23cfb..4e71b4f 100644
--- a/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakAdapter.java
+++ b/leakcanary-android/src/main/java/com/squareup/leakcanary/internal/DisplayLeakAdapter.java
@@ -196,7 +196,8 @@
     return position;
   }
 
-  @SuppressWarnings("unchecked") private static <T extends View> T findById(View view, int id) {
+  @SuppressWarnings({ "unchecked", "TypeParameterUnusedInFormals" })
+  private static <T extends View> T findById(View view, int id) {
     return (T) view.findViewById(id);
   }
 }
diff --git a/leakcanary-watcher/src/main/java/com/squareup/leakcanary/ExcludedRefs.java b/leakcanary-watcher/src/main/java/com/squareup/leakcanary/ExcludedRefs.java
index ce75157..6ac369e 100644
--- a/leakcanary-watcher/src/main/java/com/squareup/leakcanary/ExcludedRefs.java
+++ b/leakcanary-watcher/src/main/java/com/squareup/leakcanary/ExcludedRefs.java
@@ -185,7 +185,7 @@
       return this;
     }
 
-    public ExcludedRefs build() {
+    @Override public ExcludedRefs build() {
       return new ExcludedRefs(this);
     }
   }
diff --git a/leakcanary-watcher/src/main/java/com/squareup/leakcanary/RefWatcher.java b/leakcanary-watcher/src/main/java/com/squareup/leakcanary/RefWatcher.java
index 57ee1e3..8a01a47 100644
--- a/leakcanary-watcher/src/main/java/com/squareup/leakcanary/RefWatcher.java
+++ b/leakcanary-watcher/src/main/java/com/squareup/leakcanary/RefWatcher.java
@@ -97,6 +97,7 @@
     });
   }
 
+  @SuppressWarnings("ReferenceEquality") // Explicitly checking for named null.
   Retryable.Result ensureGone(final KeyedWeakReference reference, final long watchStartNanoTime) {
     long gcStartNanoTime = System.nanoTime();
     long watchDurationMs = NANOSECONDS.toMillis(gcStartNanoTime - watchStartNanoTime);
diff --git a/leakcanary-watcher/src/main/java/com/squareup/leakcanary/RefWatcherBuilder.java b/leakcanary-watcher/src/main/java/com/squareup/leakcanary/RefWatcherBuilder.java
index 9e5d2a1..b4c9eb3 100644
--- a/leakcanary-watcher/src/main/java/com/squareup/leakcanary/RefWatcherBuilder.java
+++ b/leakcanary-watcher/src/main/java/com/squareup/leakcanary/RefWatcherBuilder.java
@@ -4,7 +4,7 @@
  * Responsible for building {@link RefWatcher} instances. Subclasses should provide sane defaults
  * for the platform they support.
  */
-public class RefWatcherBuilder<T extends RefWatcherBuilder> {
+public class RefWatcherBuilder<T extends RefWatcherBuilder<T>> {
 
   private ExcludedRefs excludedRefs;
   private HeapDump.Listener heapDumpListener;
@@ -117,8 +117,8 @@
     return WatchExecutor.NONE;
   }
 
+  @SuppressWarnings("unchecked")
   protected final T self() {
-    //noinspection unchecked
     return (T) this;
   }
 }