| Index: chrome/browser/back_forward_menu_model.h
 | 
| ===================================================================
 | 
| --- chrome/browser/back_forward_menu_model.h	(revision 68008)
 | 
| +++ chrome/browser/back_forward_menu_model.h	(working copy)
 | 
| @@ -1,171 +0,0 @@
 | 
| -// Copyright (c) 2009 The Chromium Authors. All rights reserved.
 | 
| -// Use of this source code is governed by a BSD-style license that can be
 | 
| -// found in the LICENSE file.
 | 
| -
 | 
| -#ifndef CHROME_BROWSER_BACK_FORWARD_MENU_MODEL_H_
 | 
| -#define CHROME_BROWSER_BACK_FORWARD_MENU_MODEL_H_
 | 
| -#pragma once
 | 
| -
 | 
| -#include <string>
 | 
| -
 | 
| -#include "app/menus/menu_model.h"
 | 
| -#include "base/basictypes.h"
 | 
| -#include "base/gtest_prod_util.h"
 | 
| -#include "base/string16.h"
 | 
| -#include "webkit/glue/window_open_disposition.h"
 | 
| -
 | 
| -class Browser;
 | 
| -class SkBitmap;
 | 
| -class TabContents;
 | 
| -class NavigationEntry;
 | 
| -
 | 
| -///////////////////////////////////////////////////////////////////////////////
 | 
| -//
 | 
| -// BackForwardMenuModel
 | 
| -//
 | 
| -// Interface for the showing of the dropdown menu for the Back/Forward buttons.
 | 
| -// Actual implementations are platform-specific.
 | 
| -///////////////////////////////////////////////////////////////////////////////
 | 
| -class BackForwardMenuModel : public menus::MenuModel {
 | 
| - public:
 | 
| -  // These are IDs used to identify individual UI elements within the
 | 
| -  // browser window using View::GetViewByID.
 | 
| -  enum ModelType {
 | 
| -    FORWARD_MENU = 1,
 | 
| -    BACKWARD_MENU = 2
 | 
| -  };
 | 
| -
 | 
| -  BackForwardMenuModel(Browser* browser, ModelType model_type);
 | 
| -  virtual ~BackForwardMenuModel() { }
 | 
| -
 | 
| -  // MenuModel implementation.
 | 
| -  virtual bool HasIcons() const;
 | 
| -  // Returns how many items the menu should show, including history items,
 | 
| -  // chapter-stops, separators and the Show Full History link. This function
 | 
| -  // uses GetHistoryItemCount() and GetChapterStopCount() internally to figure
 | 
| -  // out the total number of items to show.
 | 
| -  virtual int GetItemCount() const;
 | 
| -  virtual ItemType GetTypeAt(int index) const;
 | 
| -  virtual int GetCommandIdAt(int index) const;
 | 
| -  virtual string16 GetLabelAt(int index) const;
 | 
| -  virtual bool IsLabelDynamicAt(int index) const;
 | 
| -  virtual bool GetAcceleratorAt(int index,
 | 
| -                                menus::Accelerator* accelerator) const;
 | 
| -  virtual bool IsItemCheckedAt(int index) const;
 | 
| -  virtual int GetGroupIdAt(int index) const;
 | 
| -  virtual bool GetIconAt(int index, SkBitmap* icon) const;
 | 
| -  virtual menus::ButtonMenuItemModel* GetButtonMenuItemAt(int index) const;
 | 
| -  virtual bool IsEnabledAt(int index) const;
 | 
| -  virtual MenuModel* GetSubmenuModelAt(int index) const;
 | 
| -  virtual void HighlightChangedTo(int index);
 | 
| -  virtual void ActivatedAt(int index);
 | 
| -  virtual void ActivatedAtWithDisposition(int index, int disposition);
 | 
| -  virtual void MenuWillShow();
 | 
| -
 | 
| -  // Is the item at |index| a separator?
 | 
| -  bool IsSeparator(int index) const;
 | 
| -
 | 
| - private:
 | 
| -  // Allows the unit test to use its own dummy tab contents.
 | 
| -  void set_test_tab_contents(TabContents* test_tab_contents) {
 | 
| -    test_tab_contents_ = test_tab_contents;
 | 
| -  }
 | 
| -
 | 
| -  // Returns how many history items the menu should show. For example, if the
 | 
| -  // navigation controller of the current tab has a current entry index of 5 and
 | 
| -  // forward_direction_ is false (we are the back button delegate) then this
 | 
| -  // function will return 5 (representing 0-4). If forward_direction_ is
 | 
| -  // true (we are the forward button delegate), then this function will return
 | 
| -  // the number of entries after 5. Note, though, that in either case it will
 | 
| -  // not report more than kMaxHistoryItems. The number returned also does not
 | 
| -  // include the separator line after the history items (nor the separator for
 | 
| -  // the "Show Full History" link).
 | 
| -  int GetHistoryItemCount() const;
 | 
| -
 | 
| -  // Returns how many chapter-stop items the menu should show. For the
 | 
| -  // definition of a chapter-stop, see GetIndexOfNextChapterStop(). The number
 | 
| -  // returned does not include the separator lines before and after the
 | 
| -  // chapter-stops.
 | 
| -  int GetChapterStopCount(int history_items) const;
 | 
| -
 | 
| -  // Finds the next chapter-stop in the NavigationEntryList starting from
 | 
| -  // the index specified in |start_from| and continuing in the direction
 | 
| -  // specified (|forward|) until either a chapter-stop is found or we reach the
 | 
| -  // end, in which case -1 is returned. If |start_from| is out of bounds, -1
 | 
| -  // will also be returned. A chapter-stop is defined as the last page the user
 | 
| -  // browsed to within the same domain. For example, if the user's homepage is
 | 
| -  // Google and she navigates to Google pages G1, G2 and G3 before heading over
 | 
| -  // to WikiPedia for pages W1 and W2 and then back to Google for pages G4 and
 | 
| -  // G5 then G3, W2 and G5 are considered chapter-stops. The return value from
 | 
| -  // this function is an index into the NavigationEntryList vector.
 | 
| -  int GetIndexOfNextChapterStop(int start_from, bool forward) const;
 | 
| -
 | 
| -  // Finds a given chapter-stop starting at the currently active entry in the
 | 
| -  // NavigationEntryList vector advancing first forward or backward by |offset|
 | 
| -  // (depending on the direction specified in parameter |forward|). It also
 | 
| -  // allows you to skip chapter-stops by specifying a positive value for |skip|.
 | 
| -  // Example: FindChapterStop(5, false, 3) starts with the currently active
 | 
| -  // index, subtracts 5 from it and then finds the fourth chapter-stop before
 | 
| -  // that index (skipping the first 3 it finds).
 | 
| -  // Example: FindChapterStop(0, true, 0) is functionally equivalent to
 | 
| -  // calling GetIndexOfNextChapterStop(GetCurrentEntryIndex(), true).
 | 
| -  //
 | 
| -  // NOTE: Both |offset| and |skip| must be non-negative. The return value from
 | 
| -  // this function is an index into the NavigationEntryList vector. If |offset|
 | 
| -  // is out of bounds or if we skip too far (run out of chapter-stops) this
 | 
| -  // function returns -1.
 | 
| -  int FindChapterStop(int offset, bool forward, int skip) const;
 | 
| -
 | 
| -  // How many items (max) to show in the back/forward history menu dropdown.
 | 
| -  static const int kMaxHistoryItems;
 | 
| -
 | 
| -  // How many chapter-stops (max) to show in the back/forward dropdown list.
 | 
| -  static const int kMaxChapterStops;
 | 
| -
 | 
| -  // Takes a menu item index as passed in through one of the menu delegate
 | 
| -  // functions and converts it into an index into the NavigationEntryList
 | 
| -  // vector. |index| can point to a separator, or the
 | 
| -  // "Show Full History" link in which case this function returns -1.
 | 
| -  int MenuIndexToNavEntryIndex(int index) const;
 | 
| -
 | 
| -  // Does the item have a command associated with it?
 | 
| -  bool ItemHasCommand(int index) const;
 | 
| -
 | 
| -  // Returns true if there is an icon for this menu item.
 | 
| -  bool ItemHasIcon(int index) const;
 | 
| -
 | 
| -  // Allow the unit test to use the "Show Full History" label.
 | 
| -  string16 GetShowFullHistoryLabel() const;
 | 
| -
 | 
| -  // Looks up a NavigationEntry by menu id.
 | 
| -  NavigationEntry* GetNavigationEntry(int index) const;
 | 
| -
 | 
| -  // Retrieves the TabContents pointer to use, which is either the one that
 | 
| -  // the unit test sets (using SetTabContentsForUnitTest) or the one from
 | 
| -  // the browser window.
 | 
| -  TabContents* GetTabContents() const;
 | 
| -
 | 
| -  // Build a string version of a user action on this menu, used as an
 | 
| -  // identifier for logging user behavior.
 | 
| -  // E.g. BuildActionName("Click", 2) returns "BackMenu_Click2".
 | 
| -  // An index of -1 means no index.
 | 
| -  std::string BuildActionName(const std::string& name, int index) const;
 | 
| -
 | 
| -  Browser* browser_;
 | 
| -
 | 
| -  // The unit tests will provide their own TabContents to use.
 | 
| -  TabContents* test_tab_contents_;
 | 
| -
 | 
| -  // Represents whether this is the delegate for the forward button or the
 | 
| -  // back button.
 | 
| -  ModelType model_type_;
 | 
| -
 | 
| -  friend class BackFwdMenuModelTest;
 | 
| -  FRIEND_TEST_ALL_PREFIXES(BackFwdMenuModelTest, BasicCase);
 | 
| -  FRIEND_TEST_ALL_PREFIXES(BackFwdMenuModelTest, MaxItemsTest);
 | 
| -  FRIEND_TEST_ALL_PREFIXES(BackFwdMenuModelTest, ChapterStops);
 | 
| -
 | 
| -  DISALLOW_COPY_AND_ASSIGN(BackForwardMenuModel);
 | 
| -};
 | 
| -
 | 
| -#endif  // CHROME_BROWSER_BACK_FORWARD_MENU_MODEL_H_
 | 
| 
 |