diff --git a/android/src/main/java/com/facebook/flipper/plugins/inspector/NodeDescriptor.java b/android/src/main/java/com/facebook/flipper/plugins/inspector/NodeDescriptor.java index 37026980b..fe4b98a17 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/inspector/NodeDescriptor.java +++ b/android/src/main/java/com/facebook/flipper/plugins/inspector/NodeDescriptor.java @@ -8,13 +8,14 @@ package com.facebook.flipper.plugins.inspector; +import android.support.annotation.Nullable; +import com.facebook.flipper.core.ErrorReportingRunnable; import com.facebook.flipper.core.FlipperArray; import com.facebook.flipper.core.FlipperConnection; import com.facebook.flipper.core.FlipperDynamic; import com.facebook.flipper.core.FlipperObject; import java.util.Collections; import java.util.List; -import javax.annotation.Nullable; /** * A NodeDescriptor is an object which known how to expose an Object of type T to the ew Inspector. @@ -22,7 +23,7 @@ import javax.annotation.Nullable; * data can be exposed to the inspector. */ public abstract class NodeDescriptor { - protected FlipperConnection mConnection; + @Nullable protected FlipperConnection mConnection; private DescriptorMapping mDescriptorMapping; void setConnection(FlipperConnection connection) { @@ -50,7 +51,7 @@ public abstract class NodeDescriptor { */ protected final void invalidate(final T node) { if (mConnection != null) { - new ErrorReportingRunnable() { + new ErrorReportingRunnable(mConnection) { @Override protected void runOrThrow() throws Exception { FlipperArray array = @@ -71,7 +72,7 @@ public abstract class NodeDescriptor { */ protected final void invalidateAX(final T node) { if (mConnection != null) { - new ErrorReportingRunnable() { + new ErrorReportingRunnable(mConnection) { @Override protected void runOrThrow() throws Exception { FlipperArray array = @@ -89,13 +90,6 @@ public abstract class NodeDescriptor { return mConnection != null; } - protected abstract class ErrorReportingRunnable - extends com.facebook.flipper.core.ErrorReportingRunnable { - public ErrorReportingRunnable() { - super(mConnection); - } - } - /** * Initialize a node. This implementation usually consists of setting up listeners to know when to * call {@link NodeDescriptor#invalidate(Object)}. diff --git a/android/src/main/java/com/facebook/flipper/plugins/inspector/descriptors/ApplicationDescriptor.java b/android/src/main/java/com/facebook/flipper/plugins/inspector/descriptors/ApplicationDescriptor.java index 2984fb037..e598b9099 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/inspector/descriptors/ApplicationDescriptor.java +++ b/android/src/main/java/com/facebook/flipper/plugins/inspector/descriptors/ApplicationDescriptor.java @@ -13,6 +13,7 @@ import android.support.v4.view.ViewCompat; import android.view.View; import android.view.ViewGroup; import android.view.accessibility.AccessibilityEvent; +import com.facebook.flipper.core.ErrorReportingRunnable; import com.facebook.flipper.core.FlipperDynamic; import com.facebook.flipper.core.FlipperObject; import com.facebook.flipper.plugins.inspector.ApplicationWrapper; @@ -58,7 +59,7 @@ public class ApplicationDescriptor extends NodeDescriptor { } } - private static List editedDelegates = new ArrayList<>(); + private static final List editedDelegates = new ArrayList<>(); private static boolean searchActive; public static void setSearchActive(boolean active) { @@ -143,22 +144,25 @@ public class ApplicationDescriptor extends NodeDescriptor { }); final NodeKey key = new NodeKey(); - final Runnable maybeInvalidate = - new NodeDescriptor.ErrorReportingRunnable() { - @Override - public void runOrThrow() throws Exception { - if (connected()) { - if (key.set(node)) { - invalidate(node); - invalidateAX(node); - setDelegates(node); - } - node.postDelayed(this, 1000); - } - } - }; - node.postDelayed(maybeInvalidate, 1000); + if (mConnection != null) { + final Runnable maybeInvalidate = + new ErrorReportingRunnable(mConnection) { + @Override + public void runOrThrow() { + if (connected()) { + if (key.set(node)) { + invalidate(node); + invalidateAX(node); + setDelegates(node); + } + node.postDelayed(this, 1000); + } + } + }; + + node.postDelayed(maybeInvalidate, 1000); + } } @Override @@ -172,7 +176,7 @@ public class ApplicationDescriptor extends NodeDescriptor { } @Override - public String getAXName(ApplicationWrapper node) throws Exception { + public String getAXName(ApplicationWrapper node) { return "Application"; } @@ -228,7 +232,7 @@ public class ApplicationDescriptor extends NodeDescriptor { } } - private void runHitTest(ApplicationWrapper node, Touch touch, boolean ax) throws Exception { + private void runHitTest(ApplicationWrapper node, Touch touch, boolean ax) { final int childCount = getChildCount(node); for (int i = childCount - 1; i >= 0; i--) { @@ -252,8 +256,9 @@ public class ApplicationDescriptor extends NodeDescriptor { runHitTest(node, touch, true); } + @Nullable @Override - public @Nullable String getDecoration(ApplicationWrapper obj) { + public String getDecoration(ApplicationWrapper obj) { return null; } diff --git a/android/src/main/java/com/facebook/flipper/plugins/inspector/descriptors/ViewDescriptor.java b/android/src/main/java/com/facebook/flipper/plugins/inspector/descriptors/ViewDescriptor.java index b37072f53..50b6a8741 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/inspector/descriptors/ViewDescriptor.java +++ b/android/src/main/java/com/facebook/flipper/plugins/inspector/descriptors/ViewDescriptor.java @@ -29,6 +29,7 @@ import android.view.ViewGroup.MarginLayoutParams; import android.view.ViewParent; import android.widget.FrameLayout; import android.widget.LinearLayout; +import com.facebook.flipper.core.ErrorReportingRunnable; import com.facebook.flipper.core.FlipperDynamic; import com.facebook.flipper.core.FlipperObject; import com.facebook.flipper.plugins.inspector.HighlightedOverlay; @@ -546,20 +547,22 @@ public class ViewDescriptor extends NodeDescriptor { return tags.build(); } - new ErrorReportingRunnable() { - @Override - protected void runOrThrow() throws Exception { - final SparseArray keyedTags = (SparseArray) sKeyedTagsField.get(node); - if (keyedTags != null) { - for (int i = 0, count = keyedTags.size(); i < count; i++) { - final String id = - ResourcesUtil.getIdStringQuietly( - node.getContext(), node.getResources(), keyedTags.keyAt(i)); - tags.put(id, keyedTags.valueAt(i)); + if (mConnection != null) { + new ErrorReportingRunnable(mConnection) { + @Override + protected void runOrThrow() throws Exception { + final SparseArray keyedTags = (SparseArray) sKeyedTagsField.get(node); + if (keyedTags != null) { + for (int i = 0, count = keyedTags.size(); i < count; i++) { + final String id = + ResourcesUtil.getIdStringQuietly( + node.getContext(), node.getResources(), keyedTags.keyAt(i)); + tags.put(id, keyedTags.valueAt(i)); + } } } - } - }.run(); + }.run(); + } return tags.build(); } diff --git a/android/src/main/java/com/facebook/flipper/plugins/inspector/descriptors/ViewGroupDescriptor.java b/android/src/main/java/com/facebook/flipper/plugins/inspector/descriptors/ViewGroupDescriptor.java index f22093808..9862ac0a4 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/inspector/descriptors/ViewGroupDescriptor.java +++ b/android/src/main/java/com/facebook/flipper/plugins/inspector/descriptors/ViewGroupDescriptor.java @@ -17,6 +17,7 @@ import android.os.Build; import android.view.View; import android.view.ViewGroup; import com.facebook.flipper.R; +import com.facebook.flipper.core.ErrorReportingRunnable; import com.facebook.flipper.core.FlipperDynamic; import com.facebook.flipper.core.FlipperObject; import com.facebook.flipper.plugins.inspector.HiddenNode; @@ -66,26 +67,28 @@ public class ViewGroupDescriptor extends NodeDescriptor { public void init(final ViewGroup node) { final NodeKey key = new NodeKey(); - final Runnable maybeInvalidate = - new ErrorReportingRunnable() { - @Override - public void runOrThrow() throws Exception { - if (connected()) { - if (key.set(node)) { - invalidate(node); - invalidateAX(node); - } + if (mConnection != null) { + final Runnable maybeInvalidate = + new ErrorReportingRunnable(mConnection) { + @Override + public void runOrThrow() throws Exception { + if (connected()) { + if (key.set(node)) { + invalidate(node); + invalidateAX(node); + } - final boolean hasAttachedToWindow = - Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; - if (!hasAttachedToWindow || node.isAttachedToWindow()) { - node.postDelayed(this, 1000); + final boolean hasAttachedToWindow = + Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; + if (!hasAttachedToWindow || node.isAttachedToWindow()) { + node.postDelayed(this, 1000); + } } } - } - }; + }; - node.postDelayed(maybeInvalidate, 1000); + node.postDelayed(maybeInvalidate, 1000); + } } @Override