application_info.cc 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // Copyright (c) 2013 GitHub, Inc.
  2. // Use of this source code is governed by the MIT license that can be
  3. // found in the LICENSE file.
  4. #include "atom/common/application_info.h"
  5. #include "atom/browser/browser.h"
  6. #include "atom/common/atom_version.h"
  7. #include "base/no_destructor.h"
  8. #include "base/strings/stringprintf.h"
  9. #include "chrome/common/chrome_version.h"
  10. #include "content/public/common/user_agent.h"
  11. namespace atom {
  12. namespace {
  13. base::NoDestructor<std::string> g_overridden_application_name;
  14. base::NoDestructor<std::string> g_overridden_application_version;
  15. } // namespace
  16. // name
  17. void OverrideApplicationName(const std::string& name) {
  18. *g_overridden_application_name = name;
  19. }
  20. std::string GetOverriddenApplicationName() {
  21. return *g_overridden_application_name;
  22. }
  23. // version
  24. void OverrideApplicationVersion(const std::string& version) {
  25. *g_overridden_application_version = version;
  26. }
  27. std::string GetOverriddenApplicationVersion() {
  28. return *g_overridden_application_version;
  29. }
  30. std::string GetApplicationUserAgent() {
  31. // Construct user agent string.
  32. Browser* browser = Browser::Get();
  33. std::string name, user_agent;
  34. if (!base::RemoveChars(browser->GetName(), " ", &name))
  35. name = browser->GetName();
  36. if (name == ATOM_PRODUCT_NAME) {
  37. user_agent = "Chrome/" CHROME_VERSION_STRING " " ATOM_PRODUCT_NAME
  38. "/" ATOM_VERSION_STRING;
  39. } else {
  40. user_agent = base::StringPrintf(
  41. "%s/%s Chrome/%s " ATOM_PRODUCT_NAME "/" ATOM_VERSION_STRING,
  42. name.c_str(), browser->GetVersion().c_str(), CHROME_VERSION_STRING);
  43. }
  44. return content::BuildUserAgentFromProduct(user_agent);
  45. }
  46. } // namespace atom