| // 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_ |