| Index: device/vr/android/gvr/gvr_device_provider.cc
|
| diff --git a/device/vr/android/gvr/gvr_device_provider.cc b/device/vr/android/gvr/gvr_device_provider.cc
|
| index 9b5be90ee8c1d6eeca3e479436fb6969fa93ed18..4aff6ce54860890f749df2ec638836a32b48f671 100644
|
| --- a/device/vr/android/gvr/gvr_device_provider.cc
|
| +++ b/device/vr/android/gvr/gvr_device_provider.cc
|
| @@ -33,14 +33,9 @@
|
| }
|
|
|
| void GvrDeviceProvider::GetDevices(std::vector<VRDevice*>* devices) {
|
| - devices->push_back(vr_device_.get());
|
| -}
|
| -
|
| -device::GvrDelegateProvider* GvrDeviceProvider::GetDelegateProvider() {
|
| - device::GvrDelegateProvider* provider =
|
| - device::GvrDelegateProvider::GetInstance();
|
| - Initialize(provider);
|
| - return provider;
|
| + Initialize();
|
| + if (initialized_)
|
| + devices->push_back(vr_device_.get());
|
| }
|
|
|
| void GvrDeviceProvider::Initialize() {
|
| @@ -48,36 +43,41 @@
|
| // GvrDeviceProvider so we don't have to call this function multiple times.
|
| // Ideally the DelegateProvider would always be available, and GetInstance()
|
| // would create it.
|
| - Initialize(device::GvrDelegateProvider::GetInstance());
|
| -}
|
| -
|
| -void GvrDeviceProvider::Initialize(device::GvrDelegateProvider* provider) {
|
| - if (!provider)
|
| + if (initialized_)
|
| return;
|
| - provider->SetDeviceProvider(this);
|
| + device::GvrDelegateProvider* delegate_provider =
|
| + device::GvrDelegateProvider::GetInstance();
|
| + if (!delegate_provider)
|
| + return;
|
| + delegate_provider->SetDeviceProvider(this);
|
| + initialized_ = true;
|
| }
|
|
|
| void GvrDeviceProvider::RequestPresent(
|
| - mojom::VRSubmitFrameClientPtr submit_client,
|
| const base::Callback<void(bool)>& callback) {
|
| - device::GvrDelegateProvider* delegate_provider = GetDelegateProvider();
|
| + Initialize();
|
| + device::GvrDelegateProvider* delegate_provider =
|
| + device::GvrDelegateProvider::GetInstance();
|
| if (!delegate_provider)
|
| return callback.Run(false);
|
|
|
| // RequestWebVRPresent is async as we may trigger a DON flow that pauses
|
| // Chrome.
|
| - delegate_provider->RequestWebVRPresent(std::move(submit_client), callback);
|
| + delegate_provider->RequestWebVRPresent(callback);
|
| }
|
|
|
| // VR presentation exit requested by the API.
|
| void GvrDeviceProvider::ExitPresent() {
|
| - device::GvrDelegateProvider* delegate_provider = GetDelegateProvider();
|
| + Initialize();
|
| + GvrDelegateProvider* delegate_provider = GvrDelegateProvider::GetInstance();
|
| if (delegate_provider)
|
| delegate_provider->ExitWebVRPresent();
|
| }
|
|
|
| void GvrDeviceProvider::SetListeningForActivate(bool listening) {
|
| - device::GvrDelegateProvider* delegate_provider = GetDelegateProvider();
|
| + Initialize();
|
| + device::GvrDelegateProvider* delegate_provider =
|
| + device::GvrDelegateProvider::GetInstance();
|
| if (!delegate_provider)
|
| return;
|
|
|
|
|