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_ |