| Index: chrome/browser/android/vr_shell/vr_shell_delegate.cc
|
| diff --git a/chrome/browser/android/vr_shell/vr_shell_delegate.cc b/chrome/browser/android/vr_shell/vr_shell_delegate.cc
|
| index 17a7ea3f9c603694d09864451bed19822a4e59aa..4563d1a04fbeab6197f542c9d37eea07f992f740 100644
|
| --- a/chrome/browser/android/vr_shell/vr_shell_delegate.cc
|
| +++ b/chrome/browser/android/vr_shell/vr_shell_delegate.cc
|
| @@ -46,14 +46,9 @@ VrShellDelegate* VrShellDelegate::GetNativeVrShellDelegate(JNIEnv* env,
|
|
|
| void VrShellDelegate::SetDelegate(device::GvrDelegate* delegate,
|
| gvr_context* context) {
|
| - context_ = context;
|
| delegate_ = delegate;
|
| // Clean up the non-presenting delegate.
|
| - if (non_presenting_delegate_) {
|
| - device::mojom::VRVSyncProviderRequest request =
|
| - non_presenting_delegate_->OnSwitchToPresentingDelegate();
|
| - if (request.is_pending())
|
| - delegate->OnVRVsyncProviderRequest(std::move(request));
|
| + if (delegate_ && non_presenting_delegate_) {
|
| non_presenting_delegate_ = nullptr;
|
| JNIEnv* env = AttachCurrentThread();
|
| Java_VrShellDelegate_shutdownNonPresentingNativeContext(
|
| @@ -136,8 +131,16 @@ void VrShellDelegate::OpenNewTab(bool incognito) {
|
| Java_VrShellDelegate_openNewTab(env, j_vr_shell_delegate_.obj(), incognito);
|
| }
|
|
|
| +device::mojom::VRSubmitFrameClientPtr VrShellDelegate::TakeSubmitFrameClient() {
|
| + return std::move(submit_client_);
|
| +}
|
| +
|
| void VrShellDelegate::SetDeviceProvider(
|
| device::GvrDeviceProvider* device_provider) {
|
| + if (device_provider_ == device_provider)
|
| + return;
|
| + if (device_provider_)
|
| + ClearDeviceProvider();
|
| CHECK(!device_provider_);
|
| device_provider_ = device_provider;
|
| if (!delegate_)
|
| @@ -154,6 +157,7 @@ void VrShellDelegate::ClearDeviceProvider() {
|
| }
|
|
|
| void VrShellDelegate::RequestWebVRPresent(
|
| + device::mojom::VRSubmitFrameClientPtr submit_client,
|
| const base::Callback<void(bool)>& callback) {
|
| if (!present_callback_.is_null()) {
|
| // Can only handle one request at a time. This is also extremely unlikely to
|
| @@ -163,6 +167,7 @@ void VrShellDelegate::RequestWebVRPresent(
|
| }
|
|
|
| present_callback_ = std::move(callback);
|
| + submit_client_ = std::move(submit_client);
|
|
|
| // If/When VRShell is ready for use it will call SetPresentResult.
|
| JNIEnv* env = AttachCurrentThread();
|
| @@ -180,19 +185,11 @@ base::WeakPtr<VrShellDelegate> VrShellDelegate::GetWeakPtr() {
|
| return weak_ptr_factory_.GetWeakPtr();
|
| }
|
|
|
| -void VrShellDelegate::OnVRVsyncProviderRequest(
|
| - device::mojom::VRVSyncProviderRequest request) {
|
| - GetDelegate()->OnVRVsyncProviderRequest(std::move(request));
|
| -}
|
| -
|
| void VrShellDelegate::CreateNonPresentingDelegate() {
|
| JNIEnv* env = AttachCurrentThread();
|
| gvr_context* context = reinterpret_cast<gvr_context*>(
|
| Java_VrShellDelegate_createNonPresentingNativeContext(
|
| env, j_vr_shell_delegate_.obj()));
|
| - if (!context)
|
| - return;
|
| - context_ = context;
|
| non_presenting_delegate_ =
|
| base::MakeUnique<NonPresentingGvrDelegate>(context);
|
| non_presenting_delegate_->UpdateVSyncInterval(timebase_nanos_,
|
|
|