| // Copyright 2016 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. |
| |
| #ifndef CHROMECAST_BASE_INIT_COMMAND_LINE_SHLIB_H_ |
| #define CHROMECAST_BASE_INIT_COMMAND_LINE_SHLIB_H_ |
| |
| #include <string> |
| #include <vector> |
| |
| namespace chromecast { |
| |
| // A utility function which initializes command line flags and logging. It is |
| // intended to be called at the entry point of a shared library. |
| // |
| // When doing a component build, calls to this function will be a no-op. |
| // cast_shell will initialize the single global instance of base::CommandLine, |
| // which lives in libbase.so. For a non-component build, each shared lib will |
| // statically link its own instance of base::CommandLine, and will initialize |
| // it here on the initial call. Every subsequent call from within the same |
| // library will be a no-op. |
| // |
| // THREAD SAFTEY: Accessing the CommandLine instance for this process is |
| // technically not threadsafe when using the component build. However, the |
| // instance is initialized on the main thread before any other threads are |
| // started (see content/app/content_main_runner_impl.cc), so accessing this |
| // instance on those threads for read-operations is safe in practice. |
| void InitCommandLineShlib(const std::vector<std::string>& argv); |
| |
| } // namespace chromecast |
| |
| #endif // CHROMECAST_BASE_INIT_COMMAND_LINE_SHLIB_H_ |