Skip to content
  • ananta's avatar
    Add chrome_crash_reporter_client_win.cc to the source file list for chrome_elf · f265187b
    ananta authored
    This is in preparation for switching the exception handling in
    chrome_elf from breakpad to crashpad. I will do that in a subsequent
    patch.
    
    This patch contains the following changes.
    1. base
       Changes here are to restrict the usage of FilePath and file_util from
       the portions of the base which are referenced by crashpad and
       ChromeCrashReporterClient. These in turn end up bringing in
       dependencies on message_loop which won't work in chrome_elf.  Fixed
       logging.cc to not use file path and file util and instead use Windows
       API's to achieve the same result.  Fixed platform_thread_win.cc to
       avoid using windows_version.h as that pulls in object watcher and
       other badness.
    
    2. crash_pad_win.cc. Remove usage of PathService and avoid using
       startup_metric_utils. That pulls in registry.h which in turn pulls in
       object watcher.
    
    3. ChromeCrashReporterClient (Windows).
       Removed usage of chrome::RegisterChromeCrashKeys and instead locally
       defined a smaller version of that function. I added a TODO at the top
       here to remove these functions and the RegisterKeys function from the
       CrashClient interface, whenever scottmg's patch which avoids pre
       registration of crash keys lands. I also added a static function
       InitializeCrashReportingForProcess to this class which does the work
       for registering the process with crashpad.
    
    4. install_static.
       Added some constants to this library and a new function
       GetSwitchValueFromCommandLine to retrieve the value of a switch from
       the command line.  This is to avoid depending on shell32 via base
       command line. Added a unittest for this function.
    
    5. base\message_loop\message_pump_win.cc
       This file gets pulled in by users of platform_thread_win.cc which is
       used indirectly by lots of base code. This line
       tracked_objects::ThreadData::InitializeThreadContext(name); brings in
       the deps via TRACE_EVENT. I changed the deps to function pointers
       with CHECKs for user32 being loaded and the function pointers being
       valid to catch these in the wild.
    
    BUG=604923
    TEST=InstallStaticTest.GetSwitchValueFromCommandLineTest
    
    Review-Url: https://codereview.chromium.org/2053953002
    Cr-Commit-Position: refs/heads/master@{#400278}
    f265187b