1// Copyright 2014 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.
4
5#ifndef CHROME_BROWSER_UI_VIEWS_APPS_GLASS_APP_WINDOW_FRAME_VIEW_WIN_H_
6#define CHROME_BROWSER_UI_VIEWS_APPS_GLASS_APP_WINDOW_FRAME_VIEW_WIN_H_
7
8#include "ui/gfx/geometry/insets.h"
9#include "ui/views/window/non_client_view.h"
10
11namespace extensions {
12class NativeAppWindow;
13}
14
15// A glass style app window frame view.
16class GlassAppWindowFrameViewWin : public views::NonClientFrameView {
17 public:
18  static const char kViewClassName[];
19
20  explicit GlassAppWindowFrameViewWin(extensions::NativeAppWindow* window,
21                                      views::Widget* widget);
22  virtual ~GlassAppWindowFrameViewWin();
23
24  gfx::Insets GetGlassInsets() const;
25
26 private:
27  // views::NonClientFrameView implementation.
28  virtual gfx::Rect GetBoundsForClientView() const OVERRIDE;
29  virtual gfx::Rect GetWindowBoundsForClientBounds(
30      const gfx::Rect& client_bounds) const OVERRIDE;
31  virtual int NonClientHitTest(const gfx::Point& point) OVERRIDE;
32  virtual void GetWindowMask(const gfx::Size& size,
33                             gfx::Path* window_mask) OVERRIDE;
34  virtual void ResetWindowControls() OVERRIDE {}
35  virtual void UpdateWindowIcon() OVERRIDE {}
36  virtual void UpdateWindowTitle() OVERRIDE {}
37  virtual void SizeConstraintsChanged() OVERRIDE {}
38
39  // views::View implementation.
40  virtual gfx::Size GetPreferredSize() const OVERRIDE;
41  virtual const char* GetClassName() const OVERRIDE;
42  virtual gfx::Size GetMinimumSize() const OVERRIDE;
43  virtual gfx::Size GetMaximumSize() const OVERRIDE;
44
45  extensions::NativeAppWindow* window_;
46  views::Widget* widget_;
47
48  DISALLOW_COPY_AND_ASSIGN(GlassAppWindowFrameViewWin);
49};
50
51#endif  // CHROME_BROWSER_UI_VIEWS_APPS_GLASS_APP_WINDOW_FRAME_VIEW_WIN_H_
52