Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(70)

Unified Diff: base/test/android/javatests/src/org/chromium/base/test/util/CommandLineFlags.java

Issue 2846153003: Enable CommandLineFlag Add and Remove to be repeated in Java8 (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/test/android/javatests/src/org/chromium/base/test/util/CommandLineFlags.java
diff --git a/base/test/android/javatests/src/org/chromium/base/test/util/CommandLineFlags.java b/base/test/android/javatests/src/org/chromium/base/test/util/CommandLineFlags.java
index d5579e3b1017e482c739957a7b3deecf5552bb42..6a0d9238d6aa56239593c205b60f1f3ad313de52 100644
--- a/base/test/android/javatests/src/org/chromium/base/test/util/CommandLineFlags.java
+++ b/base/test/android/javatests/src/org/chromium/base/test/util/CommandLineFlags.java
@@ -14,12 +14,13 @@ import org.chromium.base.test.BaseTestResult.PreTestHook;
import org.chromium.base.test.util.parameter.BaseParameter;
import java.lang.annotation.ElementType;
-import java.lang.annotation.Inherited;
+import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.reflect.AnnotatedElement;
import java.lang.reflect.Method;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
@@ -40,25 +41,37 @@ public final class CommandLineFlags {
/**
* Adds command-line flags to the {@link org.chromium.base.CommandLine} for this test.
*/
- @Inherited
+ @Repeatable(AddContainer.class)
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Add {
String[] value();
}
+ @Retention(RetentionPolicy.RUNTIME)
+ @Target({ElementType.METHOD, ElementType.TYPE})
+ public @interface AddContainer {
+ Add[] value() default {};
+ }
+
/**
* Removes command-line flags from the {@link org.chromium.base.CommandLine} from this test.
*
* Note that this can only remove flags added via {@link Add} above.
*/
- @Inherited
+ @Repeatable(RemoveContainer.class)
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Remove {
String[] value();
}
+ @Retention(RetentionPolicy.RUNTIME)
+ @Target({ElementType.METHOD, ElementType.TYPE})
+ public @interface RemoveContainer {
+ Remove[] value() default {};
+ }
+
/**
* Sets up the CommandLine with the appropriate flags.
*
@@ -84,16 +97,26 @@ public final class CommandLineFlags {
private static Set<String> getFlags(AnnotatedElement element) {
AnnotatedElement parent = (element instanceof Method)
? ((Method) element).getDeclaringClass()
- : ((Class) element).getSuperclass();
+ : ((Class<?>) element).getSuperclass();
Set<String> flags = (parent == null) ? new HashSet<String>() : getFlags(parent);
- if (element.isAnnotationPresent(CommandLineFlags.Add.class)) {
+ if (element.isAnnotationPresent(CommandLineFlags.AddContainer.class)) {
+ for (Add addflag : element.getAnnotation(CommandLineFlags.AddContainer.class).value()) {
+ flags.addAll(Arrays.asList(addflag.value()));
+ }
+ } else if (element.isAnnotationPresent(CommandLineFlags.Add.class)) {
flags.addAll(
Arrays.asList(element.getAnnotation(CommandLineFlags.Add.class).value()));
}
- if (element.isAnnotationPresent(CommandLineFlags.Remove.class)) {
- List<String> flagsToRemove =
+ List<String> flagsToRemove = new ArrayList<>();
+ if (element.isAnnotationPresent(CommandLineFlags.RemoveContainer.class)) {
+ for (Remove removeflag :
+ element.getAnnotation(CommandLineFlags.RemoveContainer.class).value()) {
+ flagsToRemove.addAll(Arrays.asList(removeflag.value()));
+ }
+ } else if (element.isAnnotationPresent(CommandLineFlags.Remove.class)) {
+ flagsToRemove =
Arrays.asList(element.getAnnotation(CommandLineFlags.Remove.class).value());
for (String flagToRemove : flagsToRemove) {
// If your test fails here, you have tried to remove a command-line flag via
@@ -102,8 +125,8 @@ public final class CommandLineFlags {
Assert.assertFalse("Unable to remove command-line flag \"" + flagToRemove + "\".",
CommandLine.getInstance().hasSwitch(flagToRemove));
}
- flags.removeAll(flagsToRemove);
}
+ flags.removeAll(flagsToRemove);
return flags;
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698