app_state_tracker.cc 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // Copyright 2015 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 "chromecast/crash/app_state_tracker.h"
  5. #include "base/no_destructor.h"
  6. #include "chromecast/crash/cast_crash_storage.h"
  7. namespace {
  8. struct CurrentAppState {
  9. std::string previous_app;
  10. std::string current_app;
  11. std::string last_launched_app;
  12. std::string stadia_session_id;
  13. };
  14. CurrentAppState* GetAppState() {
  15. static base::NoDestructor<CurrentAppState> app_state;
  16. return app_state.get();
  17. }
  18. } // namespace
  19. namespace chromecast {
  20. // static
  21. std::string AppStateTracker::GetLastLaunchedApp() {
  22. return GetAppState()->last_launched_app;
  23. }
  24. // static
  25. std::string AppStateTracker::GetCurrentApp() {
  26. return GetAppState()->current_app;
  27. }
  28. // static
  29. std::string AppStateTracker::GetPreviousApp() {
  30. return GetAppState()->previous_app;
  31. }
  32. // static
  33. std::string AppStateTracker::GetStadiaSessionId() {
  34. return GetAppState()->stadia_session_id;
  35. }
  36. // static
  37. void AppStateTracker::SetLastLaunchedApp(const std::string& app_id) {
  38. GetAppState()->last_launched_app = app_id;
  39. CastCrashStorage::GetInstance()->SetLastLaunchedApp(app_id);
  40. }
  41. // static
  42. void AppStateTracker::SetCurrentApp(const std::string& app_id) {
  43. CurrentAppState* app_state = GetAppState();
  44. app_state->previous_app = app_state->current_app;
  45. app_state->current_app = app_id;
  46. CastCrashStorage::GetInstance()->SetCurrentApp(app_id);
  47. CastCrashStorage::GetInstance()->SetPreviousApp(app_state->previous_app);
  48. }
  49. // static
  50. void AppStateTracker::SetPreviousApp(const std::string& app_id) {
  51. GetAppState()->previous_app = app_id;
  52. CastCrashStorage::GetInstance()->SetPreviousApp(app_id);
  53. }
  54. // static
  55. void AppStateTracker::SetStadiaSessionId(const std::string& stadia_session_id) {
  56. if (!stadia_session_id.empty()) {
  57. GetAppState()->stadia_session_id = stadia_session_id;
  58. CastCrashStorage::GetInstance()->SetStadiaSessionId(stadia_session_id);
  59. } else {
  60. GetAppState()->stadia_session_id.clear();
  61. CastCrashStorage::GetInstance()->ClearStadiaSessionId();
  62. }
  63. }
  64. } // namespace chromecast