diff options
Diffstat (limited to 'content/renderer/render_widget_unittest.cc')
-rw-r--r-- | content/renderer/render_widget_unittest.cc | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/content/renderer/render_widget_unittest.cc b/content/renderer/render_widget_unittest.cc new file mode 100644 index 0000000..1811289 --- /dev/null +++ b/content/renderer/render_widget_unittest.cc @@ -0,0 +1,61 @@ +// Copyright (c) 2010 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 "testing/gtest/include/gtest/gtest.h" + +#include "base/ref_counted.h" +#include "chrome/renderer/mock_render_process.h" +#include "chrome/renderer/mock_render_thread.h" +#include "chrome/renderer/render_thread.h" +#include "content/renderer/render_widget.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebPopupType.h" + +namespace { + +const int32 kRouteId = 5; +const int32 kOpenerId = 7; + +class RenderWidgetTest : public testing::Test { + public: + + protected: + MessageLoop msg_loop_; + MockRenderThread render_thread_; + + // The widget, each test should verify this is non-NULL before continuing. + scoped_refptr<RenderWidget> widget_; + + private: + // testing::Test + virtual void SetUp() { + mock_process_.reset(new MockRenderProcess); + render_thread_.set_routing_id(kRouteId); + widget_ = RenderWidget::Create(kOpenerId, &render_thread_, + WebKit::WebPopupTypeNone); + ASSERT_TRUE(widget_); + } + virtual void TearDown() { + widget_ = NULL; + mock_process_.reset(); + } + + scoped_ptr<MockRenderProcess> mock_process_; +}; + +TEST_F(RenderWidgetTest, CreateAndCloseWidget) { + // After the RenderWidget it must have sent a message to the render thread + // that sets the opener id. + EXPECT_EQ(kOpenerId, render_thread_.opener_id()); + ASSERT_TRUE(render_thread_.has_widget()); + + // Now simulate a close of the Widget. + render_thread_.SendCloseMessage(); + EXPECT_FALSE(render_thread_.has_widget()); + + // Run the loop so the release task from the renderwidget executes. + msg_loop_.PostTask(FROM_HERE, new MessageLoop::QuitTask()); + msg_loop_.Run(); +} + +} // namespace |