Add new certificateProvider extension API.
[chromium-blink-merge.git] / chrome / browser / ui / views / panels / panel_frame_view.h
blob3fc00d3448eed6b6587c92a61ce181b020481145
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_UI_VIEWS_PANELS_PANEL_FRAME_VIEW_H_
6 #define CHROME_BROWSER_UI_VIEWS_PANELS_PANEL_FRAME_VIEW_H_
8 #include "chrome/browser/ui/panels/panel_constants.h"
9 #include "chrome/browser/ui/views/tab_icon_view_model.h"
10 #include "ui/views/controls/button/button.h"
11 #include "ui/views/window/non_client_view.h"
13 class PanelView;
14 class TabIconView;
16 namespace views {
17 class ImageButton;
18 class Label;
21 class PanelFrameView : public views::NonClientFrameView,
22 public views::ButtonListener,
23 public chrome::TabIconViewModel {
24 public:
25 enum PaintState {
26 PAINT_AS_INACTIVE,
27 PAINT_AS_ACTIVE,
28 PAINT_AS_MINIMIZED,
29 PAINT_FOR_ATTENTION
32 explicit PanelFrameView(PanelView* panel_view);
33 ~PanelFrameView() override;
35 void Init();
36 void UpdateTitle();
37 void UpdateIcon();
38 void UpdateThrobber();
39 void UpdateTitlebarMinimizeRestoreButtonVisibility();
40 void SetWindowCornerStyle(panel::CornerStyle corner_style);
42 // Returns the size of the non-client area, that is, the window size minus
43 // the size of the client area.
44 gfx::Size NonClientAreaSize() const;
46 int BorderThickness() const;
48 PaintState GetPaintState() const;
50 views::ImageButton* close_button() const { return close_button_; }
51 views::ImageButton* minimize_button() const { return minimize_button_; }
52 views::ImageButton* restore_button() const { return restore_button_; }
53 TabIconView* title_icon() const { return title_icon_; }
54 views::Label* title_label() const { return title_label_; }
55 panel::CornerStyle corner_style() const { return corner_style_; }
57 private:
58 // Overridden from views::NonClientFrameView:
59 gfx::Rect GetBoundsForClientView() const override;
60 gfx::Rect GetWindowBoundsForClientBounds(
61 const gfx::Rect& client_bounds) const override;
62 int NonClientHitTest(const gfx::Point& point) override;
63 void GetWindowMask(const gfx::Size& size, gfx::Path* window_mask) override;
64 void ResetWindowControls() override;
65 void UpdateWindowIcon() override;
66 void UpdateWindowTitle() override;
67 void SizeConstraintsChanged() override;
69 // Overridden from views::View:
70 gfx::Size GetPreferredSize() const override;
71 const char* GetClassName() const override;
72 gfx::Size GetMinimumSize() const override;
73 gfx::Size GetMaximumSize() const override;
74 void Layout() override;
75 void OnPaint(gfx::Canvas* canvas) override;
76 bool OnMousePressed(const ui::MouseEvent& event) override;
77 bool OnMouseDragged(const ui::MouseEvent& event) override;
78 void OnMouseReleased(const ui::MouseEvent& event) override;
79 void OnMouseCaptureLost() override;
81 // Overridden from views::ButtonListener:
82 void ButtonPressed(views::Button* sender, const ui::Event& event) override;
84 // Overridden from chrome::TabIconViewModel:
85 bool ShouldTabIconViewAnimate() const override;
86 gfx::ImageSkia GetFaviconForTabIconView() override;
88 int TitlebarHeight() const;
90 const gfx::ImageSkia* GetFrameBackground(PaintState paint_state) const;
92 // Update control styles to indicate if the titlebar is active or not.
93 void UpdateControlStyles(PaintState paint_state);
95 // Custom draw the frame.
96 void PaintFrameBackground(gfx::Canvas* canvas);
97 void PaintFrameEdge(gfx::Canvas* canvas);
99 // Retrieves the drawing metrics based on the current painting state.
100 SkColor GetTitleColor(PaintState paint_state) const;
102 // Returns true if |mouse_location| is within the panel's resizing area.
103 bool IsWithinResizingArea(const gfx::Point& mouse_location) const;
105 static const char kViewClassName[];
107 bool is_frameless_;
108 PanelView* panel_view_;
109 views::ImageButton* close_button_;
110 views::ImageButton* minimize_button_;
111 views::ImageButton* restore_button_;
112 TabIconView* title_icon_;
113 views::Label* title_label_;
114 panel::CornerStyle corner_style_;
116 DISALLOW_COPY_AND_ASSIGN(PanelFrameView);
119 #endif // CHROME_BROWSER_UI_VIEWS_PANELS_PANEL_FRAME_VIEW_H_