| OLD | NEW | 
|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "android_webview/browser/test/rendering_test.h" | 5 #include "android_webview/browser/test/rendering_test.h" | 
| 6 | 6 | 
| 7 #include "android_webview/browser/browser_view_renderer.h" | 7 #include "android_webview/browser/browser_view_renderer.h" | 
| 8 #include "base/message_loop/message_loop.h" | 8 #include "base/message_loop/message_loop.h" | 
| 9 #include "base/message_loop/message_loop_proxy.h" |  | 
| 10 #include "content/public/test/test_synchronous_compositor_android.h" | 9 #include "content/public/test/test_synchronous_compositor_android.h" | 
| 11 | 10 | 
| 12 namespace android_webview { | 11 namespace android_webview { | 
| 13 | 12 | 
| 14 RenderingTest::RenderingTest() : message_loop_(new base::MessageLoop) { | 13 RenderingTest::RenderingTest() | 
|  | 14     : message_loop_(new base::MessageLoop), | 
|  | 15       ui_proxy_(base::MessageLoopProxy::current()) { | 
| 15 } | 16 } | 
| 16 | 17 | 
| 17 RenderingTest::~RenderingTest() { | 18 RenderingTest::~RenderingTest() { | 
|  | 19   if (view_root_impl_.get()) | 
|  | 20     view_root_impl_->Detach(); | 
| 18 } | 21 } | 
| 19 | 22 | 
| 20 void RenderingTest::SetUpTestHarness() { | 23 void RenderingTest::SetUpTestHarness() { | 
| 21   DCHECK(!browser_view_renderer_.get()); | 24   DCHECK(!browser_view_renderer_.get()); | 
| 22   browser_view_renderer_.reset( | 25   browser_view_renderer_.reset( | 
| 23       new BrowserViewRenderer(this, base::MessageLoopProxy::current())); | 26       new BrowserViewRenderer(this, base::MessageLoopProxy::current())); | 
|  | 27   InitializeCompositor(); | 
|  | 28   Attach(); | 
| 24 } | 29 } | 
| 25 | 30 | 
| 26 class RenderingTest::ScopedInitializeCompositor { |  | 
| 27  public: |  | 
| 28   explicit ScopedInitializeCompositor(RenderingTest* test) : test_(test) { |  | 
| 29     test_->InitializeCompositor(); |  | 
| 30   } |  | 
| 31 |  | 
| 32   ~ScopedInitializeCompositor() { test_->TeardownCompositor(); } |  | 
| 33 |  | 
| 34  private: |  | 
| 35   RenderingTest* test_; |  | 
| 36   DISALLOW_COPY_AND_ASSIGN(ScopedInitializeCompositor); |  | 
| 37 }; |  | 
| 38 |  | 
| 39 void RenderingTest::InitializeCompositor() { | 31 void RenderingTest::InitializeCompositor() { | 
| 40   DCHECK(!compositor_.get()); | 32   DCHECK(!compositor_.get()); | 
| 41   DCHECK(browser_view_renderer_.get()); | 33   DCHECK(browser_view_renderer_.get()); | 
| 42   compositor_.reset(new content::TestSynchronousCompositor); | 34   compositor_.reset(new content::TestSynchronousCompositor); | 
| 43   compositor_->SetClient(browser_view_renderer_.get()); | 35   compositor_->SetClient(browser_view_renderer_.get()); | 
| 44 } | 36 } | 
| 45 | 37 | 
| 46 void RenderingTest::TeardownCompositor() { | 38 void RenderingTest::Attach() { | 
| 47   DCHECK(compositor_.get()); | 39   view_root_impl_.reset(new FakeViewRootImpl(browser_view_renderer_.get(), this, | 
| 48   DCHECK(browser_view_renderer_.get()); | 40                                              gfx::Rect(100, 100))); | 
| 49   compositor_.reset(); |  | 
| 50 } | 41 } | 
| 51 | 42 | 
| 52 void RenderingTest::RunTest() { | 43 void RenderingTest::RunTest() { | 
| 53   ScopedInitializeCompositor initialize_compositor(this); | 44   SetUpTestHarness(); | 
| 54   StartTest(); | 45 | 
|  | 46   ui_proxy_->PostTask( | 
|  | 47       FROM_HERE, base::Bind(&RenderingTest::StartTest, base::Unretained(this))); | 
|  | 48   message_loop_->Run(); | 
|  | 49 } | 
|  | 50 | 
|  | 51 void RenderingTest::StartTest() { | 
|  | 52   EndTest(); | 
|  | 53 } | 
|  | 54 | 
|  | 55 void RenderingTest::EndTest() { | 
|  | 56   ui_proxy_->PostTask(FROM_HERE, base::Bind(&RenderingTest::QuitMessageLoop, | 
|  | 57                                             base::Unretained(this))); | 
|  | 58 } | 
|  | 59 | 
|  | 60 void RenderingTest::QuitMessageLoop() { | 
|  | 61   DCHECK_EQ(base::MessageLoop::current(), message_loop_.get()); | 
|  | 62   message_loop_->QuitWhenIdle(); | 
| 55 } | 63 } | 
| 56 | 64 | 
| 57 bool RenderingTest::RequestDrawGL(bool wait_for_completion) { | 65 bool RenderingTest::RequestDrawGL(bool wait_for_completion) { | 
| 58   return false; | 66   view_root_impl_->RequestDrawGL(wait_for_completion); | 
|  | 67   return true; | 
| 59 } | 68 } | 
| 60 | 69 | 
| 61 void RenderingTest::OnNewPicture() { | 70 void RenderingTest::OnNewPicture() { | 
| 62 } | 71 } | 
| 63 | 72 | 
| 64 void RenderingTest::PostInvalidate() { | 73 void RenderingTest::PostInvalidate() { | 
|  | 74   view_root_impl_->PostInvalidate(); | 
| 65 } | 75 } | 
| 66 | 76 | 
| 67 void RenderingTest::InvalidateOnFunctorDestroy() { | 77 void RenderingTest::InvalidateOnFunctorDestroy() { | 
| 68 } | 78 } | 
| 69 | 79 | 
| 70 gfx::Point RenderingTest::GetLocationOnScreen() { | 80 gfx::Point RenderingTest::GetLocationOnScreen() { | 
| 71   return gfx::Point(); | 81   return gfx::Point(); | 
| 72 } | 82 } | 
| 73 | 83 | 
| 74 bool RenderingTest::IsFlingActive() const { | 84 bool RenderingTest::IsFlingActive() const { | 
| 75   return false; | 85   return false; | 
| 76 } | 86 } | 
| 77 | 87 | 
| 78 }  // namespace android_webview | 88 }  // namespace android_webview | 
| OLD | NEW | 
|---|