Adds a cancel button to ShortcutActivity dialog

 Bug: 3167402
 Adds a cancel button to the ShortcutActivity when it is being
 shown as a dialog (when large)

Change-Id: I6e47db8770cd18f69d534c361ff8fc90128e8dad
diff --git a/src/com/android/browser/BreadCrumbView.java b/src/com/android/browser/BreadCrumbView.java
index e4940e9..643bfc7 100644
--- a/src/com/android/browser/BreadCrumbView.java
+++ b/src/com/android/browser/BreadCrumbView.java
@@ -254,7 +254,7 @@
         }
     }
 
-    private Crumb getTopCrumb() {
+    Crumb getTopCrumb() {
         Crumb crumb = null;
         if (mCrumbs.size() > 0) {
             crumb = mCrumbs.get(mCrumbs.size() - 1);
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index 1410ce8..ccacee8 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -16,6 +16,8 @@
 
 package com.android.browser;
 
+import com.android.browser.BreadCrumbView.Crumb;
+
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Fragment;
@@ -698,14 +700,18 @@
     }
 
     public boolean onBackPressed() {
-        if (mCrumbs != null &&
-                mCrumbs.size() > 0) {
+        if (canGoBack()) {
             mCrumbs.popView();
             return true;
         }
         return false;
     }
 
+    private boolean canGoBack() {
+        Crumb c = mCrumbs.getTopCrumb();
+        return c != null && c.canGoBack;
+    }
+
     public void setCallbackListener(BookmarksPageCallbacks callbackListener) {
         mCallbacks = callbackListener;
     }
diff --git a/src/com/android/browser/ShortcutActivity.java b/src/com/android/browser/ShortcutActivity.java
index 786c6e1..33e192a 100644
--- a/src/com/android/browser/ShortcutActivity.java
+++ b/src/com/android/browser/ShortcutActivity.java
@@ -21,9 +21,11 @@
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Bundle;
+import android.view.View;
+import android.view.View.OnClickListener;
 
 public class ShortcutActivity extends Activity
-    implements BookmarksPageCallbacks {
+    implements BookmarksPageCallbacks, OnClickListener {
 
     private BrowserBookmarksPage mBookmarks;
 
@@ -32,14 +34,16 @@
         super.onCreate(savedInstanceState);
         // TODO: Is this needed?
         setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
-        mBookmarks = BrowserBookmarksPage.newInstance(this, null, null);
+        setContentView(R.layout.pick_bookmark);
+        mBookmarks = (BrowserBookmarksPage) getFragmentManager()
+                .findFragmentById(R.id.bookmarks);
         mBookmarks.setEnableContextMenu(false);
         mBookmarks.setBreadCrumbMaxVisible(2);
         mBookmarks.setBreadCrumbUseBackButton(true);
-        getFragmentManager()
-                .openTransaction()
-                .add(android.R.id.content, mBookmarks)
-                .commit();
+        View cancel = findViewById(R.id.cancel);
+        if (cancel != null) {
+            cancel.setOnClickListener(this);
+        }
     }
 
     // BookmarksPageCallbacks
@@ -70,4 +74,13 @@
     @Override
     public void onFolderChanged(int level, Uri uri) {
     }
+
+    @Override
+    public void onClick(View v) {
+        switch (v.getId()) {
+        case R.id.cancel:
+            finish();
+            break;
+        }
+    }
 }