Home | History | Annotate | Download | only in renderer_host
      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/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 IN_PROC_BROWSER_TEST_F(RenderWidgetHostBrowserTest,
     50                        GetSnapshotFromRendererTest) {
     51   base::RunLoop run_loop;
     52 
     53   NavigateToURL(shell(), GURL(net::FilePathToFileURL(
     54       test_dir_.AppendASCII("rwh_simple.html"))));
     55 
     56   bool snapshot_valid = false;
     57   RenderViewHost* const rwh = shell()->web_contents()->GetRenderViewHost();
     58   rwh->GetSnapshotFromRenderer(gfx::Rect(), base::Bind(
     59       &RenderWidgetHostBrowserTest::GetSnapshotFromRendererCallback,
     60       base::Unretained(this),
     61       run_loop.QuitClosure(),
     62       &snapshot_valid));
     63   run_loop.Run();
     64 
     65   EXPECT_EQ(snapshot_valid, true);
     66 }
     67 
     68 }  // namespace content
     69