| Index: android_webview/browser/test/rendering_test.cc | 
| diff --git a/android_webview/browser/test/rendering_test.cc b/android_webview/browser/test/rendering_test.cc | 
| index bea0de187f85c17bfca26ac717409fb3686e301c..73f1f4ce58ed5d5fae5a5c3a0f84ad9197b1b20e 100644 | 
| --- a/android_webview/browser/test/rendering_test.cc | 
| +++ b/android_webview/browser/test/rendering_test.cc | 
| @@ -6,36 +6,28 @@ | 
|  | 
| #include "android_webview/browser/browser_view_renderer.h" | 
| #include "base/message_loop/message_loop.h" | 
| -#include "base/message_loop/message_loop_proxy.h" | 
| #include "content/public/test/test_synchronous_compositor_android.h" | 
|  | 
| namespace android_webview { | 
|  | 
| -RenderingTest::RenderingTest() : message_loop_(new base::MessageLoop) { | 
| +RenderingTest::RenderingTest() | 
| +    : message_loop_(new base::MessageLoop), | 
| +      ui_proxy_(base::MessageLoopProxy::current()) { | 
| } | 
|  | 
| RenderingTest::~RenderingTest() { | 
| +  if (view_root_impl_.get()) | 
| +    view_root_impl_->Detach(); | 
| } | 
|  | 
| void RenderingTest::SetUpTestHarness() { | 
| DCHECK(!browser_view_renderer_.get()); | 
| browser_view_renderer_.reset( | 
| new BrowserViewRenderer(this, base::MessageLoopProxy::current())); | 
| +  InitializeCompositor(); | 
| +  Attach(); | 
| } | 
|  | 
| -class RenderingTest::ScopedInitializeCompositor { | 
| - public: | 
| -  explicit ScopedInitializeCompositor(RenderingTest* test) : test_(test) { | 
| -    test_->InitializeCompositor(); | 
| -  } | 
| - | 
| -  ~ScopedInitializeCompositor() { test_->TeardownCompositor(); } | 
| - | 
| - private: | 
| -  RenderingTest* test_; | 
| -  DISALLOW_COPY_AND_ASSIGN(ScopedInitializeCompositor); | 
| -}; | 
| - | 
| void RenderingTest::InitializeCompositor() { | 
| DCHECK(!compositor_.get()); | 
| DCHECK(browser_view_renderer_.get()); | 
| @@ -43,25 +35,43 @@ void RenderingTest::InitializeCompositor() { | 
| compositor_->SetClient(browser_view_renderer_.get()); | 
| } | 
|  | 
| -void RenderingTest::TeardownCompositor() { | 
| -  DCHECK(compositor_.get()); | 
| -  DCHECK(browser_view_renderer_.get()); | 
| -  compositor_.reset(); | 
| +void RenderingTest::Attach() { | 
| +  view_root_impl_.reset(new FakeViewRootImpl(browser_view_renderer_.get(), this, | 
| +                                             gfx::Rect(100, 100))); | 
| } | 
|  | 
| void RenderingTest::RunTest() { | 
| -  ScopedInitializeCompositor initialize_compositor(this); | 
| -  StartTest(); | 
| +  SetUpTestHarness(); | 
| + | 
| +  ui_proxy_->PostTask( | 
| +      FROM_HERE, base::Bind(&RenderingTest::StartTest, base::Unretained(this))); | 
| +  message_loop_->Run(); | 
| +} | 
| + | 
| +void RenderingTest::StartTest() { | 
| +  EndTest(); | 
| +} | 
| + | 
| +void RenderingTest::EndTest() { | 
| +  ui_proxy_->PostTask(FROM_HERE, base::Bind(&RenderingTest::QuitMessageLoop, | 
| +                                            base::Unretained(this))); | 
| +} | 
| + | 
| +void RenderingTest::QuitMessageLoop() { | 
| +  DCHECK_EQ(base::MessageLoop::current(), message_loop_.get()); | 
| +  message_loop_->QuitWhenIdle(); | 
| } | 
|  | 
| bool RenderingTest::RequestDrawGL(bool wait_for_completion) { | 
| -  return false; | 
| +  view_root_impl_->RequestDrawGL(wait_for_completion); | 
| +  return true; | 
| } | 
|  | 
| void RenderingTest::OnNewPicture() { | 
| } | 
|  | 
| void RenderingTest::PostInvalidate() { | 
| +  view_root_impl_->PostInvalidate(); | 
| } | 
|  | 
| void RenderingTest::InvalidateOnFunctorDestroy() { | 
|  |