// Copyright (c) 2012 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.

// The BookmarkBarToolbarView is responsible for drawing the background of the
// BookmarkBar's toolbar in either of its two display modes - permanently
// attached (slimline with a stroke at the bottom edge) or New Tab Page style
// (padded with a round rect border and the New Tab Page theme behind).

#ifndef CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_TOOLBAR_VIEW_H_
#define CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_TOOLBAR_VIEW_H_

#import <Cocoa/Cocoa.h>

#import "chrome/browser/ui/cocoa/animatable_view.h"
#import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_state.h"

@class BookmarkBarView;

class ThemeService;

// An interface to allow mocking of a BookmarkBarController by the
// BookmarkBarToolbarView.
@protocol BookmarkBarToolbarViewController <BookmarkBarState>
// Displaying the bookmark toolbar background in bubble (floating) mode requires
// the size of the currently selected tab to properly calculate where the
// background image is joined.
- (int)currentTabContentsHeight;

// Current theme service.
- (ThemeService*)themeService;

@end

@interface BookmarkBarToolbarView : AnimatableView {
 @private
   // The controller which tells us how we should be drawing (as normal or as a
   // floating bar).
   IBOutlet id<BookmarkBarToolbarViewController> controller_;
}
@end

#endif  // CHROME_BROWSER_UI_COCOA_BOOKMARKS_BOOKMARK_BAR_TOOLBAR_VIEW_H_
