Index: chrome/browser/renderer_host/render_widget_host_unittest.cc |
=================================================================== |
--- chrome/browser/renderer_host/render_widget_host_unittest.cc (revision 45523) |
+++ chrome/browser/renderer_host/render_widget_host_unittest.cc (working copy) |
@@ -9,6 +9,7 @@ |
#include "base/timer.h" |
#include "build/build_config.h" |
#include "chrome/browser/renderer_host/backing_store.h" |
+#include "chrome/browser/renderer_host/render_widget_host_painting_observer.h" |
#include "chrome/browser/renderer_host/test/test_render_view_host.h" |
#include "chrome/common/render_messages.h" |
#include "gfx/canvas.h" |
@@ -19,6 +20,10 @@ |
using WebKit::WebInputEvent; |
using WebKit::WebMouseWheelEvent; |
+namespace gfx { |
+class Size; |
+} |
+ |
// RenderWidgetHostProcess ----------------------------------------------------- |
class RenderWidgetHostProcess : public MockRenderProcessHost { |
@@ -191,6 +196,32 @@ |
bool unresponsive_timer_fired_; |
}; |
+// MockPaintingObserver -------------------------------------------------------- |
+ |
+class MockPaintingObserver : public RenderWidgetHostPaintingObserver { |
+ public: |
+ void WidgetWillDestroyBackingStore(RenderWidgetHost* widget, |
+ BackingStore* backing_store) {} |
+ void WidgetDidUpdateBackingStore(RenderWidgetHost* widget) {} |
+ void WidgetDidReceivePaintAtSizeAck(RenderWidgetHost* host, |
+ const TransportDIB::Handle& dib_handle, |
+ const gfx::Size& size) { |
+ host_ = reinterpret_cast<MockRenderWidgetHost*>(host); |
+ dib_handle_ = dib_handle; |
+ size_ = size; |
+ } |
+ |
+ MockRenderWidgetHost* host() const { return host_; } |
+ TransportDIB::Handle dib_handle() const { return dib_handle_; } |
+ gfx::Size size() const { return size_; } |
+ |
+ private: |
+ MockRenderWidgetHost* host_; |
+ TransportDIB::Handle dib_handle_; |
+ gfx::Size size_; |
+}; |
+ |
+ |
// RenderWidgetHostTest -------------------------------------------------------- |
class RenderWidgetHostTest : public testing::Test { |
@@ -504,6 +535,24 @@ |
EXPECT_TRUE(needs_repaint.a); |
} |
+TEST_F(RenderWidgetHostTest, PaintAtSize) { |
+ host_->PaintAtSize(TransportDIB::GetFakeHandleForTest(), gfx::Size(20, 30)); |
+ EXPECT_TRUE( |
+ process_->sink().GetUniqueMessageMatching(ViewMsg_PaintAtSize::ID)); |
+ |
+ MockPaintingObserver observer; |
+ host_->set_painting_observer(&observer); |
+ |
+ // Need to generate a fake handle value on all platforms. |
+ TransportDIB::Handle handle = TransportDIB::GetFakeHandleForTest(); |
+ host_->OnMsgPaintAtSizeAck(handle, gfx::Size(20, 30)); |
+ EXPECT_TRUE(host_ == observer.host()); |
+ EXPECT_TRUE(handle == observer.dib_handle()); |
+ EXPECT_EQ(20, observer.size().width()); |
+ EXPECT_EQ(30, observer.size().height()); |
+ host_->set_painting_observer(NULL); |
+} |
+ |
TEST_F(RenderWidgetHostTest, HandleKeyEventsWeSent) { |
// Simulate a keyboard event. |
SimulateKeyboardEvent(WebInputEvent::RawKeyDown); |
@@ -649,4 +698,3 @@ |
MessageLoop::current()->Run(); |
EXPECT_TRUE(host_->unresponsive_timer_fired()); |
} |
- |