Home | History | Annotate | Download | only in native
      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
      3 // found in the LICENSE file.
      4 
      5 #include "base/macros.h"
      6 #include "base/memory/scoped_ptr.h"
      7 #include "ui/views/test/views_test_base.h"
      8 
      9 namespace views {
     10 
     11 class NativeViewHost;
     12 class NativeViewHostWrapper;
     13 class Widget;
     14 
     15 namespace test {
     16 
     17 // Base class for NativeViewHost tests on different platforms.
     18 class NativeViewHostTestBase : public ViewsTestBase {
     19  public:
     20   NativeViewHostTestBase();
     21   virtual ~NativeViewHostTestBase();
     22 
     23   // Create the |toplevel_| widget.
     24   void CreateTopLevel();
     25 
     26   // Create a testing |host_| that tracks destructor calls.
     27   void CreateTestingHost();
     28 
     29   // The number of times a host created by CreateHost() has been destroyed.
     30   int host_destroyed_count() { return host_destroyed_count_; }
     31   void ResetHostDestroyedCount() { host_destroyed_count_ = 0; }
     32 
     33   // Create a child widget whose native parent is |native_parent_view|, uses
     34   // |contents_view|, and is attached to |host| which is added as a child to
     35   // |parent_view|. This effectively borrows the native content view from a
     36   // newly created child Widget, and attaches it to |host|.
     37   Widget* CreateChildForHost(gfx::NativeView native_parent_view,
     38                              View* parent_view,
     39                              View* contents_view,
     40                              NativeViewHost* host);
     41 
     42   Widget* toplevel() { return toplevel_.get(); }
     43   void DestroyTopLevel();
     44 
     45   NativeViewHost* host() { return host_.get(); }
     46   void DestroyHost();
     47   NativeViewHost* ReleaseHost();
     48 
     49   NativeViewHostWrapper* GetNativeWrapper();
     50 
     51  private:
     52   class NativeViewHostTesting;
     53 
     54   scoped_ptr<Widget> toplevel_;
     55   scoped_ptr<NativeViewHost> host_;
     56   int host_destroyed_count_;
     57 
     58   DISALLOW_COPY_AND_ASSIGN(NativeViewHostTestBase);
     59 };
     60 
     61 }  // namespace test
     62 }  // namespace views
     63