1// Copyright 2014 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#include "content/browser/frame_host/render_widget_host_view_child_frame.h"
6
7#include "base/basictypes.h"
8#include "base/message_loop/message_loop.h"
9#include "content/browser/renderer_host/render_widget_host_delegate.h"
10#include "content/browser/renderer_host/render_widget_host_impl.h"
11#include "content/common/view_messages.h"
12#include "content/public/browser/render_widget_host_view.h"
13#include "content/public/test/mock_render_process_host.h"
14#include "content/public/test/test_browser_context.h"
15#include "content/test/test_render_view_host.h"
16#include "testing/gtest/include/gtest/gtest.h"
17
18namespace content {
19namespace {
20class MockRenderWidgetHostDelegate : public RenderWidgetHostDelegate {
21 public:
22  MockRenderWidgetHostDelegate() {}
23  virtual ~MockRenderWidgetHostDelegate() {}
24};
25
26class RenderWidgetHostViewChildFrameTest : public testing::Test {
27 public:
28  RenderWidgetHostViewChildFrameTest() {}
29
30  virtual void SetUp() {
31    browser_context_.reset(new TestBrowserContext);
32    MockRenderProcessHost* process_host =
33        new MockRenderProcessHost(browser_context_.get());
34    widget_host_ = new RenderWidgetHostImpl(
35        &delegate_, process_host, MSG_ROUTING_NONE, false);
36    view_ = new RenderWidgetHostViewChildFrame(widget_host_);
37  }
38
39  virtual void TearDown() {
40    if (view_)
41      view_->Destroy();
42    delete widget_host_;
43
44    browser_context_.reset();
45
46    message_loop_.DeleteSoon(FROM_HERE, browser_context_.release());
47    message_loop_.RunUntilIdle();
48  }
49
50 protected:
51  base::MessageLoopForUI message_loop_;
52  scoped_ptr<BrowserContext> browser_context_;
53  MockRenderWidgetHostDelegate delegate_;
54
55  // Tests should set these to NULL if they've already triggered their
56  // destruction.
57  RenderWidgetHostImpl* widget_host_;
58  RenderWidgetHostViewChildFrame* view_;
59
60 private:
61  DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostViewChildFrameTest);
62};
63
64}  // namespace
65
66TEST_F(RenderWidgetHostViewChildFrameTest, VisibilityTest) {
67  view_->Show();
68  ASSERT_TRUE(view_->IsShowing());
69
70  view_->Hide();
71  ASSERT_FALSE(view_->IsShowing());
72
73  view_->WasShown();
74  ASSERT_TRUE(view_->IsShowing());
75
76  view_->WasHidden();
77  ASSERT_FALSE(view_->IsShowing());
78}
79
80}  // namespace content
81