blob: 415dc99f67d48317a29b59afc5331fa33c7183cf [file] [log] [blame]
// Copyright 2018 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_UI_VIEWS_FRAME_TOOLBAR_BUTTON_PROVIDER_H_
#define CHROME_BROWSER_UI_VIEWS_FRAME_TOOLBAR_BUTTON_PROVIDER_H_
#include "chrome/browser/ui/page_action/page_action_icon_type.h"
class AppMenuButton;
class BrowserActionsContainer;
class PageActionIconView;
class ToolbarActionView;
namespace gfx {
class Rect;
}
namespace views {
class AccessiblePaneView;
class View;
}
// An interface implemented by a view contains and provides access to toolbar
// buttons in a BrowserView.
class ToolbarButtonProvider {
public:
// Gets the browser actions container.
// TODO(pbos): Transition callers off of this function.
virtual BrowserActionsContainer* GetBrowserActionsContainer() = 0;
// Gets the associated ToolbarActionView for this id.
virtual ToolbarActionView* GetToolbarActionViewForId(
const std::string& id) = 0;
// Gets the default view to use as an anchor for extension dialogs if the
// ToolbarActionView is not visible or available.
virtual views::View* GetDefaultExtensionDialogAnchorView() = 0;
// Gets the specified page action icon.
virtual PageActionIconView* GetPageActionIconView(
PageActionIconType type) = 0;
// Gets the app menu button.
virtual AppMenuButton* GetAppMenuButton() = 0;
// Gets the area available for the find bar in widget space where
// |contents_height| is the amount of vertical space available, otherwise if
// there is no appropriate anchor point returns empty gfx::Rect.
virtual gfx::Rect GetFindBarBoundingBox(int contents_height) const = 0;
// Gives the toolbar focus.
virtual void FocusToolbar() = 0;
// Returns the toolbar as an AccessiblePaneView.
virtual views::AccessiblePaneView* GetAsAccessiblePaneView() = 0;
// Returns the appropriate anchor view for the page action icon.
virtual views::View* GetAnchorView(PageActionIconType type) = 0;
// See comment in browser_window.h for more info.
virtual void ZoomChangedForActiveTab(bool can_show_bubble) = 0;
// TODO(calamity): Move other buttons and button actions into here.
protected:
virtual ~ToolbarButtonProvider() {}
};
#endif // CHROME_BROWSER_UI_VIEWS_FRAME_TOOLBAR_BUTTON_PROVIDER_H_