From 179e16445e0f78a1ae53a9cb7323c4665c24713f Mon Sep 17 00:00:00 2001 From: Salvador Martinez Date: Tue, 29 Nov 2016 10:36:12 -0800 Subject: [PATCH] Added logging to pinpoint source of bug Sometimes the airplane mode banner will show up even though airplane mode is not on. Logging has been added to several areas around this condition in addition to where the actual view is created. This will be used to try and get a better handle on what the source of the bug is. Test: manual Bug: 30860132 Change-Id: I7213aa7e187c5a8c0e94a5ce7a3269e6667cd61b --- src/com/android/settings/dashboard/DashboardAdapter.java | 2 ++ src/com/android/settings/dashboard/DashboardSummary.java | 4 ++++ .../dashboard/conditional/AirplaneModeCondition.java | 9 +++++++++ .../dashboard/conditional/ConditionAdapterUtils.java | 8 ++++++++ .../settings/dashboard/conditional/ConditionManager.java | 4 ++++ 5 files changed, 27 insertions(+) diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java index 38910302e5b..8ff5607a590 100644 --- a/src/com/android/settings/dashboard/DashboardAdapter.java +++ b/src/com/android/settings/dashboard/DashboardAdapter.java @@ -25,6 +25,7 @@ import android.support.v7.widget.PopupMenu; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.util.ArrayMap; +import android.util.Log; import android.util.TypedValue; import android.view.ContextThemeWrapper; import android.view.LayoutInflater; @@ -153,6 +154,7 @@ public class DashboardAdapter extends RecyclerView.Adapter conditions) { final DashboardData prevData = mDashboardData; + Log.d(TAG, "adapter setConditions called"); mDashboardData = new DashboardData.Builder(prevData) .setConditions(conditions) .build(); diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java index 0b3cc327955..09c0e62b3a6 100644 --- a/src/com/android/settings/dashboard/DashboardSummary.java +++ b/src/com/android/settings/dashboard/DashboardSummary.java @@ -177,9 +177,12 @@ public class DashboardSummary extends InstrumentedFragment public void onWindowFocusChanged(boolean hasWindowFocus) { long startTime = System.currentTimeMillis(); if (hasWindowFocus) { + Log.d(TAG, "Listening for condition changes"); mConditionManager.addListener(this); + Log.d(TAG, "conditions refreshed"); mConditionManager.refreshAll(); } else { + Log.d(TAG, "Stopped listening for condition changes"); mConditionManager.remListener(this); } if (DEBUG_TIMING) { @@ -220,6 +223,7 @@ public class DashboardSummary extends InstrumentedFragment mDashboard.setHasFixedSize(true); mDashboard.addItemDecoration(new DashboardDecorator(getContext())); mDashboard.setListener(this); + Log.d(TAG, "adapter created"); mAdapter = new DashboardAdapter(getContext(), mSuggestionParser, mMetricsFeatureProvider, bundle, mConditionManager.getConditions()); mDashboard.setAdapter(mAdapter); diff --git a/src/com/android/settings/dashboard/conditional/AirplaneModeCondition.java b/src/com/android/settings/dashboard/conditional/AirplaneModeCondition.java index b40baf59a9a..37faeabdc32 100644 --- a/src/com/android/settings/dashboard/conditional/AirplaneModeCondition.java +++ b/src/com/android/settings/dashboard/conditional/AirplaneModeCondition.java @@ -20,12 +20,14 @@ import android.content.Context; import android.content.Intent; import android.graphics.drawable.Icon; import android.net.ConnectivityManager; +import android.util.Log; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.Settings; import com.android.settingslib.WirelessUtils; public class AirplaneModeCondition extends Condition { + public static String TAG = "APM_Condition"; public AirplaneModeCondition(ConditionManager conditionManager) { super(conditionManager); @@ -33,6 +35,7 @@ public class AirplaneModeCondition extends Condition { @Override public void refreshState() { + Log.d(TAG, "APM condition refreshed"); setActive(WirelessUtils.isAirplaneModeOn(mManager.getContext())); } @@ -46,6 +49,12 @@ public class AirplaneModeCondition extends Condition { return Icon.createWithResource(mManager.getContext(), R.drawable.ic_airplane); } + @Override + protected void setActive(boolean active) { + super.setActive(active); + Log.d(TAG, "setActive was called with " + active); + } + @Override public CharSequence getTitle() { return mManager.getContext().getString(R.string.condition_airplane_title); diff --git a/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java b/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java index c79cdf34d51..b58ac39b9fe 100644 --- a/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java +++ b/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java @@ -21,6 +21,7 @@ import android.animation.ObjectAnimator; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.ItemTouchHelper; +import android.util.Log; import android.view.View; import android.view.View.OnLayoutChangeListener; import android.view.ViewGroup.LayoutParams; @@ -31,8 +32,10 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; import com.android.settings.dashboard.DashboardAdapter; import com.android.settings.overlay.FeatureFactory; +import com.android.settingslib.WirelessUtils; public class ConditionAdapterUtils { + private static final String TAG = "ConditionAdapterUtils"; public static void addDismiss(final RecyclerView recyclerView) { ItemTouchHelper.SimpleCallback callback = new ItemTouchHelper.SimpleCallback(0, @@ -65,6 +68,11 @@ public class ConditionAdapterUtils { public static void bindViews(final Condition condition, DashboardAdapter.DashboardItemHolder view, boolean isExpanded, View.OnClickListener onClickListener, View.OnClickListener onExpandListener) { + if (condition instanceof AirplaneModeCondition) { + Log.d(TAG, "Airplane mode condition has been bound with " + + "isActive=" + condition.isActive() + ". Airplane mode is currently " + + WirelessUtils.isAirplaneModeOn(condition.mManager.getContext())); + } View card = view.itemView.findViewById(R.id.content); card.setTag(condition); card.setOnClickListener(onClickListener); diff --git a/src/com/android/settings/dashboard/conditional/ConditionManager.java b/src/com/android/settings/dashboard/conditional/ConditionManager.java index 691821a776f..030c62d2515 100644 --- a/src/com/android/settings/dashboard/conditional/ConditionManager.java +++ b/src/com/android/settings/dashboard/conditional/ConditionManager.java @@ -59,9 +59,11 @@ public class ConditionManager { mContext = context; mConditions = new ArrayList<>(); if (loadConditionsNow) { + Log.d(TAG, "conditions loading synchronously"); ConditionLoader loader = new ConditionLoader(); loader.onPostExecute(loader.doInBackground()); } else { + Log.d(TAG, "conditions loading asychronously"); new ConditionLoader().execute(); } } @@ -229,6 +231,7 @@ public class ConditionManager { private class ConditionLoader extends AsyncTask> { @Override protected ArrayList doInBackground(Void... params) { + Log.d(TAG, "loading conditions from xml"); ArrayList conditions = new ArrayList<>(); mXmlFile = new File(mContext.getFilesDir(), FILE_NAME); if (mXmlFile.exists()) { @@ -240,6 +243,7 @@ public class ConditionManager { @Override protected void onPostExecute(ArrayList conditions) { + Log.d(TAG, "conditions loaded from xml, refreshing conditions"); mConditions.clear(); mConditions.addAll(conditions); refreshAll();