Index: chromecast/crash/app_state_tracker.cc |
diff --git a/chromecast/crash/app_state_tracker.cc b/chromecast/crash/app_state_tracker.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b563ece66cdb1c5993fe6ca720881ab07d98eda9 |
--- /dev/null |
+++ b/chromecast/crash/app_state_tracker.cc |
@@ -0,0 +1,63 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chromecast/crash/app_state_tracker.h" |
+ |
+#include "base/lazy_instance.h" |
+#include "chromecast/crash/cast_crash_keys.h" |
+ |
+namespace { |
+ |
+struct CurrentAppState { |
+ std::string previous_app; |
+ std::string current_app; |
+ std::string last_launched_app; |
+}; |
+ |
+base::LazyInstance<CurrentAppState> g_app_state = LAZY_INSTANCE_INITIALIZER; |
+ |
+CurrentAppState* GetAppState() { |
+ return g_app_state.Pointer(); |
+} |
+ |
+} // namespace |
+ |
+namespace chromecast { |
+ |
+// static |
+std::string AppStateTracker::GetLastLaunchedApp() { |
+ return GetAppState()->last_launched_app; |
+} |
+ |
+// static |
+std::string AppStateTracker::GetCurrentApp() { |
+ return GetAppState()->current_app; |
+} |
+ |
+// static |
+std::string AppStateTracker::GetPreviousApp() { |
+ return GetAppState()->previous_app; |
+} |
+ |
+// static |
+void AppStateTracker::SetLastLaunchedApp(const std::string& app_id) { |
+ GetAppState()->last_launched_app = app_id; |
+ |
+ // TODO(slan): Currently SetCrashKeyValue is a no-op on chromecast until |
gunsch
2015/06/12 00:37:09
This would be a pretty exciting follow-up, btw. We
slan
2015/06/15 17:01:45
b/21815373
|
+ // we add call to InitCrashKeys |
+ base::debug::SetCrashKeyValue(crash_keys::kLastApp, app_id); |
+} |
+ |
+// static |
+void AppStateTracker::SetCurrentApp(const std::string& app_id) { |
+ CurrentAppState* app_state = GetAppState(); |
+ app_state->previous_app = app_state->current_app; |
+ app_state->current_app = app_id; |
+ |
+ base::debug::SetCrashKeyValue(crash_keys::kCurrentApp, app_id); |
+ base::debug::SetCrashKeyValue(crash_keys::kPreviousApp, |
+ app_state->previous_app); |
+} |
+ |
+} // namespace chromecast |