Turn FlipperDiagnosticsActivity into a Fragment
Summary: This allows passing in some options in an easy way, like a callback that contains all debug information for a bug report. Reviewed By: jknoxville Differential Revision: D13045282 fbshipit-source-id: 5698228ee9aef31d406313047b6836dc928448cf
This commit is contained in:
committed by
Facebook Github Bot
parent
b2b27b774e
commit
85206e4d9b
@@ -1,98 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018-present, Facebook, Inc.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the LICENSE
|
||||||
|
* file in the root directory of this source tree.
|
||||||
|
*
|
||||||
|
*/
|
||||||
package com.facebook.flipper.android.diagnostics;
|
package com.facebook.flipper.android.diagnostics;
|
||||||
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
import android.support.annotation.Nullable;
|
||||||
import android.widget.LinearLayout;
|
import android.support.v4.app.FragmentActivity;
|
||||||
import android.widget.ScrollView;
|
|
||||||
import android.widget.TextView;
|
|
||||||
import com.facebook.flipper.android.AndroidFlipperClient;
|
|
||||||
import com.facebook.flipper.core.FlipperClient;
|
|
||||||
import com.facebook.flipper.core.FlipperStateUpdateListener;
|
|
||||||
import com.facebook.flipper.core.StateSummary;
|
|
||||||
import com.facebook.flipper.core.StateSummary.StateElement;
|
|
||||||
|
|
||||||
public class FlipperDiagnosticActivity extends Activity implements FlipperStateUpdateListener {
|
public class FlipperDiagnosticActivity extends FragmentActivity {
|
||||||
|
|
||||||
private TextView summaryView;
|
|
||||||
private TextView logView;
|
|
||||||
private ScrollView scrollView;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
final LinearLayout root = new LinearLayout(this);
|
getSupportFragmentManager()
|
||||||
root.setOrientation(LinearLayout.VERTICAL);
|
.beginTransaction()
|
||||||
|
.add(android.R.id.content, FlipperDiagnosticFragment.newInstance())
|
||||||
summaryView = new TextView(this);
|
.commit();
|
||||||
logView = new TextView(this);
|
|
||||||
scrollView = new ScrollView(this);
|
|
||||||
scrollView.addView(logView);
|
|
||||||
root.addView(summaryView);
|
|
||||||
root.addView(scrollView);
|
|
||||||
|
|
||||||
setContentView(root);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void onStart() {
|
|
||||||
super.onStart();
|
|
||||||
final FlipperClient client = AndroidFlipperClient.getInstance(this);
|
|
||||||
client.subscribeForUpdates(this);
|
|
||||||
|
|
||||||
summaryView.setText(getSummary());
|
|
||||||
logView.setText(client.getState());
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void onResume() {
|
|
||||||
super.onResume();
|
|
||||||
scrollView.fullScroll(View.FOCUS_DOWN);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onUpdate() {
|
|
||||||
final String state = AndroidFlipperClient.getInstance(this).getState();
|
|
||||||
final String summary = getSummary();
|
|
||||||
|
|
||||||
runOnUiThread(
|
|
||||||
new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
summaryView.setText(summary);
|
|
||||||
logView.setText(state);
|
|
||||||
scrollView.fullScroll(View.FOCUS_DOWN);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private String getSummary() {
|
|
||||||
final Context context = this;
|
|
||||||
final StateSummary summary = AndroidFlipperClient.getInstance(context).getStateSummary();
|
|
||||||
final StringBuilder stateText = new StringBuilder();
|
|
||||||
for (StateElement e : summary.mList) {
|
|
||||||
final String status;
|
|
||||||
switch (e.getState()) {
|
|
||||||
case IN_PROGRESS:
|
|
||||||
status = "⏳";
|
|
||||||
break;
|
|
||||||
case SUCCESS:
|
|
||||||
status = "✅";
|
|
||||||
break;
|
|
||||||
case FAILED:
|
|
||||||
status = "❌";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
status = "❓";
|
|
||||||
}
|
|
||||||
stateText.append(status).append(e.getName()).append("\n");
|
|
||||||
}
|
|
||||||
return stateText.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void onStop() {
|
|
||||||
super.onStop();
|
|
||||||
final FlipperClient client = AndroidFlipperClient.getInstance(this);
|
|
||||||
client.unsubscribe();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,123 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018-present, Facebook, Inc.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the LICENSE
|
||||||
|
* file in the root directory of this source tree.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package com.facebook.flipper.android.diagnostics;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
|
import android.support.annotation.Nullable;
|
||||||
|
import android.support.v4.app.Fragment;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.ScrollView;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import com.facebook.flipper.android.AndroidFlipperClient;
|
||||||
|
import com.facebook.flipper.core.FlipperClient;
|
||||||
|
import com.facebook.flipper.core.FlipperStateUpdateListener;
|
||||||
|
import com.facebook.flipper.core.StateSummary;
|
||||||
|
import com.facebook.flipper.core.StateSummary.StateElement;
|
||||||
|
|
||||||
|
public class FlipperDiagnosticFragment extends Fragment implements FlipperStateUpdateListener {
|
||||||
|
|
||||||
|
private TextView mSummaryView;
|
||||||
|
private TextView mLogView;
|
||||||
|
private ScrollView mScrollView;
|
||||||
|
|
||||||
|
public static FlipperDiagnosticFragment newInstance() {
|
||||||
|
final FlipperDiagnosticFragment fragment = new FlipperDiagnosticFragment();
|
||||||
|
return fragment;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public View onCreateView(
|
||||||
|
@NonNull LayoutInflater inflater,
|
||||||
|
@Nullable ViewGroup container,
|
||||||
|
@Nullable Bundle savedInstanceState) {
|
||||||
|
|
||||||
|
final LinearLayout root = new LinearLayout(getContext());
|
||||||
|
root.setOrientation(LinearLayout.VERTICAL);
|
||||||
|
|
||||||
|
mSummaryView = new TextView(getContext());
|
||||||
|
mLogView = new TextView(getContext());
|
||||||
|
mScrollView = new ScrollView(getContext());
|
||||||
|
mScrollView.addView(mLogView);
|
||||||
|
root.addView(mSummaryView);
|
||||||
|
root.addView(mScrollView);
|
||||||
|
return root;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart() {
|
||||||
|
super.onStart();
|
||||||
|
final FlipperClient client = AndroidFlipperClient.getInstance(getContext());
|
||||||
|
client.subscribeForUpdates(this);
|
||||||
|
|
||||||
|
mSummaryView.setText(getSummary());
|
||||||
|
mLogView.setText(client.getState());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
mScrollView.fullScroll(View.FOCUS_DOWN);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUpdate() {
|
||||||
|
final String state = AndroidFlipperClient.getInstance(getContext()).getState();
|
||||||
|
final String summary = getSummary();
|
||||||
|
|
||||||
|
final Activity activity = getActivity();
|
||||||
|
if (activity != null) {
|
||||||
|
activity.runOnUiThread(
|
||||||
|
new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
mSummaryView.setText(summary);
|
||||||
|
mLogView.setText(state);
|
||||||
|
mScrollView.fullScroll(View.FOCUS_DOWN);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getSummary() {
|
||||||
|
final Context context = getContext();
|
||||||
|
final StateSummary summary = AndroidFlipperClient.getInstance(context).getStateSummary();
|
||||||
|
final StringBuilder stateText = new StringBuilder();
|
||||||
|
for (StateElement e : summary.mList) {
|
||||||
|
final String status;
|
||||||
|
switch (e.getState()) {
|
||||||
|
case IN_PROGRESS:
|
||||||
|
status = "⏳";
|
||||||
|
break;
|
||||||
|
case SUCCESS:
|
||||||
|
status = "✅";
|
||||||
|
break;
|
||||||
|
case FAILED:
|
||||||
|
status = "❌";
|
||||||
|
break;
|
||||||
|
case UNKNOWN:
|
||||||
|
default:
|
||||||
|
status = "❓";
|
||||||
|
}
|
||||||
|
stateText.append(status).append(e.getName()).append("\n");
|
||||||
|
}
|
||||||
|
return stateText.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onStop() {
|
||||||
|
super.onStop();
|
||||||
|
final FlipperClient client = AndroidFlipperClient.getInstance(getContext());
|
||||||
|
client.unsubscribe();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user