Index: device/vr/android/gvr/gvr_delegate.cc |
diff --git a/device/vr/android/gvr/gvr_delegate.cc b/device/vr/android/gvr/gvr_delegate.cc |
index 51510a7b6ac96ce66fe27dca3ea88296edab32e2..de4a11a990606249c9242e50115bfd73d483fe3f 100644 |
--- a/device/vr/android/gvr/gvr_delegate.cc |
+++ b/device/vr/android/gvr/gvr_delegate.cc |
@@ -8,19 +8,17 @@ |
namespace device { |
-GvrDelegateProvider* GvrDelegateProvider::delegate_provider_ = nullptr; |
+base::Callback<GvrDelegateProvider*()> GvrDelegateProvider::delegate_provider_; |
GvrDelegateProvider* GvrDelegateProvider::GetInstance() { |
- return delegate_provider_; |
+ if (delegate_provider_.is_null()) |
+ return nullptr; |
+ return delegate_provider_.Run(); |
} |
-void GvrDelegateProvider::SetInstance(GvrDelegateProvider* delegate_provider) { |
- if (delegate_provider) { |
- // Don't initialize the delegate_provider_ twice. Re-enable |
- // (crbug.com/655297) |
- // DCHECK(!delegate_provider_); |
- } |
- delegate_provider_ = delegate_provider; |
+void GvrDelegateProvider::SetInstance( |
+ const base::Callback<GvrDelegateProvider*()>& provider_callback) { |
+ delegate_provider_ = provider_callback; |
} |
} // namespace device |