1// Copyright (c) 2013 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_FRAME_OPAQUE_BROWSER_FRAME_VIEW_LINUX_H_
6#define CHROME_BROWSER_UI_VIEWS_FRAME_OPAQUE_BROWSER_FRAME_VIEW_LINUX_H_
7
8#include "base/basictypes.h"
9#include "base/compiler_specific.h"
10#include "chrome/browser/ui/views/frame/opaque_browser_frame_view_platform_specific.h"
11#include "ui/views/linux_ui/window_button_order_observer.h"
12
13class ThemeService;
14
15// Plumbs button change events from views::LinuxUI to
16// OpaqueBrowserFrameViewLayout.
17class OpaqueBrowserFrameViewLinux
18    : public OpaqueBrowserFrameViewPlatformSpecific,
19      public views::WindowButtonOrderObserver {
20 public:
21  OpaqueBrowserFrameViewLinux(
22      OpaqueBrowserFrameView* view,
23      OpaqueBrowserFrameViewLayout* layout,
24      Profile* profile);
25  virtual ~OpaqueBrowserFrameViewLinux();
26
27  // Overridden from OpaqueBrowserFrameViewPlatformSpecific:
28  virtual bool IsUsingSystemTheme() OVERRIDE;
29
30  // Overridden from views::WindowButtonOrderObserver:
31  virtual void OnWindowButtonOrderingChange(
32      const std::vector<views::FrameButton>& leading_buttons,
33      const std::vector<views::FrameButton>& trailing_buttons) OVERRIDE;
34
35 private:
36  OpaqueBrowserFrameView* view_;
37  OpaqueBrowserFrameViewLayout* layout_;
38
39  ThemeService* theme_service_;
40
41  DISALLOW_COPY_AND_ASSIGN(OpaqueBrowserFrameViewLinux);
42};
43
44#endif  // CHROME_BROWSER_UI_VIEWS_FRAME_OPAQUE_BROWSER_FRAME_VIEW_LINUX_H_
45