Home | History | Annotate | Download | only in frame
      1 // Copyright (c) 2011 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_CHROMEOS_FRAME_DOM_BROWSER_VIEW_LAYOUT_H_
      6 #define CHROME_BROWSER_CHROMEOS_FRAME_DOM_BROWSER_VIEW_LAYOUT_H_
      7 #pragma once
      8 
      9 #include "base/compiler_specific.h"
     10 #include "chrome/browser/chromeos/frame/dom_browser_view.h"
     11 #include "chrome/browser/chromeos/status/status_area_host.h"
     12 #include "chrome/browser/ui/views/frame/browser_view_layout.h"
     13 
     14 namespace chromeos {
     15 
     16 class DOMBrowserView;
     17 class StatusAreaView;
     18 
     19 // LayoutManager for DOMBrowserView, which lays out the StatusAreaView in the
     20 // top corner and ommits the other elements that have been removed from the
     21 // view. There is a bar accross the top of the screen which is clearly divided
     22 // from the rest of the screen. The far left side will eventually have Add User
     23 // button in it.
     24 //
     25 // |-------------------------------------------------------|
     26 // |[ Future Add User button]            [Status Area View]| <-- DOMBrowserView
     27 // |-------------------------------------------------------|
     28 // |                                                       |
     29 // |                                                       |
     30 // |                   DOM screen                          |
     31 // |                                                       |
     32 // |                                                       |
     33 // |                                                       |
     34 // |-------------------------------------------------------|
     35 // |                                                       |
     36 // |                                                       |
     37 // |                 Touch Keyboard                        |
     38 // |                                                       |
     39 // |                                                       |
     40 // |-------------------------------------------------------|
     41 
     42 class DOMBrowserViewLayout : public ::BrowserViewLayout {
     43  public:
     44   DOMBrowserViewLayout();
     45   virtual ~DOMBrowserViewLayout();
     46 
     47   // BrowserViewLayout overrides:
     48   virtual void Installed(views::View* host) OVERRIDE;
     49   virtual void ViewAdded(views::View* host,
     50                          views::View* view) OVERRIDE;
     51   virtual bool IsPositionInWindowCaption(const gfx::Point& point) OVERRIDE;
     52   virtual int NonClientHitTest(const gfx::Point& point) OVERRIDE;
     53 
     54  protected:
     55   // BrowserViewLayout overrides:
     56   virtual int LayoutTabStrip() OVERRIDE;
     57   virtual int LayoutToolbar(int top) OVERRIDE;
     58   virtual int LayoutBookmarkAndInfoBars(int top) OVERRIDE;
     59 
     60  private:
     61   const DOMBrowserView* GetDOMBrowserView();
     62   StatusAreaView* status_area_;
     63 
     64   // Tests if the point is on one of views that are within the
     65   // considered title bar area of client view.
     66   bool IsPointInViewsInTitleArea(const gfx::Point& point) const;
     67 
     68   // Lays out tabstrip and status area in the title bar area (given by
     69   // |bounds|).
     70   int LayoutTitlebarComponents(const gfx::Rect& bounds);
     71 
     72   DISALLOW_COPY_AND_ASSIGN(DOMBrowserViewLayout);
     73 };
     74 
     75 }  // namespace chromeos
     76 
     77 #endif  // CHROME_BROWSER_CHROMEOS_FRAME_DOM_BROWSER_VIEW_LAYOUT_H_
     78