// Copyright (c) 2011 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_CHROMEOS_FRAME_DOM_BROWSER_VIEW_H_
#define CHROME_BROWSER_CHROMEOS_FRAME_DOM_BROWSER_VIEW_H_
#pragma once

#include <vector>

#include "base/compiler_specific.h"
#include "chrome/browser/chromeos/frame/browser_view.h"

namespace chromeos {

// DOMBrowserView overides a large number of methods that are defined in
// chromeos::BrowserView and BrowserView to resolve issues with UX components
// like the Tabstrip and Location Bar being removed. It also overides the
// construction functions required to create these UX elements.
class DOMBrowserView : public chromeos::BrowserView {
 public:
  explicit DOMBrowserView(Browser* browser);
  virtual ~DOMBrowserView();

  // Create a DOMBrowserView for a DOMBrowser.
  static BrowserWindow* CreateDOMWindow(Browser* browser);

  // BrowserView overrides
  virtual void WindowMoveOrResizeStarted() OVERRIDE;
  virtual gfx::Rect GetToolbarBounds() const OVERRIDE;
  virtual int GetTabStripHeight() const OVERRIDE;
  virtual bool IsTabStripVisible() const OVERRIDE;
  virtual bool AcceleratorPressed(const views::Accelerator& accelerator)
      OVERRIDE;
  virtual void SetStarredState(bool is_starred) OVERRIDE;
  virtual LocationBar* GetLocationBar() const OVERRIDE;
  virtual void SetFocusToLocationBar(bool select_all) OVERRIDE;
  virtual void UpdateReloadStopState(bool is_loading, bool force) OVERRIDE;
  virtual void UpdateToolbar(TabContentsWrapper* contents,
                             bool should_restore_state) OVERRIDE;
  virtual void FocusToolbar() OVERRIDE;
  virtual void FocusAppMenu() OVERRIDE;
  virtual void ShowBookmarkBubble(const GURL& url, bool already_bookmarked)
      OVERRIDE;
  virtual void ShowAppMenu() OVERRIDE;
  virtual LocationBarView* GetLocationBarView() const OVERRIDE;
  virtual ToolbarView* GetToolbarView() const OVERRIDE;
  virtual bool ShouldShowOffTheRecordAvatar() const OVERRIDE;
  virtual bool GetAcceleratorForCommandId(int command_id,
                                          ui::Accelerator* accelerator)
      OVERRIDE;

  // BrowserWindow overrides
  bool IsToolbarVisible() const OVERRIDE;

 protected:
  // BrowserView overrides
  virtual void GetAccessiblePanes(
      std::vector<AccessiblePaneView*>* panes) OVERRIDE;
  virtual void PaintChildren(gfx::Canvas* canvas) OVERRIDE;
  virtual void InitTabStrip(TabStripModel* model) OVERRIDE;
  virtual views::LayoutManager* CreateLayoutManager() const OVERRIDE;
  virtual ToolbarView* CreateToolbar() const OVERRIDE;
  virtual void LoadingAnimationCallback() OVERRIDE;

 private:
  DISALLOW_COPY_AND_ASSIGN(DOMBrowserView);
};

}  // namespace chromeos

#endif  // CHROME_BROWSER_CHROMEOS_FRAME_DOM_BROWSER_VIEW_H_