chromium/chrome/enterprise_companion/main.cc

// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "build/build_config.h"
#include "chrome/enterprise_companion/enterprise_companion.h"

#if BUILDFLAG(IS_WIN)
#include <windows.h>
#endif

#if ENTERPRISE_COMPANION_TEST_ONLY
// This symbol is normally declared in //base:test_support and defined in
// //base. Adding a dependency on //base:test_support forces the executable to
// take a dependency on libtest_trace_processor.dylib with an rpath relative to
// the executable's path. However, during integration tests this executable will
// be installed elsewhere on the filesystem (i.e. /Library/Application Support/)
// causing it to crash due to dylib resolution failure. Because the dependency
// on //base/test_support is only needed for the declaration of
// AllowCheckIsTestForTesting, it is simpler to declare it ourselves than add
// test-only code paths to the installer to ensure that the dylib is copied.
namespace base::test {
void AllowCheckIsTestForTesting();  // IN-TEST
}
#endif

void MaybeAllowCheckIsTest() {}

#if BUILDFLAG(IS_POSIX)
int main(int argc, const char* argv[]) {}
#elif BUILDFLAG(IS_WIN)
int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE prev, wchar_t*, int) {
  MaybeAllowCheckIsTest();
  // `argc` and `argv` are ignored by `base::CommandLine` for Windows. Instead,
  // the implementation parses `GetCommandLineW()` directly.
  return enterprise_companion::EnterpriseCompanionMain(0, nullptr);
}
#endif