rendering_test.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. // Copyright 2014 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. #ifndef ANDROID_WEBVIEW_BROWSER_GFX_TEST_RENDERING_TEST_H_
  5. #define ANDROID_WEBVIEW_BROWSER_GFX_TEST_RENDERING_TEST_H_
  6. #include <memory>
  7. #include "android_webview/browser/gfx/browser_view_renderer_client.h"
  8. #include "android_webview/browser/gfx/test/fake_window.h"
  9. #include "base/run_loop.h"
  10. #include "base/task/single_thread_task_runner.h"
  11. #include "components/viz/common/resources/resource_id.h"
  12. #include "testing/gtest/include/gtest/gtest.h"
  13. namespace base {
  14. namespace test {
  15. class TaskEnvironment;
  16. }
  17. } // namespace base
  18. namespace content {
  19. class SynchronousCompositor;
  20. class TestSynchronousCompositor;
  21. } // namespace content
  22. namespace ui {
  23. class TouchHandleDrawable;
  24. }
  25. namespace viz {
  26. class CompositorFrame;
  27. }
  28. namespace android_webview {
  29. class BrowserViewRenderer;
  30. class CompositorFrameConsumer;
  31. class CompositorFrameProducer;
  32. class FakeWindow;
  33. class RenderingTest : public testing::Test,
  34. public BrowserViewRendererClient,
  35. public WindowHooks {
  36. public:
  37. RenderingTest(const RenderingTest&) = delete;
  38. RenderingTest& operator=(const RenderingTest&) = delete;
  39. // BrowserViewRendererClient overrides.
  40. void OnNewPicture() override;
  41. void PostInvalidate(bool inside_vsync) override;
  42. gfx::Point GetLocationOnScreen() override;
  43. void ScrollContainerViewTo(const gfx::Point& new_value) override {}
  44. void UpdateScrollState(const gfx::Point& max_scroll_offset,
  45. const gfx::SizeF& contents_size_dip,
  46. float page_scale_factor,
  47. float min_page_scale_factor,
  48. float max_page_scale_factor) override {}
  49. void DidOverscroll(const gfx::Vector2d& overscroll_delta,
  50. const gfx::Vector2dF& overscroll_velocity,
  51. bool inside_vsync) override {}
  52. ui::TouchHandleDrawable* CreateDrawable() override;
  53. // WindowHooks overrides.
  54. void WillOnDraw() override;
  55. void DidOnDraw(bool success) override {}
  56. FakeFunctor* GetFunctor() override;
  57. void WillSyncOnRT() override {}
  58. void DidSyncOnRT() override {}
  59. void WillProcessOnRT() override {}
  60. void DidProcessOnRT() override {}
  61. bool WillDrawOnRT(HardwareRendererDrawParams* params) override;
  62. void DidDrawOnRT() override {}
  63. virtual void OnParentDrawDataUpdated() {}
  64. void OnViewTreeForceDarkStateChanged(
  65. bool view_tree_force_dark_state) override {}
  66. protected:
  67. RenderingTest();
  68. ~RenderingTest() override;
  69. CompositorFrameConsumer* GetCompositorFrameConsumer();
  70. CompositorFrameProducer* GetCompositorFrameProducer();
  71. virtual void SetUpTestHarness();
  72. virtual void StartTest();
  73. void RunTest();
  74. void InitializeCompositor();
  75. void EndTest();
  76. content::SynchronousCompositor* ActiveCompositor() const;
  77. std::unique_ptr<viz::CompositorFrame> ConstructEmptyFrame();
  78. std::unique_ptr<viz::CompositorFrame> ConstructFrame(
  79. viz::ResourceId resource_id);
  80. scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner_;
  81. std::unique_ptr<FakeWindow> window_;
  82. std::unique_ptr<FakeFunctor> functor_;
  83. std::unique_ptr<BrowserViewRenderer> browser_view_renderer_;
  84. std::unique_ptr<content::TestSynchronousCompositor> compositor_;
  85. private:
  86. std::unique_ptr<base::test::TaskEnvironment> task_environment_;
  87. base::RunLoop run_loop_;
  88. };
  89. #define RENDERING_TEST_F(TEST_FIXTURE_NAME) \
  90. TEST_F(TEST_FIXTURE_NAME, RunTest) { RunTest(); } \
  91. class NeedsSemicolon##TEST_FIXTURE_NAME {}
  92. } // namespace android_webview
  93. #endif // ANDROID_WEBVIEW_BROWSER_GFX_TEST_RENDERING_TEST_H_