Home | History | Annotate | Download | only in test
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "ui/compositor/test/test_compositor_host.h"
      6 
      7 #include "base/compiler_specific.h"
      8 #include "base/memory/scoped_ptr.h"
      9 #include "ui/compositor/compositor.h"
     10 #include "ui/gfx/win/window_impl.h"
     11 
     12 namespace ui {
     13 
     14 class TestCompositorHostWin : public TestCompositorHost,
     15                               public gfx::WindowImpl {
     16  public:
     17   TestCompositorHostWin(const gfx::Rect& bounds,
     18                         ui::ContextFactory* context_factory) {
     19     Init(NULL, bounds);
     20     compositor_.reset(new ui::Compositor(hwnd(), context_factory));
     21     compositor_->SetScaleAndSize(1.0f, GetSize());
     22   }
     23 
     24   virtual ~TestCompositorHostWin() {
     25     DestroyWindow(hwnd());
     26   }
     27 
     28   // Overridden from TestCompositorHost:
     29   virtual void Show() OVERRIDE {
     30     ShowWindow(hwnd(), SW_SHOWNORMAL);
     31   }
     32   virtual ui::Compositor* GetCompositor() OVERRIDE {
     33     return compositor_.get();
     34   }
     35 
     36  private:
     37   CR_BEGIN_MSG_MAP_EX(TestCompositorHostWin)
     38     CR_MSG_WM_PAINT(OnPaint)
     39   CR_END_MSG_MAP()
     40 
     41   void OnPaint(HDC dc) {
     42     compositor_->Draw();
     43     ValidateRect(hwnd(), NULL);
     44   }
     45 
     46   gfx::Size GetSize() {
     47     RECT r;
     48     GetClientRect(hwnd(), &r);
     49     return gfx::Rect(r).size();
     50   }
     51 
     52   scoped_ptr<ui::Compositor> compositor_;
     53 
     54   DISALLOW_COPY_AND_ASSIGN(TestCompositorHostWin);
     55 };
     56 
     57 TestCompositorHost* TestCompositorHost::Create(
     58     const gfx::Rect& bounds,
     59     ui::ContextFactory* context_factory) {
     60   return new TestCompositorHostWin(bounds, context_factory);
     61 }
     62 
     63 }  // namespace ui
     64