| Index: chrome/browser/back_forward_menu_model.cc
|
| ===================================================================
|
| --- chrome/browser/back_forward_menu_model.cc (revision 18347)
|
| +++ chrome/browser/back_forward_menu_model.cc (working copy)
|
| @@ -7,6 +7,7 @@
|
| #include "chrome/browser/back_forward_menu_model.h"
|
|
|
| #include "app/l10n_util.h"
|
| +#include "app/resource_bundle.h"
|
| #include "chrome/browser/browser.h"
|
| #include "chrome/browser/metrics/user_metrics.h"
|
| #include "chrome/browser/tab_contents/navigation_controller.h"
|
| @@ -14,16 +15,24 @@
|
| #include "chrome/browser/tab_contents/tab_contents.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "grit/generated_resources.h"
|
| +#include "grit/theme_resources.h"
|
| #include "net/base/registry_controlled_domain.h"
|
|
|
| const int BackForwardMenuModel::kMaxHistoryItems = 12;
|
| const int BackForwardMenuModel::kMaxChapterStops = 5;
|
|
|
| +BackForwardMenuModel::BackForwardMenuModel(Browser* browser,
|
| + ModelType model_type)
|
| + : browser_(browser),
|
| + test_tab_contents_(NULL),
|
| + model_type_(model_type) {
|
| +}
|
| +
|
| int BackForwardMenuModel::GetHistoryItemCount() const {
|
| TabContents* contents = GetTabContents();
|
| int items = 0;
|
|
|
| - if (model_type_ == FORWARD_MENU_DELEGATE) {
|
| + if (model_type_ == FORWARD_MENU) {
|
| // Only count items from n+1 to end (if n is current entry)
|
| items = contents->controller().entry_count() -
|
| contents->controller().GetCurrentEntryIndex() - 1;
|
| @@ -47,7 +56,7 @@
|
|
|
| if (history_items == kMaxHistoryItems) {
|
| int chapter_id = current_entry;
|
| - if (model_type_ == FORWARD_MENU_DELEGATE) {
|
| + if (model_type_ == FORWARD_MENU) {
|
| chapter_id += history_items;
|
| } else {
|
| chapter_id -= history_items;
|
| @@ -55,7 +64,7 @@
|
|
|
| do {
|
| chapter_id = GetIndexOfNextChapterStop(chapter_id,
|
| - model_type_ == FORWARD_MENU_DELEGATE);
|
| + model_type_ == FORWARD_MENU);
|
| if (chapter_id != -1)
|
| ++chapter_stops;
|
| } while (chapter_id != -1 && chapter_stops < kMaxChapterStops);
|
| @@ -213,14 +222,17 @@
|
| const SkBitmap& BackForwardMenuModel::GetItemIcon(int menu_id) const {
|
| DCHECK(ItemHasIcon(menu_id));
|
|
|
| + if (menu_id == GetTotalItemCount()) {
|
| + return *ResourceBundle::GetSharedInstance().GetBitmapNamed(
|
| + IDR_HISTORY_FAVICON);
|
| + }
|
| +
|
| NavigationEntry* entry = GetNavigationEntry(menu_id);
|
| return entry->favicon().bitmap();
|
| }
|
|
|
| bool BackForwardMenuModel::ItemHasIcon(int menu_id) const {
|
| - // Using "id" not "id - 1" because the last item "Show Full History"
|
| - // doesn't have an icon.
|
| - return menu_id < GetTotalItemCount() && !IsSeparator(menu_id);
|
| + return menu_id - 1 < GetTotalItemCount() && !IsSeparator(menu_id);
|
| }
|
|
|
| bool BackForwardMenuModel::ItemHasCommand(int menu_id) const {
|
| @@ -245,7 +257,7 @@
|
|
|
| // Convert anything above the History items separator.
|
| if (menu_id <= history_items) {
|
| - if (model_type_ == FORWARD_MENU_DELEGATE) {
|
| + if (model_type_ == FORWARD_MENU) {
|
| // The |menu_id| is relative to our current position, so we need to add.
|
| menu_id += contents->controller().GetCurrentEntryIndex();
|
| } else {
|
| @@ -262,7 +274,7 @@
|
|
|
| // This menu item is a chapter stop located between the two separators.
|
| menu_id = FindChapterStop(history_items,
|
| - model_type_ == FORWARD_MENU_DELEGATE,
|
| + model_type_ == FORWARD_MENU,
|
| menu_id - history_items - 1 - 1);
|
|
|
| return menu_id;
|
| @@ -278,7 +290,7 @@
|
| DCHECK(!action.empty());
|
| DCHECK(index >= -1);
|
| std::wstring metric_string;
|
| - if (model_type_ == FORWARD_MENU_DELEGATE)
|
| + if (model_type_ == FORWARD_MENU)
|
| metric_string += L"ForwardMenu_";
|
| else
|
| metric_string += L"BackMenu_";
|
|
|