From c6933fcf7d7d3d13a0b9fb7ee2c6c59406d60003 Mon Sep 17 00:00:00 2001 From: "backer@chromium.org" Date: Tue, 25 Oct 2011 12:48:03 +0000 Subject: ui::TestCompositor::TestCompositor() constructor has been changed to take a a CompositorDelegate* as a parameter. It can be NULL to get the same behaviour as before. But some tests actually require ScheduleDraw() to cause a draw to happen, in order to test that their real delegate is doing its job. Also, we move the compositor_factory from views::Widget and aura::Desktop to ui::Compositor. BUG=101091 TEST=bots stay green Review URL: http://codereview.chromium.org/8240006 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@107103 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/gpu_browsertest.cc | 3 +-- chrome/chrome_tests.gypi | 1 + chrome/test/base/chrome_test_suite.cc | 11 +++-------- content/content_tests.gypi | 1 + content/test/content_test_suite.cc | 4 ++++ ui/aura/desktop.cc | 5 ++--- ui/aura/desktop.h | 10 ---------- ui/aura/test/aura_test_base.cc | 7 ------- ui/aura/test/test_suite.cc | 1 + ui/aura_shell/test_suite.cc | 5 +---- ui/gfx/compositor/compositor.cc | 3 +++ ui/gfx/compositor/compositor.gyp | 22 ++++++++++++++++++---- ui/gfx/compositor/compositor.h | 16 ++++++++++++++++ ui/gfx/compositor/compositor_test_support.cc | 20 ++++++++++++++++++++ ui/gfx/compositor/compositor_test_support.h | 5 +++++ ui/gfx/compositor/layer_unittest.cc | 2 +- ui/gfx/compositor/test_compositor.cc | 12 +++++++++--- ui/gfx/compositor/test_compositor.h | 5 ++++- views/run_all_unittests.cc | 5 +---- views/test/views_test_base.cc | 15 --------------- views/widget/native_widget_gtk.cc | 4 ++-- views/widget/native_widget_wayland.cc | 4 ++-- views/widget/native_widget_win.cc | 4 ++-- views/widget/widget.cc | 3 --- views/widget/widget.h | 10 ---------- 25 files changed, 97 insertions(+), 81 deletions(-) diff --git a/chrome/browser/gpu_browsertest.cc b/chrome/browser/gpu_browsertest.cc index 37b68ca..987c3de 100644 --- a/chrome/browser/gpu_browsertest.cc +++ b/chrome/browser/gpu_browsertest.cc @@ -11,12 +11,11 @@ #include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_switches.h" #include "chrome/test/base/in_process_browser_test.h" -#include "chrome/test/base/test_launcher_utils.h" #include "chrome/test/base/ui_test_utils.h" #include "content/browser/tab_contents/tab_contents.h" #include "googleurl/src/gurl.h" #include "net/base/net_util.h" -#include "ui/gfx/gl/gl_implementation.h" +#include "ui/gfx/gl/gl_switches.h" class GPUBrowserTest : public InProcessBrowserTest { protected: diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index bd20a2e..6fa82f0 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -63,6 +63,7 @@ '../testing/gmock.gyp:gmock', '../testing/gtest.gyp:gtest', '../third_party/leveldatabase/leveldatabase.gyp:leveldatabase', + '../ui/gfx/compositor/compositor.gyp:compositor_test_support', ], 'export_dependent_settings': [ 'renderer', diff --git a/chrome/test/base/chrome_test_suite.cc b/chrome/test/base/chrome_test_suite.cc index ad54d70..e5b3e70 100644 --- a/chrome/test/base/chrome_test_suite.cc +++ b/chrome/test/base/chrome_test_suite.cc @@ -27,10 +27,7 @@ #include "testing/gtest/include/gtest/gtest.h" #include "ui/base/resource/resource_bundle.h" #include "ui/base/ui_base_paths.h" - -#if defined(TOOLKIT_VIEWS) -#include "views/view.h" -#endif +#include "ui/gfx/compositor/compositor_test_support.h" #if defined(OS_MACOSX) #include "base/mac/mac_util.h" @@ -196,10 +193,8 @@ void ChromeTestSuite::Initialize() { resources_pack_path.Append(FILE_PATH_LITERAL("resources.pak")); ResourceBundle::AddDataPackToSharedInstance(resources_pack_path); -#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) - // Turn of GPU compositing in browser during unit tests. - views::View::set_use_acceleration_when_possible(false); -#endif + // Mock out the compositor on platforms that use it. + ui::CompositorTestSupport::SetupMockCompositor(); stats_filename_ = base::StringPrintf("unit_tests-%d", base::GetCurrentProcId()); diff --git a/content/content_tests.gypi b/content/content_tests.gypi index bba6e9d..ffbbd3c 100644 --- a/content/content_tests.gypi +++ b/content/content_tests.gypi @@ -15,6 +15,7 @@ '../testing/gmock.gyp:gmock', '../testing/gtest.gyp:gtest', '../third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:webkit', + '../ui/gfx/compositor/compositor.gyp:compositor_test_support', '../ui/gfx/surface/surface.gyp:surface', '../ui/ui.gyp:ui_test_support', '../webkit/support/webkit_support.gyp:appcache', diff --git a/content/test/content_test_suite.cc b/content/test/content_test_suite.cc index c962fb3..1307aaa 100644 --- a/content/test/content_test_suite.cc +++ b/content/test/content_test_suite.cc @@ -13,6 +13,7 @@ #include "content/test/test_content_client.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/base/ui_base_paths.h" +#include "ui/gfx/compositor/compositor_test_support.h" namespace { @@ -65,6 +66,9 @@ void ContentTestSuite::Initialize() { content::RegisterPathProvider(); ui::RegisterPathProvider(); + // Mock out the compositor on platforms that use it. + ui::CompositorTestSupport::SetupMockCompositor(); + testing::TestEventListeners& listeners = testing::UnitTest::GetInstance()->listeners(); listeners.Append(new TestContentClientInitializer); diff --git a/ui/aura/desktop.cc b/ui/aura/desktop.cc index bbc6e2a..d8a9c0a 100644 --- a/ui/aura/desktop.cc +++ b/ui/aura/desktop.cc @@ -42,7 +42,6 @@ static const int kDefaultHostWindowHeight = 1024; } // namespace Desktop* Desktop::instance_ = NULL; -ui::Compositor*(*Desktop::compositor_factory_)() = NULL; bool Desktop::use_fullscreen_host_window_ = false; Desktop::Desktop() @@ -62,8 +61,8 @@ Desktop::Desktop() host_->SetDesktop(this); last_mouse_location_ = host_->QueryMouseLocation(); - if (compositor_factory_) { - compositor_ = (*Desktop::compositor_factory())(); + if (ui::Compositor::compositor_factory()) { + compositor_ = (*ui::Compositor::compositor_factory())(this); } else { compositor_ = ui::Compositor::Create(this, host_->GetAcceleratedWidget(), host_->GetSize()); diff --git a/ui/aura/desktop.h b/ui/aura/desktop.h index e6b6c97..ffeed27 100644 --- a/ui/aura/desktop.h +++ b/ui/aura/desktop.h @@ -49,13 +49,6 @@ class AURA_EXPORT Desktop : public ui::CompositorDelegate, static Desktop* GetInstance(); static void DeleteInstanceForTesting(); - static void set_compositor_factory_for_testing(ui::Compositor*(*factory)()) { - compositor_factory_ = factory; - } - static ui::Compositor* (*compositor_factory())() { - return compositor_factory_; - } - static void set_use_fullscreen_host_window(bool use_fullscreen) { use_fullscreen_host_window_ = use_fullscreen; } @@ -171,9 +164,6 @@ class AURA_EXPORT Desktop : public ui::CompositorDelegate, static Desktop* instance_; - // Factory used to create Compositors. Settable by tests. - static ui::Compositor*(*compositor_factory_)(); - // If set before the Desktop is created, the host window will cover the entire // screen. Note that this can still be overridden via the // switches::kAuraHostWindowSize flag. diff --git a/ui/aura/test/aura_test_base.cc b/ui/aura/test/aura_test_base.cc index c2cff110..61ffed4 100644 --- a/ui/aura/test/aura_test_base.cc +++ b/ui/aura/test/aura_test_base.cc @@ -10,15 +10,10 @@ #include "ui/aura/desktop.h" #include "ui/aura/test/test_desktop_delegate.h" -#include "ui/gfx/compositor/test_compositor.h" namespace aura { namespace test { -static ui::Compositor* TestCreateCompositor() { - return new ui::TestCompositor(); -} - AuraTestBase::AuraTestBase() : setup_called_(false), teardown_called_(false) { @@ -26,7 +21,6 @@ AuraTestBase::AuraTestBase() OleInitialize(NULL); #endif - aura::Desktop::set_compositor_factory_for_testing(&TestCreateCompositor); // TestDesktopDelegate is owned by the desktop. new TestDesktopDelegate(); Desktop::GetInstance()->Show(); @@ -50,7 +44,6 @@ AuraTestBase::~AuraTestBase() { // Ensure that we don't use the previously-allocated static Desktop object // later -- on Linux, it holds a reference to our message loop's X connection. aura::Desktop::DeleteInstanceForTesting(); - aura::Desktop::set_compositor_factory_for_testing(NULL); } void AuraTestBase::SetUp() { diff --git a/ui/aura/test/test_suite.cc b/ui/aura/test/test_suite.cc index 11e0f3b..4c4faa6 100644 --- a/ui/aura/test/test_suite.cc +++ b/ui/aura/test/test_suite.cc @@ -29,6 +29,7 @@ void AuraTestSuite::Initialize() { // output, it'll pass regardless of the system language. ui::ResourceBundle::InitSharedInstance("en-US"); ui::CompositorTestSupport::Initialize(); + ui::CompositorTestSupport::SetupMockCompositor(); } void AuraTestSuite::Shutdown() { diff --git a/ui/aura_shell/test_suite.cc b/ui/aura_shell/test_suite.cc index 5ccb18f..07fcddc 100644 --- a/ui/aura_shell/test_suite.cc +++ b/ui/aura_shell/test_suite.cc @@ -11,15 +11,11 @@ #include "ui/base/ui_base_paths.h" #include "ui/gfx/compositor/compositor_test_support.h" #include "ui/gfx/gfx_paths.h" -#include "ui/gfx/gl/gl_implementation.h" AuraShellTestSuite::AuraShellTestSuite(int argc, char** argv) : TestSuite(argc, argv) {} void AuraShellTestSuite::Initialize() { -#if defined(OS_LINUX) - gfx::InitializeGLBindings(gfx::kGLImplementationOSMesaGL); -#endif base::TestSuite::Initialize(); gfx::RegisterPathProvider(); @@ -29,6 +25,7 @@ void AuraShellTestSuite::Initialize() { // output, it'll pass regardless of the system language. ui::ResourceBundle::InitSharedInstance("en-US"); ui::CompositorTestSupport::Initialize(); + ui::CompositorTestSupport::SetupMockCompositor(); } void AuraShellTestSuite::Shutdown() { diff --git a/ui/gfx/compositor/compositor.cc b/ui/gfx/compositor/compositor.cc index 87aa06e..388d7d9 100644 --- a/ui/gfx/compositor/compositor.cc +++ b/ui/gfx/compositor/compositor.cc @@ -16,6 +16,9 @@ TextureDrawParams::TextureDrawParams() vertically_flipped(false) { } +// static +Compositor*(*Compositor::compositor_factory_)(CompositorDelegate*) = NULL; + Compositor::Compositor(CompositorDelegate* delegate, const gfx::Size& size) : delegate_(delegate), size_(size), diff --git a/ui/gfx/compositor/compositor.gyp b/ui/gfx/compositor/compositor.gyp index 02368cf..d4ce8d5 100644 --- a/ui/gfx/compositor/compositor.gyp +++ b/ui/gfx/compositor/compositor.gyp @@ -106,8 +106,8 @@ 'target_name': 'compositor_test_support', 'type': 'static_library', 'dependencies': [ - '<(DEPTH)/webkit/support/webkit_support.gyp:webkit_support', - '<(DEPTH)/third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:webkit', + '<(DEPTH)/base/base.gyp:base', + '<(DEPTH)/skia/skia.gyp:skia', ], 'sources': [ 'compositor_test_support.cc', @@ -117,8 +117,24 @@ ['use_webkit_compositor == 1', { 'dependencies': [ '<(DEPTH)/webkit/support/webkit_support.gyp:webkit_support', + '<(DEPTH)/third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:webkit', ], }], + ['views_compositor==1', { + 'sources': [ + 'compositor.cc', + 'compositor.h', + 'layer.cc', + 'layer.h', + 'layer_animator.cc', + 'layer_animator.h', + 'layer_animator_delegate.h', + 'test_compositor.cc', + 'test_compositor.h', + 'test_texture.cc', + 'test_texture.h', + ], + }], ], }, { @@ -142,8 +158,6 @@ 'layer_animator_unittest.cc', 'layer_unittest.cc', 'run_all_unittests.cc', - 'test_compositor.cc', - 'test_compositor.h', 'test_compositor_host.h', 'test_compositor_host_linux.cc', 'test_compositor_host_win.cc', diff --git a/ui/gfx/compositor/compositor.h b/ui/gfx/compositor/compositor.h index 574fed8..4ec89da 100644 --- a/ui/gfx/compositor/compositor.h +++ b/ui/gfx/compositor/compositor.h @@ -137,6 +137,16 @@ class COMPOSITOR_EXPORT Compositor : public base::RefCounted { void RemoveObserver(CompositorObserver* observer); bool HasObserver(CompositorObserver* observer); + static void set_compositor_factory_for_testing( + ui::Compositor*(*factory)(ui::CompositorDelegate* owner)) { + compositor_factory_ = factory; + } + + static ui::Compositor* (*compositor_factory())( + ui::CompositorDelegate* owner) { + return compositor_factory_; + } + protected: Compositor(CompositorDelegate* delegate, const gfx::Size& size); virtual ~Compositor(); @@ -169,6 +179,12 @@ class COMPOSITOR_EXPORT Compositor : public base::RefCounted { ObserverList observer_list_; + // Factory used to create Compositors. Settable by tests. + // The delegate can be NULL if you don't wish to catch the ScheduleDraw() + // calls to it. + static ui::Compositor*(*compositor_factory_)( + ui::CompositorDelegate* delegate); + friend class base::RefCounted; }; diff --git a/ui/gfx/compositor/compositor_test_support.cc b/ui/gfx/compositor/compositor_test_support.cc index e72bd0c..d9e88e2 100644 --- a/ui/gfx/compositor/compositor_test_support.cc +++ b/ui/gfx/compositor/compositor_test_support.cc @@ -9,6 +9,11 @@ #include "webkit/glue/webkitplatformsupport_impl.h" #endif +#if defined(VIEWS_COMPOSITOR) +#include "ui/gfx/compositor/compositor.h" +#include "ui/gfx/compositor/test_compositor.h" +#endif + namespace ui { #if defined(USE_WEBKIT_COMPOSITOR) @@ -32,4 +37,19 @@ void CompositorTestSupport::Terminate() { #endif } +void CompositorTestSupport::SetupMockCompositor() { +#if defined(USE_WEBKIT_COMPOSITOR) + // TODO(backer): We've got dependencies in Layer that require + // WebKit support even though we're mocking the Compositor. We + // would ideally mock out these unnecessary dependencies as well. + DCHECK(g_webkit_support); +#endif + +#if defined(VIEWS_COMPOSITOR) + // Use a mock compositor that noops draws. + ui::Compositor::set_compositor_factory_for_testing( + ui::TestCompositor::Create); +#endif +} + } // namespace ui diff --git a/ui/gfx/compositor/compositor_test_support.h b/ui/gfx/compositor/compositor_test_support.h index de520a0..cd7ea2e 100644 --- a/ui/gfx/compositor/compositor_test_support.h +++ b/ui/gfx/compositor/compositor_test_support.h @@ -10,8 +10,13 @@ namespace ui { class CompositorTestSupport { public: + // Called by programs that want to use a real compositor, + // but skip the typical initialization of browser_main.cc. static void Initialize(); static void Terminate(); + + // Called by tests that want to use a mocked compositor. + static void SetupMockCompositor(); }; } // namespace ui diff --git a/ui/gfx/compositor/layer_unittest.cc b/ui/gfx/compositor/layer_unittest.cc index aa230f9..33ecee9 100644 --- a/ui/gfx/compositor/layer_unittest.cc +++ b/ui/gfx/compositor/layer_unittest.cc @@ -238,7 +238,7 @@ class LayerWithDelegateTest : public testing::Test { // Overridden from testing::Test: virtual void SetUp() OVERRIDE { - compositor_ = new TestCompositor(); + compositor_ = new TestCompositor(NULL); } virtual void TearDown() OVERRIDE { diff --git a/ui/gfx/compositor/test_compositor.cc b/ui/gfx/compositor/test_compositor.cc index f34021e..4bc6faa 100644 --- a/ui/gfx/compositor/test_compositor.cc +++ b/ui/gfx/compositor/test_compositor.cc @@ -19,9 +19,11 @@ class TestCompositorDelegate : public ui::CompositorDelegate { DISALLOW_COPY_AND_ASSIGN(TestCompositorDelegate); }; -TestCompositor::TestCompositor() - : Compositor(new TestCompositorDelegate, gfx::Size(100, 100)) { - owned_delegate_.reset(static_cast(delegate())); +TestCompositor::TestCompositor(CompositorDelegate *owner) + : Compositor((owner ? owner : new TestCompositorDelegate), + gfx::Size(100, 100)) { + if (!owner) + owned_delegate_.reset(static_cast(delegate())); } TestCompositor::~TestCompositor() { @@ -46,6 +48,10 @@ void TestCompositor::DrawTree() { #endif } +ui::Compositor* TestCompositor::Create(ui::CompositorDelegate* owner) { + return new ui::TestCompositor(owner); +} + void TestCompositor::OnWidgetSizeChanged() { } diff --git a/ui/gfx/compositor/test_compositor.h b/ui/gfx/compositor/test_compositor.h index 6af5a94..6472496 100644 --- a/ui/gfx/compositor/test_compositor.h +++ b/ui/gfx/compositor/test_compositor.h @@ -18,7 +18,7 @@ class TestCompositorDelegate; // Trivial Compositor implementation that creates Textures of type TestTexture. class TestCompositor : public ui::Compositor { public: - TestCompositor(); + explicit TestCompositor(CompositorDelegate* owner); virtual ~TestCompositor(); // ui::Compositor: @@ -28,6 +28,9 @@ class TestCompositor : public ui::Compositor { virtual void Blur(const gfx::Rect& bounds) OVERRIDE; virtual void DrawTree() OVERRIDE; + // A simple factory that creates a test compositor with a given delegate + static ui::Compositor* Create(ui::CompositorDelegate* owner); + protected: virtual void OnWidgetSizeChanged() OVERRIDE; diff --git a/views/run_all_unittests.cc b/views/run_all_unittests.cc index e9749ce..631db9e 100644 --- a/views/run_all_unittests.cc +++ b/views/run_all_unittests.cc @@ -19,11 +19,8 @@ class ViewTestSuite : public base::TestSuite { ui::RegisterPathProvider(); ui::ResourceBundle::InitSharedInstance("en-US"); -#if defined(OS_LINUX) - // Disable GPU browser compositor during unit tests. - views::View::set_use_acceleration_when_possible(false); -#endif ui::CompositorTestSupport::Initialize(); + ui::CompositorTestSupport::SetupMockCompositor(); } virtual void Shutdown() { diff --git a/views/test/views_test_base.cc b/views/test/views_test_base.cc index 264a58a..0a3568a 100644 --- a/views/test/views_test_base.cc +++ b/views/test/views_test_base.cc @@ -8,9 +8,6 @@ #include #endif -#include "ui/gfx/compositor/test_compositor.h" -#include "views/widget/widget.h" - #if defined(USE_AURA) #include "ui/aura/desktop.h" #include "ui/aura/test/test_desktop_delegate.h" @@ -18,10 +15,6 @@ namespace views { -static ui::Compositor* TestCreateCompositor() { - return new ui::TestCompositor(); -} - ViewsTestBase::ViewsTestBase() : setup_called_(false), teardown_called_(false) { @@ -29,10 +22,7 @@ ViewsTestBase::ViewsTestBase() OleInitialize(NULL); #endif #if defined(USE_AURA) - aura::Desktop::set_compositor_factory_for_testing(&TestCreateCompositor); new aura::test::TestDesktopDelegate; -#else - Widget::set_compositor_factory_for_testing(&TestCreateCompositor); #endif } @@ -60,11 +50,6 @@ void ViewsTestBase::TearDown() { teardown_called_ = true; views_delegate_.reset(); testing::Test::TearDown(); -#if defined(USE_AURA) - aura::Desktop::set_compositor_factory_for_testing(NULL); -#else - Widget::set_compositor_factory_for_testing(NULL); -#endif } void ViewsTestBase::RunPendingMessages() { diff --git a/views/widget/native_widget_gtk.cc b/views/widget/native_widget_gtk.cc index d344b1d..d9cd0dd 100644 --- a/views/widget/native_widget_gtk.cc +++ b/views/widget/native_widget_gtk.cc @@ -691,8 +691,8 @@ void NativeWidgetGtk::InitNativeWidget(const Widget::InitParams& params) { } if (View::get_use_acceleration_when_possible()) { - if (Widget::compositor_factory()) { - compositor_ = (*Widget::compositor_factory())(); + if (ui::Compositor::compositor_factory()) { + compositor_ = (*ui::Compositor::compositor_factory())(this); } else { gint width, height; gdk_drawable_get_size(window_contents_->window, &width, &height); diff --git a/views/widget/native_widget_wayland.cc b/views/widget/native_widget_wayland.cc index 0f5616e..d85db33 100644 --- a/views/widget/native_widget_wayland.cc +++ b/views/widget/native_widget_wayland.cc @@ -83,8 +83,8 @@ void NativeWidgetWayland::InitNativeWidget(const Widget::InitParams& params) { SetNativeWindowProperty(kNativeWidgetKey, this); if (View::get_use_acceleration_when_possible()) { - if (Widget::compositor_factory()) { - compositor_ = (*Widget::compositor_factory())(); + if (ui::Compositor::compositor_factory()) { + compositor_ = (*ui::Compositor::compositor_factory())(this); } else { compositor_ = ui::Compositor::Create(this, egl_window_, diff --git a/views/widget/native_widget_win.cc b/views/widget/native_widget_win.cc index 92b83ea..60dae84 100644 --- a/views/widget/native_widget_win.cc +++ b/views/widget/native_widget_win.cc @@ -1290,8 +1290,8 @@ LRESULT NativeWidgetWin::OnCreate(CREATESTRUCT* create_struct) { #if defined(VIEWS_COMPOSITOR) if (View::get_use_acceleration_when_possible()) { - if (Widget::compositor_factory()) { - compositor_ = (*Widget::compositor_factory())(); + if (ui::Compositor::compositor_factory()) { + compositor_ = (*Widget::compositor_factory())(this); } else { CRect window_rect; GetClientRect(&window_rect); diff --git a/views/widget/widget.cc b/views/widget/widget.cc index b837772..6c8dbcc 100644 --- a/views/widget/widget.cc +++ b/views/widget/widget.cc @@ -1100,9 +1100,6 @@ void Widget::DestroyRootView() { //////////////////////////////////////////////////////////////////////////////// // Widget, private: -// static -ui::Compositor*(*Widget::compositor_factory_)() = NULL; - bool Widget::ShouldReleaseCaptureOnMouseReleased() const { return true; } diff --git a/views/widget/widget.h b/views/widget/widget.h index e361c59..296cab0 100644 --- a/views/widget/widget.h +++ b/views/widget/widget.h @@ -496,13 +496,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, return non_client_view_ ? non_client_view_->client_view() : NULL; } - static void set_compositor_factory_for_testing(ui::Compositor*(*factory)()) { - compositor_factory_ = factory; - } - static ui::Compositor* (*compositor_factory())() { - return compositor_factory_; - } - const ui::Compositor* GetCompositor() const; ui::Compositor* GetCompositor(); @@ -722,9 +715,6 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, // See |is_top_level()| accessor. bool is_top_level_; - // Factory used to create Compositors. Settable by tests. - static ui::Compositor*(*compositor_factory_)(); - // Tracks whether native widget has been initialized. bool native_widget_initialized_; -- cgit v1.1