| 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 #ifndef ANDROID_WEBVIEW_BROWSER_TEST_FAKE_WINDOW_H_ | 5 #ifndef ANDROID_WEBVIEW_BROWSER_TEST_FAKE_WINDOW_H_ | 
| 6 #define ANDROID_WEBVIEW_BROWSER_TEST_FAKE_WINDOW_H_ | 6 #define ANDROID_WEBVIEW_BROWSER_TEST_FAKE_WINDOW_H_ | 
| 7 | 7 | 
| 8 #include <map> | 8 #include <map> | 
| 9 | 9 | 
|  | 10 #include "android_webview/public/browser/draw_gl.h" | 
| 10 #include "base/memory/weak_ptr.h" | 11 #include "base/memory/weak_ptr.h" | 
| 11 #include "base/sequence_checker.h" | 12 #include "base/sequence_checker.h" | 
| 12 #include "base/single_thread_task_runner.h" | 13 #include "base/single_thread_task_runner.h" | 
| 13 #include "ui/gfx/geometry/rect.h" | 14 #include "ui/gfx/geometry/rect.h" | 
| 14 #include "ui/gl/gl_context.h" | 15 #include "ui/gl/gl_context.h" | 
| 15 #include "ui/gl/gl_surface.h" | 16 #include "ui/gl/gl_surface.h" | 
| 16 | 17 | 
| 17 namespace base { | 18 namespace base { | 
| 18 class Thread; | 19 class Thread; | 
| 19 class WaitableEvent; | 20 class WaitableEvent; | 
| 20 } | 21 } | 
| 21 | 22 | 
| 22 namespace android_webview { | 23 namespace android_webview { | 
| 23 | 24 | 
| 24 class BrowserViewRenderer; | 25 class BrowserViewRenderer; | 
| 25 class SharedRendererState; | 26 class SharedRendererState; | 
| 26 | 27 | 
| 27 class WindowHooks { | 28 class WindowHooks { | 
| 28  public: | 29  public: | 
| 29   virtual ~WindowHooks() {} | 30   virtual ~WindowHooks() {} | 
| 30 | 31 | 
| 31   virtual void WillOnDraw() = 0; | 32   virtual void WillOnDraw() = 0; | 
| 32   virtual void DidOnDraw(bool success) = 0; | 33   virtual void DidOnDraw(bool success) = 0; | 
| 33 | 34 | 
| 34   virtual void WillSyncOnRT(SharedRendererState* functor) = 0; | 35   virtual void WillSyncOnRT(SharedRendererState* functor) = 0; | 
| 35   virtual void DidSyncOnRT(SharedRendererState* functor) = 0; | 36   virtual void DidSyncOnRT(SharedRendererState* functor) = 0; | 
| 36   virtual void WillProcessOnRT(SharedRendererState* functor) = 0; | 37   virtual void WillProcessOnRT(SharedRendererState* functor) = 0; | 
| 37   virtual void DidProcessOnRT(SharedRendererState* functor) = 0; | 38   virtual void DidProcessOnRT(SharedRendererState* functor) = 0; | 
| 38   virtual void WillDrawOnRT(SharedRendererState* functor) = 0; | 39   virtual void SetParentDrawConstraints(AwDrawGLInfo& draw_info) = 0; | 
|  | 40   virtual bool WillDrawOnRT(SharedRendererState* functor) = 0; | 
| 39   virtual void DidDrawOnRT(SharedRendererState* functor) = 0; | 41   virtual void DidDrawOnRT(SharedRendererState* functor) = 0; | 
|  | 42   virtual bool WillWaitForModeDrawToFinish() = 0; | 
| 40 }; | 43 }; | 
| 41 | 44 | 
| 42 class FakeWindow { | 45 class FakeWindow { | 
| 43  public: | 46  public: | 
| 44   FakeWindow(BrowserViewRenderer* view, | 47   FakeWindow(BrowserViewRenderer* view, | 
| 45              WindowHooks* hooks, | 48              WindowHooks* hooks, | 
| 46              gfx::Rect location); | 49              gfx::Rect location, | 
|  | 50              bool will_wait_for_mode_draw_to_finish); | 
| 47   ~FakeWindow(); | 51   ~FakeWindow(); | 
| 48 | 52 | 
| 49   void Detach(); | 53   void Detach(); | 
| 50 | 54 | 
| 51   // BrowserViewRendererClient methods. | 55   // BrowserViewRendererClient methods. | 
| 52   void RequestDrawGL(bool wait_for_completion); | 56   void RequestDrawGL(bool wait_for_completion); | 
| 53   void PostInvalidate(); | 57   void PostInvalidate(); | 
|  | 58   const gfx::Size& surface_size() { return surface_size_; } | 
| 54 | 59 | 
| 55  private: | 60  private: | 
| 56   class ScopedMakeCurrent; | 61   class ScopedMakeCurrent; | 
| 57 | 62 | 
| 58   void OnDrawHardware(); | 63   void OnDrawHardware(); | 
| 59   void CheckCurrentlyOnUIThread(); | 64   void CheckCurrentlyOnUIThread(); | 
| 60   void CreateRenderThreadIfNeeded(); | 65   void CreateRenderThreadIfNeeded(); | 
| 61 | 66 | 
| 62   void InitializeOnRT(base::WaitableEvent* sync); | 67   void InitializeOnRT(base::WaitableEvent* sync); | 
| 63   void DestroyOnRT(base::WaitableEvent* sync); | 68   void DestroyOnRT(base::WaitableEvent* sync); | 
| 64   void ProcessFunctorOnRT(base::WaitableEvent* sync); | 69   void ProcessFunctorOnRT(base::WaitableEvent* sync); | 
| 65   void DrawFunctorOnRT(base::WaitableEvent* sync); | 70   void DrawFunctorOnRT(base::WaitableEvent* sync); | 
| 66   void CheckCurrentlyOnRT(); | 71   void CheckCurrentlyOnRT(); | 
| 67 | 72 | 
| 68   // const so can be used on both threads. | 73   // const so can be used on both threads. | 
| 69   BrowserViewRenderer* const view_; | 74   BrowserViewRenderer* const view_; | 
| 70   WindowHooks* const hooks_; | 75   WindowHooks* const hooks_; | 
| 71   const gfx::Size surface_size_; | 76   const gfx::Size surface_size_; | 
|  | 77   const bool will_wait_for_mode_draw_to_finish_; | 
| 72 | 78 | 
| 73   // UI thread members. | 79   // UI thread members. | 
| 74   gfx::Rect location_; | 80   gfx::Rect location_; | 
| 75   bool on_draw_hardware_pending_; | 81   bool on_draw_hardware_pending_; | 
| 76   base::SequenceChecker ui_checker_; | 82   base::SequenceChecker ui_checker_; | 
| 77 | 83 | 
| 78   // Render thread members. | 84   // Render thread members. | 
| 79   scoped_ptr<base::Thread> render_thread_; | 85   scoped_ptr<base::Thread> render_thread_; | 
| 80   base::SequenceChecker rt_checker_; | 86   base::SequenceChecker rt_checker_; | 
| 81   SharedRendererState* functor_; | 87   SharedRendererState* functor_; | 
| 82   scoped_refptr<base::SingleThreadTaskRunner> render_thread_loop_; | 88   scoped_refptr<base::SingleThreadTaskRunner> render_thread_loop_; | 
| 83   scoped_refptr<gfx::GLSurface> surface_; | 89   scoped_refptr<gfx::GLSurface> surface_; | 
| 84   scoped_refptr<gfx::GLContext> context_; | 90   scoped_refptr<gfx::GLContext> context_; | 
| 85   bool context_current_; | 91   bool context_current_; | 
| 86 | 92 | 
| 87   base::WeakPtrFactory<FakeWindow> weak_ptr_factory_; | 93   base::WeakPtrFactory<FakeWindow> weak_ptr_factory_; | 
| 88 | 94 | 
| 89   DISALLOW_COPY_AND_ASSIGN(FakeWindow); | 95   DISALLOW_COPY_AND_ASSIGN(FakeWindow); | 
| 90 }; | 96 }; | 
| 91 | 97 | 
| 92 }  // namespace android_webview | 98 }  // namespace android_webview | 
| 93 | 99 | 
| 94 #endif  // ANDROID_WEBVIEW_BROWSER_TEST_FAKE_WINDOW_H_ | 100 #endif  // ANDROID_WEBVIEW_BROWSER_TEST_FAKE_WINDOW_H_ | 
| OLD | NEW | 
|---|