@Override
  public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    AdapterView.AdapterContextMenuInfo i = (AdapterView.AdapterContextMenuInfo) menuInfo;

    MenuInflater inflater = getMenuInflater();
    if (mMostVisited) {
      inflater.inflate(R.menu.historycontext, menu);
    } else {
      inflater.inflate(R.menu.bookmarkscontext, menu);
    }

    if (0 == i.position && !mMostVisited) {
      menu.setGroupVisible(R.id.CONTEXT_MENU, false);
      if (mAddHeader == null) {
        mAddHeader = new AddNewBookmark(BrowserBookmarksPage.this);
      } else if (mAddHeader.getParent() != null) {
        ((ViewGroup) mAddHeader.getParent()).removeView(mAddHeader);
      }
      mAddHeader.setUrl(getIntent().getStringExtra("url"));
      menu.setHeaderView(mAddHeader);
      return;
    }
    if (mMostVisited) {
      if ((mViewMode == BookmarkViewMode.LIST && ((HistoryItem) i.targetView).isBookmark())
          || mBookmarksAdapter.getIsBookmark(i.position)) {
        MenuItem item = menu.findItem(R.id.save_to_bookmarks_menu_id);
        item.setTitle(R.string.remove_from_bookmarks);
      }
    } else {
      // The historycontext menu has no ADD_MENU group.
      menu.setGroupVisible(R.id.ADD_MENU, false);
    }
    if (mDisableNewWindow) {
      menu.findItem(R.id.new_window_context_menu_id).setVisible(false);
    }
    if (mContextHeader == null) {
      mContextHeader = new BookmarkItem(BrowserBookmarksPage.this);
    } else if (mContextHeader.getParent() != null) {
      ((ViewGroup) mContextHeader.getParent()).removeView(mContextHeader);
    }
    if (mViewMode == BookmarkViewMode.GRID) {
      mBookmarksAdapter.populateBookmarkItem(mContextHeader, i.position);
    } else {
      BookmarkItem b = (BookmarkItem) i.targetView;
      b.copyTo(mContextHeader);
    }
    menu.setHeaderView(mContextHeader);
  }