// 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.

#include "extensions/shell/browser/shell_screen.h"

#include "base/memory/scoped_ptr.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/aura/test/aura_test_base.h"
#include "ui/aura/window.h"
#include "ui/aura/window_tree_host.h"
#include "ui/gfx/display.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/size.h"

namespace extensions {

using ShellScreenTest = aura::test::AuraTestBase;

// Basic sanity tests for ShellScreen.
TEST_F(ShellScreenTest, ShellScreen) {
  ShellScreen screen(gfx::Size(640, 480));

  // There is only one display.
  EXPECT_EQ(1, screen.GetNumDisplays());
  EXPECT_EQ(1u, screen.GetAllDisplays().size());
  EXPECT_EQ(0, screen.GetAllDisplays()[0].id());
  EXPECT_EQ(0, screen.GetPrimaryDisplay().id());
  EXPECT_EQ("640x480", screen.GetPrimaryDisplay().size().ToString());

  // Tests that reshaping the host window reshapes the display.
  // NOTE: AuraTestBase already has its own WindowTreeHost. This is creating a
  // second one.
  scoped_ptr<aura::WindowTreeHost> host(screen.CreateHostForPrimaryDisplay());
  EXPECT_TRUE(host->window());
  host->window()->SetBounds(gfx::Rect(0, 0, 800, 600));
  EXPECT_EQ("800x600", screen.GetPrimaryDisplay().size().ToString());
}

}  // namespace extensions
