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#ifndef UI_OZONE_PLATFORM_OBJECT_INTERNAL_H_
6#define UI_OZONE_PLATFORM_OBJECT_INTERNAL_H_
7
8#include "ui/ozone/ozone_export.h"
9#include "ui/ozone/platform_constructor_list.h"
10#include "ui/ozone/platform_object.h"
11#include "ui/ozone/platform_selection.h"
12
13namespace ui {
14
15template <class T>
16scoped_ptr<T> PlatformObject<T>::Create() {
17  typedef typename PlatformConstructorList<T>::Constructor Constructor;
18
19  // Determine selected platform (from --ozone-platform flag, or default).
20  int platform = GetOzonePlatformId();
21
22  // Look up the constructor in the constructor list.
23  Constructor constructor = PlatformConstructorList<T>::kConstructors[platform];
24
25  // Call the constructor.
26  return make_scoped_ptr(constructor());
27}
28
29}  // namespace ui
30
31#endif  // UI_OZONE_PLATFORM_OBJECT_INTERNAL_H_
32