| Index: ui/ozone/public/ozone_client.cc
|
| diff --git a/ui/ozone/public/ozone_client.cc b/ui/ozone/public/ozone_client.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c6205c22eb42a031a536a82b0b4431c4588c6295
|
| --- /dev/null
|
| +++ b/ui/ozone/public/ozone_client.cc
|
| @@ -0,0 +1,70 @@
|
| +// Copyright 2015 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "base/command_line.h"
|
| +#include "base/lazy_instance.h"
|
| +#include "base/logging.h"
|
| +#include "base/trace_event/trace_event.h"
|
| +#include "ui/ozone/platform_object.h"
|
| +#include "ui/ozone/platform_selection.h"
|
| +#include "ui/ozone/public/ozone_client.h"
|
| +#include "ui/ozone/public/ozone_platform.h"
|
| +#include "ui/ozone/public/ozone_switches.h"
|
| +
|
| +namespace ui {
|
| +
|
| +namespace {
|
| +
|
| +OzoneClient* g_instance = nullptr;
|
| +
|
| +} // namespace
|
| +
|
| +OzoneClient::OzoneClient() {
|
| + DCHECK(!g_instance) << "There should only be a single OzoneClient.";
|
| + g_instance = this;
|
| +}
|
| +
|
| +OzoneClient::~OzoneClient() {
|
| + DCHECK_EQ(g_instance, this);
|
| + g_instance = nullptr;
|
| +}
|
| +
|
| +// static
|
| +void OzoneClient::InitializeForUI() {
|
| + if (g_instance)
|
| + return;
|
| +
|
| + CreateInstance();
|
| + g_instance->InitializeUI();
|
| +}
|
| +
|
| +// static
|
| +void OzoneClient::InitializeForRenderer() {
|
| + if (g_instance)
|
| + return;
|
| +
|
| + CreateInstance();
|
| + g_instance->InitializeRenderer();
|
| +}
|
| +
|
| +// static
|
| +OzoneClient* OzoneClient::GetInstance() {
|
| + DCHECK(g_instance) << "OzoneClient is not initialized";
|
| + return g_instance;
|
| +}
|
| +
|
| +// static
|
| +void OzoneClient::CreateInstance() {
|
| + if (!g_instance) {
|
| + TRACE_EVENT1("ozone", "OzoneClient::CreateInstance", "platform",
|
| + GetOzonePlatformName());
|
| + scoped_ptr<OzoneClient> platform = PlatformObject<OzoneClient>::Create();
|
| +
|
| + // TODO(spang): Currently need to leak this object.
|
| + OzoneClient* pl = platform.release();
|
| + DCHECK_EQ(g_instance, pl);
|
| + }
|
| +}
|
| +
|
| +} // namespace ui
|
|
|