| Index: android_webview/browser/test/fake_window.cc
|
| diff --git a/android_webview/browser/test/fake_window.cc b/android_webview/browser/test/fake_window.cc
|
| index 16d9405727615890512f5d2decdd7e4b5db7c2a0..02ea5a808c4d3a51d9426f16425d8fb48158c504 100644
|
| --- a/android_webview/browser/test/fake_window.cc
|
| +++ b/android_webview/browser/test/fake_window.cc
|
| @@ -5,6 +5,8 @@
|
| #include "android_webview/browser/test/fake_window.h"
|
|
|
| #include "android_webview/browser/browser_view_renderer.h"
|
| +#include "android_webview/browser/child_frame.h"
|
| +#include "android_webview/browser/shared_renderer_state.h"
|
| #include "base/location.h"
|
| #include "base/synchronization/waitable_event.h"
|
| #include "base/thread_task_runner_handle.h"
|
| @@ -39,6 +41,7 @@ class FakeWindow::ScopedMakeCurrent {
|
| };
|
|
|
| FakeWindow::FakeWindow(BrowserViewRenderer* view,
|
| + SharedRendererState* functor,
|
| WindowHooks* hooks,
|
| gfx::Rect location)
|
| : view_(view),
|
| @@ -46,7 +49,7 @@ FakeWindow::FakeWindow(BrowserViewRenderer* view,
|
| surface_size_(100, 100),
|
| location_(location),
|
| on_draw_hardware_pending_(false),
|
| - functor_(nullptr),
|
| + functor_(functor),
|
| context_current_(false),
|
| weak_ptr_factory_(this) {
|
| CheckCurrentlyOnUIThread();
|
| @@ -62,6 +65,7 @@ FakeWindow::~FakeWindow() {
|
|
|
| void FakeWindow::Detach() {
|
| CheckCurrentlyOnUIThread();
|
| + functor_->DeleteHardwareRendererOnUI();
|
| view_->OnDetachedFromWindow();
|
|
|
| if (render_thread_loop_) {
|
| @@ -119,11 +123,14 @@ void FakeWindow::OnDrawHardware() {
|
| DCHECK(on_draw_hardware_pending_);
|
| on_draw_hardware_pending_ = false;
|
|
|
| - view_->PrepareToDraw(gfx::Vector2d(), location_);
|
| + view_->PrepareToDraw(location_);
|
| hooks_->WillOnDraw();
|
| - bool success = view_->OnDrawHardware();
|
| + scoped_ptr<ChildFrame> frame = view_->OnDrawHardware();
|
| + bool success = frame.get() != nullptr;
|
| hooks_->DidOnDraw(success);
|
| if (success) {
|
| + view_->ReturnUnusedResource(functor_->PassUncommittedFrameOnUI());
|
| + functor_->SetFrameOnUI(std::move(frame));
|
| CreateRenderThreadIfNeeded();
|
|
|
| base::WaitableEvent completion(true, false);
|
| @@ -173,12 +180,10 @@ void FakeWindow::CheckCurrentlyOnUIThread() {
|
|
|
| void FakeWindow::CreateRenderThreadIfNeeded() {
|
| CheckCurrentlyOnUIThread();
|
| - if (functor_) {
|
| - DCHECK(render_thread_.get());
|
| + if (render_thread_.get()) {
|
| DCHECK(render_thread_loop_.get());
|
| return;
|
| }
|
| - functor_ = view_->GetAwDrawGLViewContext();
|
| render_thread_.reset(new base::Thread("TestRenderThread"));
|
| render_thread_->Start();
|
| render_thread_loop_ = render_thread_->task_runner();
|
|
|