| Index: base/android/java/src/org/chromium/base/CommandLine.java
|
| diff --git a/base/android/java/src/org/chromium/base/CommandLine.java b/base/android/java/src/org/chromium/base/CommandLine.java
|
| index 9f5407921a9fd492f760d9e9ab2875cc99dcb5a8..409329cfabf8ec6b05adec145155e75f3e973ad8 100644
|
| --- a/base/android/java/src/org/chromium/base/CommandLine.java
|
| +++ b/base/android/java/src/org/chromium/base/CommandLine.java
|
| @@ -16,6 +16,7 @@ import java.io.Reader;
|
| import java.util.ArrayList;
|
| import java.util.Arrays;
|
| import java.util.HashMap;
|
| +import java.util.List;
|
| import java.util.concurrent.atomic.AtomicReference;
|
|
|
| /**
|
| @@ -25,6 +26,15 @@ import java.util.concurrent.atomic.AtomicReference;
|
| * ContentShellApplication.COMMAND_LINE_FILE or ChromeShellApplication.COMMAND_LINE_FILE.
|
| **/
|
| public abstract class CommandLine {
|
| + /**
|
| + * Allows classes who cache command line flags to be notified when those arguments are updated
|
| + * at runtime. This happens in tests.
|
| + */
|
| + public interface ResetListener {
|
| + /** Called when the command line arguments are reset. */
|
| + void onCommandLineReset();
|
| + }
|
| +
|
| // Public abstract interface, implemented in derived classes.
|
| // All these methods reflect their native-side counterparts.
|
| /**
|
| @@ -87,6 +97,7 @@ public abstract class CommandLine {
|
| return false;
|
| }
|
|
|
| + private static final List<ResetListener> sResetListeners = new ArrayList<>();
|
| private static final AtomicReference<CommandLine> sCommandLine =
|
| new AtomicReference<CommandLine>();
|
|
|
| @@ -132,6 +143,20 @@ public abstract class CommandLine {
|
| @VisibleForTesting
|
| public static void reset() {
|
| setInstance(null);
|
| + ThreadUtils.postOnUiThread(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + for (ResetListener listener : sResetListeners) listener.onCommandLineReset();
|
| + }
|
| + });
|
| + }
|
| +
|
| + public static void addResetListener(ResetListener listener) {
|
| + sResetListeners.add(listener);
|
| + }
|
| +
|
| + public static void removeResetListener(ResetListener listener) {
|
| + sResetListeners.remove(listener);
|
| }
|
|
|
| /**
|
|
|