Index: ppapi/shared_impl/ppapi_globals.cc |
diff --git a/ppapi/shared_impl/ppapi_globals.cc b/ppapi/shared_impl/ppapi_globals.cc |
index 9b5e9a82cb3fede21d10ab13b46f095acb127d8f..3e71bb388b5a79f6bd3d992989638658b2389e77 100644 |
--- a/ppapi/shared_impl/ppapi_globals.cc |
+++ b/ppapi/shared_impl/ppapi_globals.cc |
@@ -9,15 +9,28 @@ |
namespace ppapi { |
PpapiGlobals* PpapiGlobals::ppapi_globals_ = NULL; |
+base::ThreadLocalPointer<PpapiGlobals> PpapiGlobals::ppapi_globals_for_test_; |
PpapiGlobals::PpapiGlobals() { |
DCHECK(!ppapi_globals_); |
ppapi_globals_ = this; |
} |
+PpapiGlobals::PpapiGlobals(ForTest) { |
+ DCHECK(!ppapi_globals_); |
+} |
+ |
PpapiGlobals::~PpapiGlobals() { |
- DCHECK(ppapi_globals_ == this); |
+ DCHECK(ppapi_globals_ == this || !ppapi_globals_); |
ppapi_globals_ = NULL; |
} |
+// static |
+void PpapiGlobals::SetPpapiGlobalsOnThreadForTest(PpapiGlobals* ptr) { |
+ // If we're using a per-thread PpapiGlobals, we should not have a global one. |
+ // If we allowed it, it would always over-ride the "test" versions. |
+ DCHECK(!ppapi_globals_); |
+ ppapi_globals_for_test_.Set(ptr); |
+} |
+ |
} // namespace ppapi |