// 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. #ifndef CHROME_BROWSER_CHROMEOS_FRAME_PANEL_BROWSER_VIEW_H_ #define CHROME_BROWSER_CHROMEOS_FRAME_PANEL_BROWSER_VIEW_H_ #pragma once #include "base/memory/scoped_ptr.h" #include "chrome/browser/chromeos/frame/panel_controller.h" #include "chrome/browser/ui/views/frame/browser_view.h" #include "ui/base/x/x11_util.h" class Browser; namespace chromeos { class PanelController; // A browser view that implements Panel specific behavior. // NOTE: This inherits from ::BrowserView in chrome/browser/ui/views/frame/, // not chromeos::BrowserView in chrome/browser/chromeos/frame/. class PanelBrowserView : public ::BrowserView, public PanelController::Delegate { public: explicit PanelBrowserView(Browser* browser); virtual ~PanelBrowserView(); // BrowserView overrides. virtual void Show() OVERRIDE; virtual void ShowInactive() OVERRIDE; virtual void SetBounds(const gfx::Rect& bounds) OVERRIDE; virtual void Close() OVERRIDE; virtual void FlashFrame(bool flash) OVERRIDE; virtual void UpdateTitleBar() OVERRIDE; virtual bool IsPanel() const OVERRIDE; virtual WindowOpenDisposition GetDispositionForPopupBounds( const gfx::Rect& bounds) OVERRIDE; virtual bool GetSavedWindowPlacement( gfx::Rect* bounds, ui::WindowShowState* show_state) const OVERRIDE; // views::Widget::Observer overrides. virtual void OnWidgetActivationChanged(views::Widget* widget, bool active) OVERRIDE; // BrowserView : TabStripModelObserver overrides. virtual void TabChangedAt(TabContentsWrapper* contents, int index, TabChangeType change_type) OVERRIDE; // PanelController::Delegate overrides. virtual string16 GetPanelTitle() OVERRIDE; virtual SkBitmap GetPanelIcon() OVERRIDE; virtual bool CanClosePanel() OVERRIDE; virtual void ClosePanel() OVERRIDE; virtual void ActivatePanel() OVERRIDE; // Specific to PanelBrowserView. void SetCreatorView(PanelBrowserView* creator); private: // Enforces the min, max, and default bounds. void LimitBounds(gfx::Rect* bounds) const; void InitPanelController(bool is_active); // Controls interactions with the window manager for popup panels. scoped_ptr panel_controller_; // X id for the content window of the panel that created this // panel. This tells ChromeOS that it should be created next to the // content window of this panel. XID creator_xid_; DISALLOW_COPY_AND_ASSIGN(PanelBrowserView); }; } // namespace chromeos #endif // CHROME_BROWSER_CHROMEOS_FRAME_PANEL_BROWSER_VIEW_H_