Fixes to Edge Navigation for missing bitmaps

- Show prominent color from favicon when bitmap capture of a
  navigation entry is missing
- More active purging of bitmaps on navigation

Change-Id: I2c137385bd1b1179dbbb16c0c3e933783d499c34
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index f1444c8..ebeeadf 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -608,13 +608,16 @@
             mTabHistoryUpdateObservable.set(index);
             final int maxIdx = view.copyBackForwardList().getSize();
             final WebView wv = view;
+            final int currIdx = index;
+            final int currentTabIdx = (int) mWebViewController.getTabControl().
+                    getCurrentTab().getId();
             view.getSnapshotIds(new ValueCallback <List<Integer>>() {
                 @Override
                 public void onReceiveValue(List<Integer> ids) {
-                    int currentTabIdx = mWebViewController.getTabControl().getCurrentPosition();
                     for (Integer id : ids) {
-                        if (getTabIdxFromCaptureIdx(id) == currentTabIdx &&
-                                getNavIdxFromCaptureIdx(id) >= maxIdx) {
+                        int tabIdx = getTabIdxFromCaptureIdx(id);
+                        int navIdx = getNavIdxFromCaptureIdx(id);
+                        if (tabIdx == currentTabIdx && (navIdx >= maxIdx || navIdx == currIdx)) {
                             wv.deleteSnapshot(id);
                         }
                     }
@@ -1363,13 +1366,13 @@
             final WebView webView = mMainView;
             setWebView(null);
             if (!mWebViewDestroyedByMemoryMonitor && !BaseUi.isUiLowPowerMode()) {
+                final int destroyedTabIdx = (int) mId;
                 // Tabs can be reused with new instance of WebView so delete the snapshots
                 webView.getSnapshotIds(new ValueCallback<List<Integer>>() {
                     @Override
                     public void onReceiveValue(List<Integer> ids) {
-                        int currentTabIdx = mWebViewController.getTabControl().getCurrentPosition();
                         for (Integer id : ids) {
-                            if (getTabIdxFromCaptureIdx(id) == currentTabIdx) {
+                            if (getTabIdxFromCaptureIdx(id) == destroyedTabIdx) {
                                 webView.deleteSnapshot(id);
                             }
                         }