| // Copyright 2013 The Flutter 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 "flutter/shell/platform/common/engine_switches.h" |
| |
| #include <algorithm> |
| #include <cstdlib> |
| #include <iostream> |
| #include <sstream> |
| |
| namespace flutter { |
| |
| std::vector<std::string> GetSwitchesFromEnvironment() { |
| std::vector<std::string> switches; |
| // Read engine switches from the environment in debug/profile. If release mode |
| // support is needed in the future, it should likely use a whitelist. |
| #ifndef FLUTTER_RELEASE |
| const char* switch_count_key = "FLUTTER_ENGINE_SWITCHES"; |
| const int kMaxSwitchCount = 50; |
| const char* switch_count_string = std::getenv(switch_count_key); |
| if (!switch_count_string) { |
| return switches; |
| } |
| int switch_count = std::min(kMaxSwitchCount, atoi(switch_count_string)); |
| for (int i = 1; i <= switch_count; ++i) { |
| std::ostringstream switch_key; |
| switch_key << "FLUTTER_ENGINE_SWITCH_" << i; |
| const char* switch_value = std::getenv(switch_key.str().c_str()); |
| if (switch_value) { |
| std::ostringstream switch_value_as_flag; |
| switch_value_as_flag << "--" << switch_value; |
| switches.push_back(switch_value_as_flag.str()); |
| } else { |
| std::cerr << switch_count << " keys expected from " << switch_count_key |
| << ", but " << switch_key.str() << " is missing." << std::endl; |
| } |
| } |
| #endif // !FLUTTER_RELEASE |
| return switches; |
| } |
| |
| } // namespace flutter |