Chromium Code Reviews| Index: ui/views/widget/desktop_aura/desktop_factory_ozone.cc |
| diff --git a/ui/views/widget/desktop_aura/desktop_factory_ozone.cc b/ui/views/widget/desktop_aura/desktop_factory_ozone.cc |
| index e0a44890bc217a53a287c6fb9e35b833805caccc..1f7cc804b814ae93aa4fde44e09512821ff50f5e 100644 |
| --- a/ui/views/widget/desktop_aura/desktop_factory_ozone.cc |
| +++ b/ui/views/widget/desktop_aura/desktop_factory_ozone.cc |
| @@ -4,26 +4,36 @@ |
| #include "ui/views/widget/desktop_aura/desktop_factory_ozone.h" |
| +#include <memory> |
| + |
| #include "base/logging.h" |
| +#include "ui/ozone/platform_object.h" |
| namespace views { |
| // static |
| -DesktopFactoryOzone* DesktopFactoryOzone::impl_ = NULL; |
| +DesktopFactoryOzone* DesktopFactoryOzone::impl_ = nullptr; |
| DesktopFactoryOzone::DesktopFactoryOzone() { |
| + DCHECK(!impl_) << "There should only be a single DesktopFactoryOzone."; |
| + impl_ = this; |
| } |
| DesktopFactoryOzone::~DesktopFactoryOzone() { |
| + DCHECK_EQ(impl_, this); |
| + impl_ = nullptr; |
| } |
| DesktopFactoryOzone* DesktopFactoryOzone::GetInstance() { |
| - CHECK(impl_) << "DesktopFactoryOzone accessed before constructed"; |
| + if (!impl_) { |
| + std::unique_ptr<DesktopFactoryOzone> factory = |
| + ui::PlatformObject<DesktopFactoryOzone>::Create(); |
| + |
| + // TODO(tonikitoo): Currently need to leak this object. |
|
Michael Forney
2016/06/06 20:08:21
I wasn't sure about this, but it looks like this i
|
| + DesktopFactoryOzone* leaky = factory.release(); |
| + DCHECK_EQ(impl_, leaky); |
| + } |
| return impl_; |
| } |
| -void DesktopFactoryOzone::SetInstance(DesktopFactoryOzone* impl) { |
| - impl_ = impl; |
| -} |
| - |
| } // namespace views |