Loading api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -4837,11 +4837,13 @@ package android.app { public static class Instrumentation.ActivityMonitor { ctor public Instrumentation.ActivityMonitor(android.content.IntentFilter, android.app.Instrumentation.ActivityResult, boolean); ctor public Instrumentation.ActivityMonitor(java.lang.String, android.app.Instrumentation.ActivityResult, boolean); ctor public Instrumentation.ActivityMonitor(); method public final android.content.IntentFilter getFilter(); method public final int getHits(); method public final android.app.Activity getLastActivity(); method public final android.app.Instrumentation.ActivityResult getResult(); method public final boolean isBlocking(); method public android.app.Instrumentation.ActivityResult onMatchIntent(android.content.Intent); method public final android.app.Activity waitForActivity(); method public final android.app.Activity waitForActivityWithTimeout(long); } api/system-current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -4994,11 +4994,13 @@ package android.app { public static class Instrumentation.ActivityMonitor { ctor public Instrumentation.ActivityMonitor(android.content.IntentFilter, android.app.Instrumentation.ActivityResult, boolean); ctor public Instrumentation.ActivityMonitor(java.lang.String, android.app.Instrumentation.ActivityResult, boolean); ctor public Instrumentation.ActivityMonitor(); method public final android.content.IntentFilter getFilter(); method public final int getHits(); method public final android.app.Activity getLastActivity(); method public final android.app.Instrumentation.ActivityResult getResult(); method public final boolean isBlocking(); method public android.app.Instrumentation.ActivityResult onMatchIntent(android.content.Intent); method public final android.app.Activity waitForActivity(); method public final android.app.Activity waitForActivityWithTimeout(long); } api/test-current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -4847,11 +4847,13 @@ package android.app { public static class Instrumentation.ActivityMonitor { ctor public Instrumentation.ActivityMonitor(android.content.IntentFilter, android.app.Instrumentation.ActivityResult, boolean); ctor public Instrumentation.ActivityMonitor(java.lang.String, android.app.Instrumentation.ActivityResult, boolean); ctor public Instrumentation.ActivityMonitor(); method public final android.content.IntentFilter getFilter(); method public final int getHits(); method public final android.app.Activity getLastActivity(); method public final android.app.Instrumentation.ActivityResult getResult(); method public final boolean isBlocking(); method public android.app.Instrumentation.ActivityResult onMatchIntent(android.content.Intent); method public final android.app.Activity waitForActivity(); method public final android.app.Activity waitForActivityWithTimeout(long); } core/java/android/app/Instrumentation.java +101 −8 Original line number Diff line number Diff line Loading @@ -443,6 +443,7 @@ public class Instrumentation { private final String mClass; private final ActivityResult mResult; private final boolean mBlock; private final boolean mIgnoreMatchingSpecificIntents; // This is protected by 'Instrumentation.this.mSync'. Loading Loading @@ -470,6 +471,7 @@ public class Instrumentation { mClass = null; mResult = result; mBlock = block; mIgnoreMatchingSpecificIntents = false; } /** Loading @@ -491,6 +493,34 @@ public class Instrumentation { mClass = cls; mResult = result; mBlock = block; mIgnoreMatchingSpecificIntents = false; } /** * Create a new ActivityMonitor that can be used for intercepting any activity to be * started. * * <p> When an activity is started, {@link #onMatchIntent(Intent)} will be called on * instances created using this constructor to see if it is a hit. * * @see #onMatchIntent(Intent) */ public ActivityMonitor() { mWhich = null; mClass = null; mResult = null; mBlock = false; mIgnoreMatchingSpecificIntents = true; } /** * @return true if this monitor is used for intercepting any started activity by calling * into {@link #onMatchIntent(Intent)}, false if this monitor is only used * for specific intents corresponding to the intent filter or activity class * passed in the constructor. */ final boolean ignoreMatchingSpecificIntents() { return mIgnoreMatchingSpecificIntents; } /** Loading Loading @@ -578,9 +608,30 @@ public class Instrumentation { } } /** * Used for intercepting any started activity. * * <p> A non-null return value here will be considered a hit for this monitor. * By default this will return {@code null} and subclasses can override this to return * a non-null value if the intent needs to be intercepted. * * <p> Whenever a new activity is started, this method will be called on instances created * using {@link #Instrumentation.ActivityMonitor()} to check if there is a match. In case * of a match, the activity start will be blocked and the returned result will be used. * * @param intent The intent used for starting the activity. * @return The {@link ActivityResult} that needs to be used in case of a match. */ public ActivityResult onMatchIntent(Intent intent) { return null; } final boolean match(Context who, Activity activity, Intent intent) { if (mIgnoreMatchingSpecificIntents) { return false; } synchronized (this) { if (mWhich != null && mWhich.match(who.getContentResolver(), intent, Loading Loading @@ -1492,7 +1543,14 @@ public class Instrumentation { final int N = mActivityMonitors.size(); for (int i=0; i<N; i++) { final ActivityMonitor am = mActivityMonitors.get(i); if (am.match(who, null, intent)) { ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { result = am.onMatchIntent(intent); } if (result != null) { am.mHits++; return result; } else if (am.match(who, null, intent)) { am.mHits++; if (am.isBlocking()) { return requestCode >= 0 ? am.getResult() : null; Loading Loading @@ -1548,7 +1606,14 @@ public class Instrumentation { final int N = mActivityMonitors.size(); for (int i=0; i<N; i++) { final ActivityMonitor am = mActivityMonitors.get(i); if (am.match(who, null, intents[0])) { ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { result = am.onMatchIntent(intents[0]); } if (result != null) { am.mHits++; return; } else if (am.match(who, null, intents[0])) { am.mHits++; if (am.isBlocking()) { return; Loading Loading @@ -1611,7 +1676,14 @@ public class Instrumentation { final int N = mActivityMonitors.size(); for (int i=0; i<N; i++) { final ActivityMonitor am = mActivityMonitors.get(i); if (am.match(who, null, intent)) { ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { result = am.onMatchIntent(intent); } if (result != null) { am.mHits++; return result; } else if (am.match(who, null, intent)) { am.mHits++; if (am.isBlocking()) { return requestCode >= 0 ? am.getResult() : null; Loading Loading @@ -1671,7 +1743,14 @@ public class Instrumentation { final int N = mActivityMonitors.size(); for (int i=0; i<N; i++) { final ActivityMonitor am = mActivityMonitors.get(i); if (am.match(who, null, intent)) { ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { result = am.onMatchIntent(intent); } if (result != null) { am.mHits++; return result; } else if (am.match(who, null, intent)) { am.mHits++; if (am.isBlocking()) { return requestCode >= 0 ? am.getResult() : null; Loading Loading @@ -1710,7 +1789,14 @@ public class Instrumentation { final int N = mActivityMonitors.size(); for (int i=0; i<N; i++) { final ActivityMonitor am = mActivityMonitors.get(i); if (am.match(who, null, intent)) { ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { result = am.onMatchIntent(intent); } if (result != null) { am.mHits++; return result; } else if (am.match(who, null, intent)) { am.mHits++; if (am.isBlocking()) { return requestCode >= 0 ? am.getResult() : null; Loading Loading @@ -1748,7 +1834,14 @@ public class Instrumentation { final int N = mActivityMonitors.size(); for (int i=0; i<N; i++) { final ActivityMonitor am = mActivityMonitors.get(i); if (am.match(who, null, intent)) { ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { result = am.onMatchIntent(intent); } if (result != null) { am.mHits++; return; } else if (am.match(who, null, intent)) { am.mHits++; if (am.isBlocking()) { return; Loading Loading
api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -4837,11 +4837,13 @@ package android.app { public static class Instrumentation.ActivityMonitor { ctor public Instrumentation.ActivityMonitor(android.content.IntentFilter, android.app.Instrumentation.ActivityResult, boolean); ctor public Instrumentation.ActivityMonitor(java.lang.String, android.app.Instrumentation.ActivityResult, boolean); ctor public Instrumentation.ActivityMonitor(); method public final android.content.IntentFilter getFilter(); method public final int getHits(); method public final android.app.Activity getLastActivity(); method public final android.app.Instrumentation.ActivityResult getResult(); method public final boolean isBlocking(); method public android.app.Instrumentation.ActivityResult onMatchIntent(android.content.Intent); method public final android.app.Activity waitForActivity(); method public final android.app.Activity waitForActivityWithTimeout(long); }
api/system-current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -4994,11 +4994,13 @@ package android.app { public static class Instrumentation.ActivityMonitor { ctor public Instrumentation.ActivityMonitor(android.content.IntentFilter, android.app.Instrumentation.ActivityResult, boolean); ctor public Instrumentation.ActivityMonitor(java.lang.String, android.app.Instrumentation.ActivityResult, boolean); ctor public Instrumentation.ActivityMonitor(); method public final android.content.IntentFilter getFilter(); method public final int getHits(); method public final android.app.Activity getLastActivity(); method public final android.app.Instrumentation.ActivityResult getResult(); method public final boolean isBlocking(); method public android.app.Instrumentation.ActivityResult onMatchIntent(android.content.Intent); method public final android.app.Activity waitForActivity(); method public final android.app.Activity waitForActivityWithTimeout(long); }
api/test-current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -4847,11 +4847,13 @@ package android.app { public static class Instrumentation.ActivityMonitor { ctor public Instrumentation.ActivityMonitor(android.content.IntentFilter, android.app.Instrumentation.ActivityResult, boolean); ctor public Instrumentation.ActivityMonitor(java.lang.String, android.app.Instrumentation.ActivityResult, boolean); ctor public Instrumentation.ActivityMonitor(); method public final android.content.IntentFilter getFilter(); method public final int getHits(); method public final android.app.Activity getLastActivity(); method public final android.app.Instrumentation.ActivityResult getResult(); method public final boolean isBlocking(); method public android.app.Instrumentation.ActivityResult onMatchIntent(android.content.Intent); method public final android.app.Activity waitForActivity(); method public final android.app.Activity waitForActivityWithTimeout(long); }
core/java/android/app/Instrumentation.java +101 −8 Original line number Diff line number Diff line Loading @@ -443,6 +443,7 @@ public class Instrumentation { private final String mClass; private final ActivityResult mResult; private final boolean mBlock; private final boolean mIgnoreMatchingSpecificIntents; // This is protected by 'Instrumentation.this.mSync'. Loading Loading @@ -470,6 +471,7 @@ public class Instrumentation { mClass = null; mResult = result; mBlock = block; mIgnoreMatchingSpecificIntents = false; } /** Loading @@ -491,6 +493,34 @@ public class Instrumentation { mClass = cls; mResult = result; mBlock = block; mIgnoreMatchingSpecificIntents = false; } /** * Create a new ActivityMonitor that can be used for intercepting any activity to be * started. * * <p> When an activity is started, {@link #onMatchIntent(Intent)} will be called on * instances created using this constructor to see if it is a hit. * * @see #onMatchIntent(Intent) */ public ActivityMonitor() { mWhich = null; mClass = null; mResult = null; mBlock = false; mIgnoreMatchingSpecificIntents = true; } /** * @return true if this monitor is used for intercepting any started activity by calling * into {@link #onMatchIntent(Intent)}, false if this monitor is only used * for specific intents corresponding to the intent filter or activity class * passed in the constructor. */ final boolean ignoreMatchingSpecificIntents() { return mIgnoreMatchingSpecificIntents; } /** Loading Loading @@ -578,9 +608,30 @@ public class Instrumentation { } } /** * Used for intercepting any started activity. * * <p> A non-null return value here will be considered a hit for this monitor. * By default this will return {@code null} and subclasses can override this to return * a non-null value if the intent needs to be intercepted. * * <p> Whenever a new activity is started, this method will be called on instances created * using {@link #Instrumentation.ActivityMonitor()} to check if there is a match. In case * of a match, the activity start will be blocked and the returned result will be used. * * @param intent The intent used for starting the activity. * @return The {@link ActivityResult} that needs to be used in case of a match. */ public ActivityResult onMatchIntent(Intent intent) { return null; } final boolean match(Context who, Activity activity, Intent intent) { if (mIgnoreMatchingSpecificIntents) { return false; } synchronized (this) { if (mWhich != null && mWhich.match(who.getContentResolver(), intent, Loading Loading @@ -1492,7 +1543,14 @@ public class Instrumentation { final int N = mActivityMonitors.size(); for (int i=0; i<N; i++) { final ActivityMonitor am = mActivityMonitors.get(i); if (am.match(who, null, intent)) { ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { result = am.onMatchIntent(intent); } if (result != null) { am.mHits++; return result; } else if (am.match(who, null, intent)) { am.mHits++; if (am.isBlocking()) { return requestCode >= 0 ? am.getResult() : null; Loading Loading @@ -1548,7 +1606,14 @@ public class Instrumentation { final int N = mActivityMonitors.size(); for (int i=0; i<N; i++) { final ActivityMonitor am = mActivityMonitors.get(i); if (am.match(who, null, intents[0])) { ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { result = am.onMatchIntent(intents[0]); } if (result != null) { am.mHits++; return; } else if (am.match(who, null, intents[0])) { am.mHits++; if (am.isBlocking()) { return; Loading Loading @@ -1611,7 +1676,14 @@ public class Instrumentation { final int N = mActivityMonitors.size(); for (int i=0; i<N; i++) { final ActivityMonitor am = mActivityMonitors.get(i); if (am.match(who, null, intent)) { ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { result = am.onMatchIntent(intent); } if (result != null) { am.mHits++; return result; } else if (am.match(who, null, intent)) { am.mHits++; if (am.isBlocking()) { return requestCode >= 0 ? am.getResult() : null; Loading Loading @@ -1671,7 +1743,14 @@ public class Instrumentation { final int N = mActivityMonitors.size(); for (int i=0; i<N; i++) { final ActivityMonitor am = mActivityMonitors.get(i); if (am.match(who, null, intent)) { ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { result = am.onMatchIntent(intent); } if (result != null) { am.mHits++; return result; } else if (am.match(who, null, intent)) { am.mHits++; if (am.isBlocking()) { return requestCode >= 0 ? am.getResult() : null; Loading Loading @@ -1710,7 +1789,14 @@ public class Instrumentation { final int N = mActivityMonitors.size(); for (int i=0; i<N; i++) { final ActivityMonitor am = mActivityMonitors.get(i); if (am.match(who, null, intent)) { ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { result = am.onMatchIntent(intent); } if (result != null) { am.mHits++; return result; } else if (am.match(who, null, intent)) { am.mHits++; if (am.isBlocking()) { return requestCode >= 0 ? am.getResult() : null; Loading Loading @@ -1748,7 +1834,14 @@ public class Instrumentation { final int N = mActivityMonitors.size(); for (int i=0; i<N; i++) { final ActivityMonitor am = mActivityMonitors.get(i); if (am.match(who, null, intent)) { ActivityResult result = null; if (am.ignoreMatchingSpecificIntents()) { result = am.onMatchIntent(intent); } if (result != null) { am.mHits++; return; } else if (am.match(who, null, intent)) { am.mHits++; if (am.isBlocking()) { return; Loading