1// Copyright 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 UI_VIEWS_TEST_TEST_VIEWS_H_
6#define UI_VIEWS_TEST_TEST_VIEWS_H_
7
8#include "base/memory/scoped_ptr.h"
9#include "ui/views/view.h"
10
11namespace views {
12
13// A view that requests a set amount of space.
14class StaticSizedView : public View {
15 public:
16  explicit StaticSizedView(const gfx::Size& size);
17  virtual ~StaticSizedView();
18
19  virtual gfx::Size GetPreferredSize() const OVERRIDE;
20
21 private:
22  gfx::Size size_;
23
24  DISALLOW_COPY_AND_ASSIGN(StaticSizedView);
25};
26
27// A view that accomodates testing layouts that use GetHeightForWidth.
28class ProportionallySizedView : public View {
29 public:
30  explicit ProportionallySizedView(int factor);
31  virtual ~ProportionallySizedView();
32
33  void set_preferred_width(int width) { preferred_width_ = width; }
34
35  virtual int GetHeightForWidth(int w) const OVERRIDE;
36  virtual gfx::Size GetPreferredSize() const OVERRIDE;
37
38 private:
39  // The multiplicative factor between width and height, i.e.
40  // height = width * factor_.
41  int factor_;
42
43  // The width used as the preferred size. -1 if not used.
44  int preferred_width_;
45
46  DISALLOW_COPY_AND_ASSIGN(ProportionallySizedView);
47};
48
49}  // namespace views
50
51#endif  // UI_VIEWS_TEST_TEST_VIEWS_H_
52