browser_postlogin_params.cc 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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 "chromeos/startup/browser_postlogin_params.h"
  5. #include <string>
  6. #include "chromeos/startup/startup.h"
  7. #include "third_party/abseil-cpp/absl/types/optional.h"
  8. namespace chromeos {
  9. namespace {
  10. // Reads and parses the post-login data to BrowserPostLoginParams.
  11. // If data is missing, or failed to parse, returns a null StructPtr.
  12. crosapi::mojom::BrowserPostLoginParamsPtr ReadStartupBrowserPostLoginParams() {
  13. absl::optional<std::string> content = ReadPostLoginData();
  14. if (!content)
  15. return {};
  16. crosapi::mojom::BrowserPostLoginParamsPtr result;
  17. if (!crosapi::mojom::BrowserPostLoginParams::Deserialize(
  18. content->data(), content->size(), &result)) {
  19. LOG(ERROR) << "Failed to parse post-login data";
  20. return {};
  21. }
  22. return result;
  23. }
  24. } // namespace
  25. BrowserPostLoginParams::BrowserPostLoginParams()
  26. : postlogin_params_(ReadStartupBrowserPostLoginParams()) {
  27. if (!postlogin_params_) {
  28. LOG(WARNING) << "BrowserPostLoginParams is not set. "
  29. << "This message should not appear except for testing.";
  30. postlogin_params_ = crosapi::mojom::BrowserPostLoginParams::New();
  31. }
  32. }
  33. // static
  34. void BrowserPostLoginParams::SetPostLoginParamsForTests(
  35. crosapi::mojom::BrowserPostLoginParamsPtr postlogin_params) {
  36. GetInstance()->postlogin_params_ = std::move(postlogin_params);
  37. }
  38. // static
  39. const crosapi::mojom::BrowserPostLoginParams* BrowserPostLoginParams::Get() {
  40. return GetInstance()->postlogin_params_.get();
  41. }
  42. // static
  43. BrowserPostLoginParams* BrowserPostLoginParams::GetInstance() {
  44. static base::NoDestructor<BrowserPostLoginParams> browser_postlogin_params;
  45. return browser_postlogin_params.get();
  46. }
  47. } // namespace chromeos