Home | History | Annotate | Download | only in frame_host
      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 
     18 namespace content {
     19 namespace {
     20 class MockRenderWidgetHostDelegate : public RenderWidgetHostDelegate {
     21  public:
     22   MockRenderWidgetHostDelegate() {}
     23   virtual ~MockRenderWidgetHostDelegate() {}
     24 };
     25 
     26 class 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 
     66 TEST_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