Index: base/location.h |
diff --git a/base/location.h b/base/location.h |
index 2fbe62cde82dbd737cc3aa44c4faad400080d54d..91907bb700db91494a0f7de40f9ef3082f35df3f 100644 |
--- a/base/location.h |
+++ b/base/location.h |
@@ -8,8 +8,14 @@ |
#include <string> |
#include "base/base_export.h" |
+// TODO(isherman): Remove this include, and fixup downstream files that depend |
+// on it. |
#include "base/values.h" |
+namespace base { |
+class DictionaryValue; |
+} |
+ |
namespace tracked_objects { |
// Location provides basic info where of an object was constructed, or was |
@@ -58,10 +64,6 @@ class BASE_EXPORT Location { |
// Write function_name_ in HTML with '<' and '>' properly encoded. |
void WriteFunctionName(std::string* output) const; |
- // Construct a Value* representation. The caller assumes ownership of the |
- // memory in the returned instance. |
- base::DictionaryValue* ToValue() const; |
- |
private: |
const char* function_name_; |
const char* file_name_; |
@@ -69,6 +71,22 @@ class BASE_EXPORT Location { |
const void* program_counter_; |
}; |
+// Serialized representation of the Location class that can safely be passed |
+// across process boundaries. |
+struct BASE_EXPORT SerializedLocation { |
+ // The default constructor is exposed to support the IPC serialization macros. |
+ SerializedLocation(); |
+ SerializedLocation(const tracked_objects::Location& location); |
+ ~SerializedLocation(); |
+ |
+ // Writes the serialized data into the passed |dictionary|. |
+ void ToValue(base::DictionaryValue* dictionary) const; |
+ |
+ std::string file_name; |
+ std::string function_name; |
+ int line_number; |
+}; |
+ |
BASE_EXPORT const void* GetProgramCounter(); |
// Define a macro to record the current source location. |