Commit 12f2dc6e authored by Sam Maier's avatar Sam Maier Committed by Commit Bot

AsyncTask ErrorProne check

Bug: 843745
Change-Id: I86c008448cc40004c45823f21cb4fff607208ed5
Reviewed-on: https://chromium-review.googlesource.com/1129630
Commit-Queue: Sam Maier <smaier@chromium.org>
Reviewed-by: default avatarYaron Friedman <yfriedman@chromium.org>
Reviewed-by: default avatarEgor Pasko <pasko@chromium.org>
Reviewed-by: default avataragrieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#583007}
parent ec4abe83
...@@ -35,6 +35,7 @@ public class AsyncTaskTest { ...@@ -35,6 +35,7 @@ public class AsyncTaskTest {
} }
} }
@SuppressWarnings("NoAndroidAsyncTaskCheck")
private static class SpecialOsAsyncTask extends android.os.AsyncTask<Void, Void, Void> { private static class SpecialOsAsyncTask extends android.os.AsyncTask<Void, Void, Void> {
@Override @Override
protected Void doInBackground(Void... params) { protected Void doInBackground(Void... params) {
......
...@@ -235,6 +235,7 @@ public abstract class AsyncTask<Result> { ...@@ -235,6 +235,7 @@ public abstract class AsyncTask<Result> {
allowCoreThreadTimeOut(true); allowCoreThreadTimeOut(true);
} }
@SuppressWarnings("NoAndroidAsyncTaskCheck")
private static String getClassName(Runnable runnable) { private static String getClassName(Runnable runnable) {
Class blamedClass = runnable.getClass(); Class blamedClass = runnable.getClass();
try { try {
...@@ -354,6 +355,7 @@ public abstract class AsyncTask<Result> { ...@@ -354,6 +355,7 @@ public abstract class AsyncTask<Result> {
FINISHED, FINISHED,
} }
@SuppressWarnings("NoAndroidAsyncTaskCheck")
public static void takeOverAndroidThreadPool() { public static void takeOverAndroidThreadPool() {
ThreadPoolExecutor exec = (ThreadPoolExecutor) android.os.AsyncTask.THREAD_POOL_EXECUTOR; ThreadPoolExecutor exec = (ThreadPoolExecutor) android.os.AsyncTask.THREAD_POOL_EXECUTOR;
exec.setRejectedExecutionHandler(STEAL_RUNNABLE_HANDLER); exec.setRejectedExecutionHandler(STEAL_RUNNABLE_HANDLER);
......
...@@ -85,7 +85,7 @@ android_library("custom_tabs_support_java") { ...@@ -85,7 +85,7 @@ android_library("custom_tabs_support_java") {
] ]
srcjar_deps = [ ":chrome_custom_tabs_service_aidl" ] srcjar_deps = [ ":chrome_custom_tabs_service_aidl" ]
android_manifest_for_lint = "src/customtabs/AndroidManifest.xml" android_manifest_for_lint = "src/customtabs/AndroidManifest.xml"
chromium_code = true chromium_code = false
} }
android_aidl("chrome_custom_tabs_service_aidl") { android_aidl("chrome_custom_tabs_service_aidl") {
......
...@@ -9,6 +9,7 @@ java_library("errorprone_plugin_java") { ...@@ -9,6 +9,7 @@ java_library("errorprone_plugin_java") {
# Turned off because of existing code which fails the check # Turned off because of existing code which fails the check
# "src/org/chromium/tools/errorprone/plugin/NoContextGetApplicationContext.java", # "src/org/chromium/tools/errorprone/plugin/NoContextGetApplicationContext.java",
"src/org/chromium/tools/errorprone/plugin/NoSynchronizedMethodCheck.java", "src/org/chromium/tools/errorprone/plugin/NoSynchronizedMethodCheck.java",
"src/org/chromium/tools/errorprone/plugin/NoAndroidAsyncTaskCheck.java",
"src/org/chromium/tools/errorprone/plugin/NoSynchronizedThisCheck.java", "src/org/chromium/tools/errorprone/plugin/NoSynchronizedThisCheck.java",
] ]
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.tools.errorprone.plugin;
import com.google.auto.service.AutoService;
import com.google.errorprone.BugPattern;
import com.google.errorprone.VisitorState;
import com.google.errorprone.bugpatterns.BugChecker;
import com.google.errorprone.matchers.Description;
import com.google.errorprone.util.ASTHelpers;
import com.sun.source.tree.MemberSelectTree;
import com.sun.tools.javac.code.Symbol;
/**
* Triggers an error for any occurrence of android.os.AsyncTask.
*/
@AutoService(BugChecker.class)
@BugPattern(name = "NoAndroidAsyncTaskCheck", category = BugPattern.Category.ANDROID,
summary = "Do not use android.os.AsyncTask - use org.chromium.base.AsyncTask instead",
severity = BugPattern.SeverityLevel.ERROR, linkType = BugPattern.LinkType.CUSTOM,
link = "https://bugs.chromium.org/p/chromium/issues/detail?id=843745")
public class NoAndroidAsyncTaskCheck
extends BugChecker implements BugChecker.MemberSelectTreeMatcher {
@Override
public Description matchMemberSelect(MemberSelectTree tree, VisitorState state) {
if (tree.getIdentifier().contentEquals("AsyncTask")) {
Symbol symbol = ASTHelpers.getSymbol(tree.getExpression());
if (symbol.getQualifiedName().contentEquals("android.os")) {
return buildDescription(tree)
.setMessage("Do not use android.os.AsyncTask - "
+ "use org.chromium.base.AsyncTask instead")
.build();
}
}
return Description.NO_MATCH;
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment