Chromium Code Reviews| Index: android_webview/browser/test/fake_window.h |
| diff --git a/android_webview/browser/test/fake_window.h b/android_webview/browser/test/fake_window.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..b0e2792198f05eae30a23c9bf13031f3dde24dbc |
| --- /dev/null |
| +++ b/android_webview/browser/test/fake_window.h |
| @@ -0,0 +1,94 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef ANDROID_WEBVIEW_BROWSER_TEST_FAKE_WINDOW_H_ |
| +#define ANDROID_WEBVIEW_BROWSER_TEST_FAKE_WINDOW_H_ |
| + |
| +#include <map> |
| + |
| +#include "base/memory/weak_ptr.h" |
| +#include "base/sequence_checker.h" |
| +#include "base/single_thread_task_runner.h" |
| +#include "ui/gfx/geometry/rect.h" |
| +#include "ui/gl/gl_context.h" |
| +#include "ui/gl/gl_surface.h" |
| + |
| +namespace base { |
| +class Thread; |
| +class WaitableEvent; |
| +} |
| + |
| +namespace android_webview { |
| + |
| +class BrowserViewRenderer; |
| +class SharedRendererState; |
| + |
| +class WindowHooks { |
| + public: |
| + virtual ~WindowHooks() {} |
| + |
| + virtual void WillOnDraw() = 0; |
| + virtual void DidOnDraw() = 0; |
| + |
| + virtual void WillSyncOnRT(SharedRendererState* functor) = 0; |
| + virtual void DidSyncOnRT(SharedRendererState* functor) = 0; |
| + virtual void WillProcessOnRT(SharedRendererState* functor) = 0; |
| + virtual void DidProcessOnRT(SharedRendererState* functor) = 0; |
| + virtual void WillDrawOnRT(SharedRendererState* functor) = 0; |
| + virtual void DidDrawOnRT(SharedRendererState* functor) = 0; |
| +}; |
| + |
| +class FakeWindow { |
| + public: |
| + FakeWindow(BrowserViewRenderer* view, |
| + WindowHooks* hooks, |
| + gfx::Rect location); |
| + ~FakeWindow(); |
| + |
| + void Detach(); |
| + |
| + // BrowserViewRendererClient methods. |
| + void RequestDrawGL(bool wait_for_completion); |
| + void PostInvalidate(); |
| + |
| + private: |
| + class ScopedMakeCurrent; |
| + |
| + void OnDrawHardware(); |
| + void CheckCurrentlyOnUIThread(); |
| + void CreateRenderThreadIfNeeded(); |
| + |
| + void InitializeOnRT(base::WaitableEvent* sync); |
| + void DestroyOnRT(base::WaitableEvent* sync); |
| + void ProcessFunctorOnRT(base::WaitableEvent* sync); |
| + void DrawFunctorOnRT(base::WaitableEvent* sync); |
| + void CheckCurrentlyOnRT(); |
| + |
| + // const so can be used on both threads. |
| + BrowserViewRenderer* const view_; |
| + WindowHooks* const hooks_; |
| + const gfx::Size surface_size_; |
| + |
| + // UI on |
|
hush (inactive)
2014/12/10 22:41:38
on UI?
boliu
2014/12/10 23:14:11
UI thread only memebers.
|
| + gfx::Rect location_; |
| + bool on_draw_hardware_pending_; |
| + base::SequenceChecker ui_checker_; |
| + |
| + // Render thread members. |
| + scoped_ptr<base::Thread> render_thread_; |
| + base::SequenceChecker rt_checker_; |
| + SharedRendererState* functor_; |
| + scoped_refptr<base::SingleThreadTaskRunner> render_thread_loop_; |
| + scoped_refptr<gfx::GLSurface> surface_; |
| + scoped_refptr<gfx::GLContext> context_; |
| + bool context_current_; |
| + |
| + base::WeakPtrFactory<FakeWindow> weak_ptr_factory_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(FakeWindow); |
| +}; |
| + |
| +} // namespace android_webview |
| + |
| +#endif // ANDROID_WEBVIEW_BROWSER_TEST_FAKE_WINDOW_H_ |