Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4222)

Unified Diff: blimp/client/app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java

Issue 1962393004: Added a debug info UI for Blimp (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added statistics object to BlimpEngineSession Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: blimp/client/app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java
diff --git a/blimp/client/app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java b/blimp/client/app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java
index cd830b17b1aba6d5e200fea9d0bc964f633cfaa1..8742fd4f3d9a599df0fa9d98ca0ea17a60f3f85e 100644
--- a/blimp/client/app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java
+++ b/blimp/client/app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java
@@ -7,7 +7,10 @@ package org.chromium.blimp;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
+import android.os.Handler;
import android.text.TextUtils;
+import android.view.View;
+import android.widget.TextView;
import org.chromium.base.Log;
import org.chromium.base.annotations.SuppressFBWarnings;
@@ -21,6 +24,7 @@ import org.chromium.blimp.session.BlimpClientSession;
import org.chromium.blimp.session.EngineInfo;
import org.chromium.blimp.session.TabControlFeature;
import org.chromium.blimp.toolbar.Toolbar;
+import org.chromium.blimp.toolbar.ToolbarMenu;
import org.chromium.ui.widget.Toast;
/**
@@ -29,10 +33,15 @@ import org.chromium.ui.widget.Toast;
*/
public class BlimpRendererActivity
extends Activity implements BlimpLibraryLoader.Callback, TokenSource.Callback,
- BlimpClientSession.ConnectionObserver {
+ BlimpClientSession.ConnectionObserver,
+ ToolbarMenu.ToolbarMenuDelegate, Toolbar.ToolbarDelegate {
private static final int ACCOUNT_CHOOSER_INTENT_REQUEST_CODE = 100;
private static final String TAG = "BlimpRendererActivity";
+ // Refresh interval for the debug view in milliseconds.
+ private static final int DEBUG_VIEW_REFRESH_INTERVAL = 1000;
+ private static final int BYTES_PER_KILO = 1024;
+
/** Provides user authentication tokens that can be used to query for engine assignments. This
* can potentially query GoogleAuthUtil for an OAuth2 authentication token with userinfo.email
* privileges for a chosen Android account. */
@@ -44,8 +53,19 @@ public class BlimpRendererActivity
private TabControlFeature mTabControlFeature;
private WebInputBox mWebInputBox;
+ private Handler mHandler = new Handler();
+
private boolean mFirstUrlLoadDone = false;
+ // Flag to record the base value of the metrics when the debug view is turned on.
+ private boolean mStatsBaseRecorded = false;
+ private int mSentBase;
+ private int mReceivedBase;
+ private int mCommitsBase;
+ private int mSent;
+ private int mReceived;
+ private int mCommits;
+
@Override
@SuppressFBWarnings("DM_EXIT") // FindBugs doesn't like System.exit().
protected void onCreate(Bundle savedInstanceState) {
@@ -83,9 +103,6 @@ public class BlimpRendererActivity
}
if (mToolbar != null) {
- if (mBlimpClientSession != null) {
- mBlimpClientSession.removeObserver(mToolbar);
- }
mToolbar.destroy();
mToolbar = null;
}
@@ -153,8 +170,7 @@ public class BlimpRendererActivity
mBlimpView.initializeRenderer(mBlimpClientSession);
mToolbar = (Toolbar) findViewById(R.id.toolbar);
- mToolbar.initialize(mBlimpClientSession);
- mBlimpClientSession.addObserver(mToolbar);
+ mToolbar.initialize(mBlimpClientSession, this);
mWebInputBox = (WebInputBox) findViewById(R.id.editText);
mWebInputBox.initialize(mBlimpClientSession);
@@ -164,6 +180,28 @@ public class BlimpRendererActivity
handleUrlFromIntent(getIntent());
}
+ // ToolbarMenu.ToolbarMenuDelegate implementation.
+ @Override
+ public void showDebugView(boolean show) {
+ View debugView = findViewById(R.id.debug_stats);
+ debugView.setVisibility(show ? View.VISIBLE : View.INVISIBLE);
+ if (show) {
+ Runnable debugStatsRunnable = new Runnable() {
+ @Override
+ public void run() {
+ if (mToolbar.getToolbarMenu().isDebugInfoEnabled()) {
+ int[] metrics = mBlimpClientSession.getDebugStats();
+ updateDebugStats(metrics);
+ mHandler.postDelayed(this, DEBUG_VIEW_REFRESH_INTERVAL);
+ }
+ }
+ };
+ debugStatsRunnable.run();
+ } else {
+ mStatsBaseRecorded = false;
+ }
+ }
+
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
@@ -233,6 +271,41 @@ public class BlimpRendererActivity
Toast.makeText(this, R.string.network_connected, Toast.LENGTH_SHORT).show();
}
+ /**
+ * Displays debug metrics upto one decimal place.
Kevin M 2016/05/24 22:56:39 up to
+ */
+ @Override
+ public void updateDebugStatsUI(int received, int sent, int commits) {
+ TextView tv = (TextView) findViewById(R.id.bytes_received_client);
+ tv.setText(String.format("%.1f", (float) received / BYTES_PER_KILO));
+ tv = (TextView) findViewById(R.id.bytes_sent_client);
+ tv.setText(String.format("%.1f", (float) sent / BYTES_PER_KILO));
+ tv = (TextView) findViewById(R.id.commit_count);
+ tv.setText(String.valueOf(commits));
+ }
+
+ private void updateDebugStats(int[] metrics) {
+ assert metrics.length == 3;
+ mReceived = metrics[0];
+ mSent = metrics[1];
+ mCommits = metrics[2];
+ if (!mStatsBaseRecorded) {
+ mReceivedBase = mReceived;
+ mSentBase = mSent;
+ mCommitsBase = mCommits;
+ mStatsBaseRecorded = true;
+ }
+ updateDebugStatsUI(mReceived - mReceivedBase, mSent - mSentBase, mCommits - mCommitsBase);
+ }
+
+ // Toolbar.ToolbarDelegate interface.
+ @Override
+ public void resetDebugStats() {
+ mReceivedBase = mReceived;
+ mSentBase = mSent;
+ mCommitsBase = mCommits;
+ }
+
@Override
public void onDisconnected(String reason) {
Toast.makeText(this,

Powered by Google App Engine
This is Rietveld 408576698