- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / thumbnails / render_widget_snapshot_taker_unittest.cc
1 // Copyright (c) 2013 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 "chrome/browser/thumbnails/render_widget_snapshot_taker.h"
6
7 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
8
9 class RenderWidgetSnapshotTakerTest : public ChromeRenderViewHostTestHarness {
10  public:
11   RenderWidgetSnapshotTakerTest() : snapshot_ready_called_(false) {}
12
13   void SnapshotReady(const SkBitmap& bitmap) {
14     snapshot_ready_called_ = true;
15   }
16
17   bool snapshot_ready_called() const {
18     return snapshot_ready_called_;
19   }
20
21  private:
22   bool snapshot_ready_called_;
23 };
24
25 #if defined(USE_X11)
26 // RenderWidgetHost::AskForSnapshot is not implemented for X11
27 // (http://crbug.com/89777).
28 #define MAYBE_WidgetDidReceivePaintAtSizeAck \
29     DISABLED_WidgetDidReceivePaintAtSizeAck
30 #else
31 #define MAYBE_WidgetDidReceivePaintAtSizeAck WidgetDidReceivePaintAtSizeAck
32 #endif
33
34 // Just checks the callback runs in WidgetDidReceivePaintAtSizeAck.
35 TEST_F(RenderWidgetSnapshotTakerTest, MAYBE_WidgetDidReceivePaintAtSizeAck) {
36   RenderWidgetSnapshotTaker snapshot_taker;
37   const gfx::Size size(100, 100);
38   snapshot_taker.AskForSnapshot(
39       rvh(),
40       base::Bind(&RenderWidgetSnapshotTakerTest::SnapshotReady,
41                  base::Unretained(this)),
42       size,
43       size);
44   EXPECT_EQ(1U, snapshot_taker.callback_map_.size());
45   const int sequence_num = 1;
46   snapshot_taker.WidgetDidReceivePaintAtSizeAck(
47       content::RenderViewHostTestHarness::rvh(),
48       sequence_num,
49       size);
50   EXPECT_TRUE(snapshot_taker.callback_map_.empty());
51   EXPECT_TRUE(snapshot_ready_called());
52 }
53
54 #if defined(USE_X11)
55 // RenderWidgetHost::AskForSnapshot is not implemented for X11
56 // (http://crbug.com/89777).
57 #define MAYBE_WidgetDidReceivePaintAtSizeAckFail \
58     DISABLED_WidgetDidReceivePaintAtSizeAckFail
59 #else
60 #define MAYBE_WidgetDidReceivePaintAtSizeAckFail \
61     WidgetDidReceivePaintAtSizeAckFail
62 #endif
63
64 // Checks the case where RenderWidgetSnapshotTaker receives an ack with a wrong
65 // size. The should result in a failure and the callback should not be called.
66 TEST_F(RenderWidgetSnapshotTakerTest,
67     MAYBE_WidgetDidReceivePaintAtSizeAckFail) {
68   RenderWidgetSnapshotTaker snapshot_taker;
69   const gfx::Size size(100, 100);
70   snapshot_taker.AskForSnapshot(
71       rvh(),
72       base::Bind(&RenderWidgetSnapshotTakerTest::SnapshotReady,
73                  base::Unretained(this)),
74       size,
75       size);
76   EXPECT_EQ(1U, snapshot_taker.callback_map_.size());
77   const int sequence_num = 1;
78   // Ensure this is bigger than the max scale factor X the size.
79   const gfx::Size size2(300, 300);
80   snapshot_taker.WidgetDidReceivePaintAtSizeAck(
81       content::RenderViewHostTestHarness::rvh(),
82       sequence_num,
83       size2);
84   EXPECT_FALSE(snapshot_taker.callback_map_.empty());
85   EXPECT_FALSE(snapshot_ready_called());
86 }