// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef SERVICES_WINDOW_MANAGER_WINDOW_MANAGER_TEST_UTIL_H_
#define SERVICES_WINDOW_MANAGER_WINDOW_MANAGER_TEST_UTIL_H_

#include <set>

#include "mojo/services/view_manager/public/cpp/lib/view_private.h"
#include "mojo/services/view_manager/public/cpp/view.h"
#include "services/window_manager/view_target.h"

namespace gfx {
class Rect;
}

namespace window_manager {

// A wrapper around View so we can instantiate these directly without a
// ViewManager.
class TestView : public mojo::View {
 public:
  TestView(int id, const gfx::Rect& rect);
  TestView(int id, const gfx::Rect& rect, mojo::View* parent);
  ~TestView();

  // Builds a child view as a pointer. The caller is responsible for making
  // sure that the root of any tree allocated this way is Destroy()ed.
  static TestView* Build(int id, const gfx::Rect& rect);
  static TestView* Build(int id, const gfx::Rect& rect, View* parent);

  ViewTarget* target() { return target_; }

 private:
  ViewTarget* target_;

  DISALLOW_COPY_AND_ASSIGN(TestView);
};

}  // namespace window_manager

#endif  // SERVICES_WINDOW_MANAGER_WINDOW_MANAGER_TEST_UTIL_H_
