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