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
This commit is contained in:
Salvador Martinez
2016-11-29 10:36:12 -08:00
parent b305ec6762
commit 179e16445e
5 changed files with 27 additions and 0 deletions

View File

@@ -25,6 +25,7 @@ import android.support.v7.widget.PopupMenu;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.util.Log;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.ContextThemeWrapper; import android.view.ContextThemeWrapper;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@@ -153,6 +154,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
public void setConditions(List<Condition> conditions) { public void setConditions(List<Condition> conditions) {
final DashboardData prevData = mDashboardData; final DashboardData prevData = mDashboardData;
Log.d(TAG, "adapter setConditions called");
mDashboardData = new DashboardData.Builder(prevData) mDashboardData = new DashboardData.Builder(prevData)
.setConditions(conditions) .setConditions(conditions)
.build(); .build();

View File

@@ -177,9 +177,12 @@ public class DashboardSummary extends InstrumentedFragment
public void onWindowFocusChanged(boolean hasWindowFocus) { public void onWindowFocusChanged(boolean hasWindowFocus) {
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
if (hasWindowFocus) { if (hasWindowFocus) {
Log.d(TAG, "Listening for condition changes");
mConditionManager.addListener(this); mConditionManager.addListener(this);
Log.d(TAG, "conditions refreshed");
mConditionManager.refreshAll(); mConditionManager.refreshAll();
} else { } else {
Log.d(TAG, "Stopped listening for condition changes");
mConditionManager.remListener(this); mConditionManager.remListener(this);
} }
if (DEBUG_TIMING) { if (DEBUG_TIMING) {
@@ -220,6 +223,7 @@ public class DashboardSummary extends InstrumentedFragment
mDashboard.setHasFixedSize(true); mDashboard.setHasFixedSize(true);
mDashboard.addItemDecoration(new DashboardDecorator(getContext())); mDashboard.addItemDecoration(new DashboardDecorator(getContext()));
mDashboard.setListener(this); mDashboard.setListener(this);
Log.d(TAG, "adapter created");
mAdapter = new DashboardAdapter(getContext(), mSuggestionParser, mMetricsFeatureProvider, mAdapter = new DashboardAdapter(getContext(), mSuggestionParser, mMetricsFeatureProvider,
bundle, mConditionManager.getConditions()); bundle, mConditionManager.getConditions());
mDashboard.setAdapter(mAdapter); mDashboard.setAdapter(mAdapter);

View File

@@ -20,12 +20,14 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.drawable.Icon; import android.graphics.drawable.Icon;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.util.Log;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.Settings; import com.android.settings.Settings;
import com.android.settingslib.WirelessUtils; import com.android.settingslib.WirelessUtils;
public class AirplaneModeCondition extends Condition { public class AirplaneModeCondition extends Condition {
public static String TAG = "APM_Condition";
public AirplaneModeCondition(ConditionManager conditionManager) { public AirplaneModeCondition(ConditionManager conditionManager) {
super(conditionManager); super(conditionManager);
@@ -33,6 +35,7 @@ public class AirplaneModeCondition extends Condition {
@Override @Override
public void refreshState() { public void refreshState() {
Log.d(TAG, "APM condition refreshed");
setActive(WirelessUtils.isAirplaneModeOn(mManager.getContext())); setActive(WirelessUtils.isAirplaneModeOn(mManager.getContext()));
} }
@@ -46,6 +49,12 @@ public class AirplaneModeCondition extends Condition {
return Icon.createWithResource(mManager.getContext(), R.drawable.ic_airplane); 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 @Override
public CharSequence getTitle() { public CharSequence getTitle() {
return mManager.getContext().getString(R.string.condition_airplane_title); return mManager.getContext().getString(R.string.condition_airplane_title);

View File

@@ -21,6 +21,7 @@ import android.animation.ObjectAnimator;
import android.content.Context; import android.content.Context;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper; import android.support.v7.widget.helper.ItemTouchHelper;
import android.util.Log;
import android.view.View; import android.view.View;
import android.view.View.OnLayoutChangeListener; import android.view.View.OnLayoutChangeListener;
import android.view.ViewGroup.LayoutParams; 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.R;
import com.android.settings.dashboard.DashboardAdapter; import com.android.settings.dashboard.DashboardAdapter;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.WirelessUtils;
public class ConditionAdapterUtils { public class ConditionAdapterUtils {
private static final String TAG = "ConditionAdapterUtils";
public static void addDismiss(final RecyclerView recyclerView) { public static void addDismiss(final RecyclerView recyclerView) {
ItemTouchHelper.SimpleCallback callback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.SimpleCallback callback = new ItemTouchHelper.SimpleCallback(0,
@@ -65,6 +68,11 @@ public class ConditionAdapterUtils {
public static void bindViews(final Condition condition, public static void bindViews(final Condition condition,
DashboardAdapter.DashboardItemHolder view, boolean isExpanded, DashboardAdapter.DashboardItemHolder view, boolean isExpanded,
View.OnClickListener onClickListener, View.OnClickListener onExpandListener) { 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); View card = view.itemView.findViewById(R.id.content);
card.setTag(condition); card.setTag(condition);
card.setOnClickListener(onClickListener); card.setOnClickListener(onClickListener);

View File

@@ -59,9 +59,11 @@ public class ConditionManager {
mContext = context; mContext = context;
mConditions = new ArrayList<>(); mConditions = new ArrayList<>();
if (loadConditionsNow) { if (loadConditionsNow) {
Log.d(TAG, "conditions loading synchronously");
ConditionLoader loader = new ConditionLoader(); ConditionLoader loader = new ConditionLoader();
loader.onPostExecute(loader.doInBackground()); loader.onPostExecute(loader.doInBackground());
} else { } else {
Log.d(TAG, "conditions loading asychronously");
new ConditionLoader().execute(); new ConditionLoader().execute();
} }
} }
@@ -229,6 +231,7 @@ public class ConditionManager {
private class ConditionLoader extends AsyncTask<Void, Void, ArrayList<Condition>> { private class ConditionLoader extends AsyncTask<Void, Void, ArrayList<Condition>> {
@Override @Override
protected ArrayList<Condition> doInBackground(Void... params) { protected ArrayList<Condition> doInBackground(Void... params) {
Log.d(TAG, "loading conditions from xml");
ArrayList<Condition> conditions = new ArrayList<>(); ArrayList<Condition> conditions = new ArrayList<>();
mXmlFile = new File(mContext.getFilesDir(), FILE_NAME); mXmlFile = new File(mContext.getFilesDir(), FILE_NAME);
if (mXmlFile.exists()) { if (mXmlFile.exists()) {
@@ -240,6 +243,7 @@ public class ConditionManager {
@Override @Override
protected void onPostExecute(ArrayList<Condition> conditions) { protected void onPostExecute(ArrayList<Condition> conditions) {
Log.d(TAG, "conditions loaded from xml, refreshing conditions");
mConditions.clear(); mConditions.clear();
mConditions.addAll(conditions); mConditions.addAll(conditions);
refreshAll(); refreshAll();