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

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

Issue 1814693003: Added support to blimp to be usable as a default browser (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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 c213d8592a53b13a5f03ba37fa02f201aef8d7df..b564001b8f4f5ce7d4c0c5513f7f0f72d6603fe3 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,17 +4,24 @@
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.view.ViewGroup;
+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 org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
-
import org.chromium.blimp.R;
import org.chromium.blimp.session.BlimpClientSession;
@@ -27,8 +34,11 @@ public class Toolbar extends LinearLayout implements UrlBar.UrlBarObserver,
View.OnClickListener {
private long mNativeToolbarPtr;
+ private Context mContext;
private UrlBar mUrlBar;
private ImageButton mReloadButton;
+ private ImageButton mMenuButton;
+ private ListPopupWindow mPopupMenu;
/**
* A URL to load when this object is initialized. This handles the case where there is a URL
@@ -43,6 +53,7 @@ public class Toolbar extends LinearLayout implements UrlBar.UrlBarObserver,
*/
public Toolbar(Context context, AttributeSet attrs) {
super(context, attrs);
+ mContext = context;
}
/**
@@ -106,6 +117,14 @@ public class Toolbar extends LinearLayout implements UrlBar.UrlBarObserver,
mReloadButton = (ImageButton) findViewById(R.id.toolbar_reload_btn);
mReloadButton.setOnClickListener(this);
+
+ mMenuButton = (ImageButton) findViewById(R.id.menu_button);
+ mMenuButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ showMenu(v);
+ }
+ });
}
// UrlBar.UrlBarObserver interface.
@@ -133,6 +152,54 @@ public class Toolbar extends LinearLayout implements UrlBar.UrlBarObserver,
nativeOnUrlTextEntered(mNativeToolbarPtr, text);
}
+ private void showMenu(View view) {
+ if (mPopupMenu == null) {
+ mPopupMenu = new ListPopupWindow(mContext);
+ mPopupMenu.setAdapter(new ArrayAdapter<String>(mContext, R.layout.toolbar_popup_item,
+ new String[] {mContext.getString(R.string.new_tab),
+ mContext.getString(R.string.open_in_chrome),
+ mContext.getString(R.string.send_feedback),
+ mContext.getString(R.string.show_debug_info)}) {
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ return super.getView(position, convertView, parent);
+ }
+
+ });
+ mPopupMenu.setAnchorView(view);
+ mPopupMenu.setWidth(
+ getResources().getDimensionPixelSize(R.dimen.toolbar_popup_item_width));
+ mPopupMenu.setVerticalOffset(-view.getHeight());
+ mPopupMenu.setModal(true);
+ mPopupMenu.setOnItemClickListener(new OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ // TODO(shaktisahu): Add functionality for other menu options.
+ if (position == 1) {
+ openInChrome();
+ }
+ mPopupMenu.dismiss();
+ }
+ });
+ }
+ mPopupMenu.show();
+ mPopupMenu.getListView().setDivider(null);
+ }
+
+ 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);
+ }
+ }
+
// Methods that are called by native via JNI.
@CalledByNative
private void onEngineSentUrl(String url) {

Powered by Google App Engine
This is Rietveld 408576698