// Copyright 2015 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 "ash/popup_message.h"

#include "ash/test/ash_test_base.h"
#include "base/strings/utf_string_conversions.h"
#include "ui/views/controls/label.h"
#include "ui/views/widget/widget.h"

namespace ash {

using PopupMessageTest = test::AshTestBase;

// Verifies the layout of the popup, especially it does not crop the caption and
// message text. See http://crbug.com/468494.
TEST_F(PopupMessageTest, Layout) {
  views::Widget* widget = views::Widget::CreateWindowWithContextAndBounds(
      nullptr, CurrentContext(), gfx::Rect(0, 0, 100, 100));
  PopupMessage message(base::ASCIIToUTF16("caption text"),
                       base::ASCIIToUTF16(
                           "Message text, which will be usually longer than "
                           "the caption, so that it's wrapped at some width"),
                       PopupMessage::ICON_WARNING,
                       widget->GetContentsView() /* anchor */,
                       views::BubbleBorder::TOP_LEFT, gfx::Size(), 10);

  views::View* contents_view = message.widget_->GetContentsView();
  views::View* caption_label =
      contents_view->GetViewByID(PopupMessage::kCaptionLabelID);
  views::View* message_label =
      contents_view->GetViewByID(PopupMessage::kMessageLabelID);
  ASSERT_TRUE(caption_label);
  ASSERT_TRUE(message_label);

  // The bubble should have enough heights to show both of the labels.
  EXPECT_GE(contents_view->height(),
            caption_label->height() + message_label->height());

  // The labels are not cropped -- the assigned height has enough height to show
  // the full text.
  EXPECT_GE(caption_label->height(),
            caption_label->GetHeightForWidth(caption_label->width()));
  EXPECT_GE(message_label->height(),
            message_label->GetHeightForWidth(message_label->width()));

  message.Close();
  widget->Close();
}

}  // namespace ash
