daily_use_case_impl.cc 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. // Copyright 2022 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 "ash/components/device_activity/daily_use_case_impl.h"
  5. #include "ash/components/device_activity/fresnel_pref_names.h"
  6. #include "ash/components/device_activity/fresnel_service.pb.h"
  7. #include "base/strings/stringprintf.h"
  8. #include "base/time/time.h"
  9. #include "components/prefs/pref_service.h"
  10. #include "components/version_info/channel.h"
  11. #include "third_party/private_membership/src/private_membership_rlwe_client.h"
  12. namespace ash {
  13. namespace device_activity {
  14. namespace psm_rlwe = private_membership::rlwe;
  15. DailyUseCaseImpl::DailyUseCaseImpl(
  16. const std::string& psm_device_active_secret,
  17. const ChromeDeviceMetadataParameters& chrome_passed_device_params,
  18. PrefService* local_state)
  19. : DeviceActiveUseCase(psm_device_active_secret,
  20. chrome_passed_device_params,
  21. prefs::kDeviceActiveLastKnownDailyPingTimestamp,
  22. psm_rlwe::RlweUseCase::CROS_FRESNEL_DAILY,
  23. local_state) {}
  24. DailyUseCaseImpl::~DailyUseCaseImpl() = default;
  25. std::string DailyUseCaseImpl::GenerateUTCWindowIdentifier(base::Time ts) const {
  26. base::Time::Exploded exploded;
  27. ts.UTCExplode(&exploded);
  28. return base::StringPrintf("%04d%02d%02d", exploded.year, exploded.month,
  29. exploded.day_of_month);
  30. }
  31. ImportDataRequest DailyUseCaseImpl::GenerateImportRequestBody() {
  32. std::string psm_id_str = GetPsmIdentifier().value().sensitive_id();
  33. std::string window_id_str = GetWindowIdentifier().value();
  34. // Generate Fresnel PSM import request body.
  35. device_activity::ImportDataRequest import_request;
  36. import_request.set_window_identifier(window_id_str);
  37. import_request.set_plaintext_identifier(psm_id_str);
  38. import_request.set_use_case(GetPsmUseCase());
  39. // Create fresh |DeviceMetadata| object.
  40. // Note every dimension added to this proto must be approved by privacy.
  41. DeviceMetadata* device_metadata = import_request.mutable_device_metadata();
  42. device_metadata->set_chromeos_version(GetChromeOSVersion());
  43. device_metadata->set_chromeos_channel(GetChromeOSChannel());
  44. device_metadata->set_market_segment(GetMarketSegment());
  45. // TODO(hirthanan): This is used for debugging purposes until crbug/1289722
  46. // has launched.
  47. device_metadata->set_hardware_id(GetFullHardwareClass());
  48. return import_request;
  49. }
  50. } // namespace device_activity
  51. } // namespace ash