Index: base/debug/activity_tracker_unittest.cc |
diff --git a/base/debug/activity_tracker_unittest.cc b/base/debug/activity_tracker_unittest.cc |
index ac81f75b5addbf1e4ed421f2b4b019f257e71833..30a7878d86603b8d7c3112c915209178d8e0ed48 100644 |
--- a/base/debug/activity_tracker_unittest.cc |
+++ b/base/debug/activity_tracker_unittest.cc |
@@ -239,6 +239,38 @@ TEST_F(ActivityTrackerTest, ScopedTaskTest) { |
ASSERT_EQ(2U, GetGlobalUserDataMemoryCacheUsed()); |
} |
+TEST_F(ActivityTrackerTest, ExceptionTest) { |
+ GlobalActivityTracker::CreateWithLocalMemory(kMemorySize, 0, "", 3); |
+ GlobalActivityTracker* global = GlobalActivityTracker::Get(); |
+ |
+ ThreadActivityTracker* tracker = |
+ GlobalActivityTracker::Get()->GetOrCreateTrackerForCurrentThread(); |
+ ThreadActivityTracker::Snapshot snapshot; |
+ ASSERT_EQ(0U, GetGlobalUserDataMemoryCacheUsed()); |
+ |
+ ASSERT_TRUE(tracker->CreateSnapshot(&snapshot)); |
+ ASSERT_EQ(0U, snapshot.last_exception.activity_type); |
+ |
+ char origin; |
+ ActivityUserData& data = global->RecordException(&origin); |
+ data.SetString("foo", "bar"); |
+ |
+ ASSERT_TRUE(tracker->CreateSnapshot(&snapshot)); |
+ EXPECT_EQ(Activity::ACT_EXCEPTION, snapshot.last_exception.activity_type); |
+ EXPECT_EQ(reinterpret_cast<uintptr_t>(&origin), |
+ snapshot.last_exception.origin_address); |
+ |
+ void* memory = global->allocator()->GetAsArray<char>( |
+ snapshot.last_exception.user_data_ref, |
+ GlobalActivityTracker::kTypeIdUserDataRecord, |
+ PersistentMemoryAllocator::kSizeAny); |
+ ASSERT_TRUE(memory); |
+ ActivityUserData saved_data( |
+ memory, |
+ global->allocator()->GetAllocSize(snapshot.last_exception.user_data_ref)); |
+ EXPECT_EQ(data.id(), saved_data.id()); |
+} |
+ |
TEST_F(ActivityTrackerTest, CreateWithFileTest) { |
const char temp_name[] = "CreateWithFileTest"; |
ScopedTempDir temp_dir; |