summaryrefslogtreecommitdiffstats
path: root/ui/ozone/platform/test/ozone_platform_test.cc
diff options
context:
space:
mode:
authorspang@chromium.org <spang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-31 18:22:44 +0000
committerspang@chromium.org <spang@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-31 18:22:44 +0000
commitf93c2c94d7fbe07746cc059d9ac9c27bea6e56fa (patch)
treefb586fe86db8920318a61db18c7a336aee78886f /ui/ozone/platform/test/ozone_platform_test.cc
parent6fa5f6781038c63421b203556fa74efbe78e925f (diff)
downloadchromium_src-f93c2c94d7fbe07746cc059d9ac9c27bea6e56fa.zip
chromium_src-f93c2c94d7fbe07746cc059d9ac9c27bea6e56fa.tar.gz
chromium_src-f93c2c94d7fbe07746cc059d9ac9c27bea6e56fa.tar.bz2
Implement OzonePlatform
This provides a way to select an ozone implementation to use at build time. It replaces the previous ad-hoc requirement to inject implementations of ozone interfaces somewhere during initialization, such as by overriding ContentMainDelegate::PreSandboxStartup(). That requirement made it difficult for external ozone implementations to build internal targets such as content_shell because those targets do not initialize the external ozone implementation without additional patching. Enabling external ports of chromium is one of the main goals of ozone. The OzonePlatform code is located at ui/ozone and depends on code in ui/gfx and ui/events because it must inject implementations into those components. The ozone platform is initialized from ui/aura or ui/gl, as those components need the interfaces provided by ozone in order to function. There are two in-tree platforms currently: test (image dump) and dri (libdrm-based direct rendering). The platform is selected by the setting ozone_platform gyp variable and defaults to "test". Review URL: https://codereview.chromium.org/44933002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@232170 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/ozone/platform/test/ozone_platform_test.cc')
-rw-r--r--ui/ozone/platform/test/ozone_platform_test.cc35
1 files changed, 35 insertions, 0 deletions
diff --git a/ui/ozone/platform/test/ozone_platform_test.cc b/ui/ozone/platform/test/ozone_platform_test.cc
new file mode 100644
index 0000000..6fc9beb
--- /dev/null
+++ b/ui/ozone/platform/test/ozone_platform_test.cc
@@ -0,0 +1,35 @@
+// Copyright 2013 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 "ui/ozone/platform/test/ozone_platform_test.h"
+
+#include "base/command_line.h"
+#include "base/files/file_path.h"
+#include "ui/ozone/ozone_platform.h"
+#include "ui/ozone/ozone_switches.h"
+
+namespace ui {
+
+OzonePlatformTest::OzonePlatformTest(const base::FilePath& dump_file)
+ : surface_factory_ozone_(dump_file) {}
+
+OzonePlatformTest::~OzonePlatformTest() {}
+
+gfx::SurfaceFactoryOzone* OzonePlatformTest::GetSurfaceFactoryOzone() {
+ return &surface_factory_ozone_;
+}
+
+ui::EventFactoryOzone* OzonePlatformTest::GetEventFactoryOzone() {
+ return &event_factory_ozone_;
+}
+
+OzonePlatform* CreateDefaultOzonePlatform() {
+ CommandLine* cmd = CommandLine::ForCurrentProcess();
+ base::FilePath location = base::FilePath("/dev/null");
+ if (cmd->HasSwitch(switches::kOzoneDumpFile))
+ location = cmd->GetSwitchValuePath(switches::kOzoneDumpFile);
+ return new OzonePlatformTest(location);
+}
+
+} // namespace ui