146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// found in the LICENSE file. 446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "ui/ozone/platform_selection.h" 6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/command_line.h" 846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "base/logging.h" 946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ui/ozone/platform_list.h" 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "ui/ozone/public/ozone_switches.h" 1146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 1246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace ui { 1346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 1446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)namespace { 1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 1646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)// Returns the name of the platform to use (value of --ozone-platform flag). 1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)std::string GetPlatformName() { 1846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // The first platform is the default. 1946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kOzonePlatform) && 2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) kPlatformCount > 0) 2146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) return kPlatformNames[0]; 2246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) return CommandLine::ForCurrentProcess()->GetSwitchValueASCII( 2346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) switches::kOzonePlatform); 2446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 2546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 2646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)int g_selected_platform = -1; 2746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} // namespace 2946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 3046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)int GetOzonePlatformId() { 3146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) if (g_selected_platform >= 0) 3246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) return g_selected_platform; 3346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 3446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) std::string platform_name = GetPlatformName(); 3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 3646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) // Search for a matching platform in the list. 3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) for (int platform_id = 0; platform_id < kPlatformCount; ++platform_id) { 3846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) if (platform_name == kPlatformNames[platform_id]) { 3946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) g_selected_platform = platform_id; 4046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) return g_selected_platform; 4146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) } 4246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) } 4346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 4446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) LOG(FATAL) << "Invalid ozone platform: " << platform_name; 4546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) return -1; // not reached 4646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 4746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 4846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)const char* GetOzonePlatformName() { 4946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) return kPlatformNames[GetOzonePlatformId()]; 5046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} 5146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) 5246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)} // namespace ui 53