- add sources.
[platform/framework/web/crosswalk.git] / src / content / browser / renderer_host / render_widget_host_browsertest.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 "base/path_service.h"
6 #include "base/run_loop.h"
7 #include "content/public/browser/render_view_host.h"
8 #include "content/public/browser/web_contents.h"
9 #include "content/public/common/content_paths.h"
10 #include "content/shell/browser/shell.h"
11 #include "content/test/content_browser_test.h"
12 #include "content/test/content_browser_test_utils.h"
13 #include "net/base/net_util.h"
14 #include "third_party/skia/include/core/SkBitmap.h"
15
16 namespace content {
17
18 class RenderWidgetHostBrowserTest : public ContentBrowserTest {
19  public:
20   RenderWidgetHostBrowserTest() {}
21
22   virtual void SetUpInProcessBrowserTestFixture() OVERRIDE {
23     ASSERT_TRUE(PathService::Get(DIR_TEST_DATA, &test_dir_));
24   }
25
26   void GetSnapshotFromRendererCallback(const base::Closure& quit_closure,
27                                        bool* snapshot_valid,
28                                        bool success,
29                                        const SkBitmap& bitmap) {
30     quit_closure.Run();
31     EXPECT_EQ(success, true);
32
33     const int row_bytes = bitmap.rowBytesAsPixels();
34     SkColor* pixels = reinterpret_cast<SkColor*>(bitmap.getPixels());
35     for (int i = 0; i < bitmap.width(); ++i) {
36       for (int j = 0; j < bitmap.height(); ++j) {
37         if (pixels[j * row_bytes + i] != SK_ColorRED) {
38           return;
39         }
40       }
41     }
42     *snapshot_valid = true;
43   }
44
45  protected:
46   base::FilePath test_dir_;
47 };
48
49 // Disabled on Windows and CrOS because it is flaky: crbug.com/272379.
50 #if defined(OS_WIN) || defined(OS_CHROMEOS)
51 #define MAYBE_GetSnapshotFromRendererTest DISABLED_GetSnapshotFromRendererTest
52 #else
53 #define MAYBE_GetSnapshotFromRendererTest GetSnapshotFromRendererTest
54 #endif
55 IN_PROC_BROWSER_TEST_F(RenderWidgetHostBrowserTest,
56                        MAYBE_GetSnapshotFromRendererTest) {
57   base::RunLoop run_loop;
58
59   NavigateToURL(shell(), GURL(net::FilePathToFileURL(
60       test_dir_.AppendASCII("rwh_simple.html"))));
61
62   bool snapshot_valid = false;
63   RenderViewHost* const rwh = shell()->web_contents()->GetRenderViewHost();
64   rwh->GetSnapshotFromRenderer(gfx::Rect(), base::Bind(
65       &RenderWidgetHostBrowserTest::GetSnapshotFromRendererCallback,
66       base::Unretained(this),
67       run_loop.QuitClosure(),
68       &snapshot_valid));
69   run_loop.Run();
70
71   EXPECT_EQ(snapshot_valid, true);
72 }
73
74 }  // namespace content