diff options
-rw-r--r-- | include/binderwrapper/binder_wrapper.h | 5 | ||||
-rw-r--r-- | libbinderwrapper/binder_wrapper.cc | 7 |
2 files changed, 12 insertions, 0 deletions
diff --git a/include/binderwrapper/binder_wrapper.h b/include/binderwrapper/binder_wrapper.h index 921c4ed19..ccda825b3 100644 --- a/include/binderwrapper/binder_wrapper.h +++ b/include/binderwrapper/binder_wrapper.h @@ -30,6 +30,7 @@ class BBinder; class IBinder; // Wraps libbinder to make it testable. +// NOTE: Static methods of this class are not thread-safe. class BinderWrapper { public: virtual ~BinderWrapper() {} @@ -50,6 +51,10 @@ class BinderWrapper { // InitForTesting(). static BinderWrapper* Get(); + // Returns the singleton instance if it was previously created by Create() or + // set by InitForTesting(), or creates a new one by calling Create(). + static BinderWrapper* GetOrCreateInstance(); + // Gets the binder for communicating with the service identified by // |service_name|, returning null immediately if it doesn't exist. virtual sp<IBinder> GetService(const std::string& service_name) = 0; diff --git a/libbinderwrapper/binder_wrapper.cc b/libbinderwrapper/binder_wrapper.cc index 0b5ff9612..ca9c1dfd9 100644 --- a/libbinderwrapper/binder_wrapper.cc +++ b/libbinderwrapper/binder_wrapper.cc @@ -50,4 +50,11 @@ BinderWrapper* BinderWrapper::Get() { return instance_; } +// static +BinderWrapper* BinderWrapper::GetOrCreateInstance() { + if (!instance_) + instance_ = new RealBinderWrapper(); + return instance_; +} + } // namespace android |