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(); |