optimization_guide_util.cc 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // Copyright 2019 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/optimization_guide/core/optimization_guide_util.h"
  5. #include "base/containers/flat_set.h"
  6. #include "base/notreached.h"
  7. #include "build/build_config.h"
  8. #include "components/optimization_guide/core/optimization_guide_decision.h"
  9. #include "components/optimization_guide/core/optimization_guide_enums.h"
  10. #include "components/optimization_guide/core/optimization_guide_features.h"
  11. #include "net/base/url_util.h"
  12. #include "url/url_canon.h"
  13. namespace {
  14. optimization_guide::proto::Platform GetPlatform() {
  15. #if BUILDFLAG(IS_WIN)
  16. return optimization_guide::proto::PLATFORM_WINDOWS;
  17. #elif BUILDFLAG(IS_IOS)
  18. return optimization_guide::proto::PLATFORM_IOS;
  19. #elif BUILDFLAG(IS_MAC)
  20. return optimization_guide::proto::PLATFORM_MAC;
  21. #elif BUILDFLAG(IS_CHROMEOS)
  22. return optimization_guide::proto::PLATFORM_CHROMEOS;
  23. #elif BUILDFLAG(IS_ANDROID)
  24. return optimization_guide::proto::PLATFORM_ANDROID;
  25. #elif BUILDFLAG(IS_LINUX)
  26. return optimization_guide::proto::PLATFORM_LINUX;
  27. #else
  28. return optimization_guide::proto::PLATFORM_UNKNOWN;
  29. #endif
  30. }
  31. } // namespace
  32. namespace optimization_guide {
  33. bool IsHostValidToFetchFromRemoteOptimizationGuide(const std::string& host) {
  34. if (net::HostStringIsLocalhost(host))
  35. return false;
  36. url::CanonHostInfo host_info;
  37. std::string canonicalized_host(net::CanonicalizeHost(host, &host_info));
  38. if (host_info.IsIPAddress() ||
  39. !net::IsCanonicalizedHostCompliant(canonicalized_host)) {
  40. return false;
  41. }
  42. return true;
  43. }
  44. std::string GetStringForOptimizationGuideDecision(
  45. OptimizationGuideDecision decision) {
  46. switch (decision) {
  47. case OptimizationGuideDecision::kUnknown:
  48. return "Unknown";
  49. case OptimizationGuideDecision::kTrue:
  50. return "True";
  51. case OptimizationGuideDecision::kFalse:
  52. return "False";
  53. }
  54. NOTREACHED();
  55. return std::string();
  56. }
  57. optimization_guide::proto::OriginInfo GetClientOriginInfo() {
  58. optimization_guide::proto::OriginInfo origin_info;
  59. origin_info.set_platform(GetPlatform());
  60. return origin_info;
  61. }
  62. } // namespace optimization_guide