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

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

Issue 1962393004: Added a debug info UI for Blimp (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added empty implementation for linux client 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/toolbar/Toolbar.java
diff --git a/blimp/client/app/android/java/src/org/chromium/blimp/toolbar/Toolbar.java b/blimp/client/app/android/java/src/org/chromium/blimp/toolbar/Toolbar.java
index 1cb60f0aa3ed62f476bcafd39af43ed545cb5db9..93dfaf0365df04a9d3962fa783d03b3b4cc71895 100644
--- a/blimp/client/app/android/java/src/org/chromium/blimp/toolbar/Toolbar.java
+++ b/blimp/client/app/android/java/src/org/chromium/blimp/toolbar/Toolbar.java
@@ -4,51 +4,48 @@
package org.chromium.blimp.toolbar;
-import android.content.ActivityNotFoundException;
import android.content.Context;
-import android.content.Intent;
import android.graphics.Bitmap;
-import android.net.Uri;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.LinearLayout;
-import android.widget.ListPopupWindow;
import android.widget.ProgressBar;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.blimp.R;
import org.chromium.blimp.session.BlimpClientSession;
-import org.chromium.blimp.session.EngineInfo;
-import org.chromium.blimp.settings.AboutBlimpPreferences;
-import org.chromium.blimp.settings.Preferences;
/**
* A {@link View} that visually represents the Blimp toolbar, which lets users issue navigation
* commands and displays relevant navigation UI.
*/
@JNINamespace("blimp::client")
-public class Toolbar extends LinearLayout implements UrlBar.UrlBarObserver, View.OnClickListener,
- BlimpClientSession.ConnectionObserver {
+public class Toolbar extends LinearLayout implements UrlBar.UrlBarObserver, View.OnClickListener {
+ /**
+ * Delegate for the Toolbar.
+ */
+ public interface ToolbarDelegate {
+ /**
+ * Resets the metrics. Used for displaying per navigation metrics.
+ */
+ public void resetDebugStats();
+ }
+
private static final String TAG = "Toolbar";
- private static final int ID_OPEN_IN_CHROME = 0;
- private static final int ID_VERSION_INFO = 1;
private long mNativeToolbarPtr;
private Context mContext;
private UrlBar mUrlBar;
+ private ToolbarMenu mToolbarMenu;
private ImageButton mReloadButton;
private ImageButton mMenuButton;
- private ListPopupWindow mPopupMenu;
private ProgressBar mProgressBar;
-
- private EngineInfo mEngineInfo;
+ private BlimpClientSession mBlimpClientSession;
+ private ToolbarDelegate mDelegate;
/**
* A URL to load when this object is initialized. This handles the case where there is a URL
@@ -67,16 +64,30 @@ public class Toolbar extends LinearLayout implements UrlBar.UrlBarObserver, View
}
/**
+ * @return the mToolbarMenu
+ */
+ public ToolbarMenu getToolbarMenu() {
+ return mToolbarMenu;
+ }
+
+ /**
* To be called when the native library is loaded so that this class can initialize its native
* components.
* @param blimpClientSession The {@link BlimpClientSession} that contains the content-lite
* features required by the native components of the Toolbar.
+ * delegate The delegate for the Toolbar.
*/
- public void initialize(BlimpClientSession blimpClientSession) {
+ public void initialize(BlimpClientSession blimpClientSession, ToolbarDelegate delegate) {
assert mNativeToolbarPtr == 0;
- mNativeToolbarPtr = nativeInit(blimpClientSession);
+ mDelegate = delegate;
+
+ mBlimpClientSession = blimpClientSession;
+ mNativeToolbarPtr = nativeInit(mBlimpClientSession);
sendUrlTextInternal(mUrlToLoad);
+
+ mToolbarMenu = new ToolbarMenu(mContext, this);
+ mBlimpClientSession.addObserver(mToolbarMenu);
}
/**
@@ -84,6 +95,7 @@ public class Toolbar extends LinearLayout implements UrlBar.UrlBarObserver, View
* this.
*/
public void destroy() {
+ mBlimpClientSession.removeObserver(mToolbarMenu);
if (mNativeToolbarPtr != 0) {
nativeDestroy(mNativeToolbarPtr);
mNativeToolbarPtr = 0;
@@ -97,15 +109,25 @@ public class Toolbar extends LinearLayout implements UrlBar.UrlBarObserver, View
*/
public void loadUrl(String text) {
mUrlBar.setText(text);
+ mDelegate.resetDebugStats();
sendUrlTextInternal(text);
}
/**
+ * Returns the URL from the URL bar.
+ * @return Current URL
+ */
+ public String getUrl() {
+ return mUrlBar.getText().toString();
+ }
+
+ /**
* To be called when the user triggers a back navigation action.
* @return Whether or not the back event was consumed.
*/
public boolean onBackPressed() {
if (mNativeToolbarPtr == 0) return false;
+ mDelegate.resetDebugStats();
return nativeOnBackPressed(mNativeToolbarPtr);
}
@@ -114,6 +136,7 @@ public class Toolbar extends LinearLayout implements UrlBar.UrlBarObserver, View
*/
public void onForwardPressed() {
if (mNativeToolbarPtr == 0) return;
+ mDelegate.resetDebugStats();
nativeOnForwardPressed(mNativeToolbarPtr);
}
@@ -132,7 +155,7 @@ public class Toolbar extends LinearLayout implements UrlBar.UrlBarObserver, View
mMenuButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- showMenu(v);
+ mToolbarMenu.showMenu(v);
}
});
@@ -178,88 +201,11 @@ public class Toolbar extends LinearLayout implements UrlBar.UrlBarObserver, View
}
}
- private void showMenu(View anchorView) {
- if (mPopupMenu == null) {
- initializeMenu(anchorView);
- }
- mPopupMenu.show();
- mPopupMenu.getListView().setDivider(null);
- }
-
- /**
- * Creates and initializes the app menu anchored to the specified view.
- * @param anchorView The anchor of the {@link ListPopupWindow}
- */
- private void initializeMenu(View anchorView) {
- mPopupMenu = new ListPopupWindow(mContext);
- mPopupMenu.setAdapter(new ArrayAdapter<String>(mContext, R.layout.toolbar_popup_item,
- new String[] {mContext.getString(R.string.open_in_chrome),
- mContext.getString(R.string.version_info)}));
- mPopupMenu.setAnchorView(anchorView);
- mPopupMenu.setWidth(getResources().getDimensionPixelSize(R.dimen.toolbar_popup_item_width));
- mPopupMenu.setVerticalOffset(-anchorView.getHeight());
- mPopupMenu.setModal(true);
- mPopupMenu.setOnItemClickListener(new OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- if (position == ID_OPEN_IN_CHROME) {
- openInChrome();
- } else if (position == ID_VERSION_INFO) {
- showVersionInfo();
- }
- mPopupMenu.dismiss();
- }
- });
- }
-
- private void openInChrome() {
- Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(mUrlBar.getText().toString()));
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.setPackage("com.android.chrome");
- try {
- mContext.startActivity(intent);
- } catch (ActivityNotFoundException e) {
- // Chrome is probably not installed, so try with the default browser
- intent.setPackage(null);
- mContext.startActivity(intent);
- }
- }
-
- private void showVersionInfo() {
- Intent intent = new Intent();
- intent.setClass(mContext, Preferences.class);
- if (mEngineInfo != null) {
- intent.putExtra(AboutBlimpPreferences.EXTRA_ENGINE_IP, mEngineInfo.ipAddress);
- intent.putExtra(AboutBlimpPreferences.EXTRA_ENGINE_VERSION, mEngineInfo.engineVersion);
- }
- mContext.startActivity(intent);
- }
-
- // BlimpClientSession.ConnectionObserver interface.
- @Override
- public void onAssignmentReceived(
- int result, int suggestedMessageResourceId, EngineInfo engineInfo) {
- mEngineInfo = engineInfo;
- }
-
- @Override
- public void onConnected() {
- if (mEngineInfo == null) return;
-
- mEngineInfo.setConnected(true);
- }
-
- @Override
- public void onDisconnected(String reason) {
- if (mEngineInfo == null) return;
-
- mEngineInfo.setConnected(false);
- }
-
// Methods that are called by native via JNI.
@CalledByNative
private void onEngineSentUrl(String url) {
if (url != null) mUrlBar.setText(url);
+ mDelegate.resetDebugStats();
}
@CalledByNative

Powered by Google App Engine
This is Rietveld 408576698