| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/android/vr_shell/vr_shell_delegate.h" | 5 #include "chrome/browser/android/vr_shell/vr_shell_delegate.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/android/jni_android.h" | 9 #include "base/android/jni_android.h" |
| 10 #include "chrome/browser/android/vr_shell/non_presenting_gvr_delegate.h" | 10 #include "chrome/browser/android/vr_shell/non_presenting_gvr_delegate.h" |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 } | 118 } |
| 119 } | 119 } |
| 120 | 120 |
| 121 void VrShellDelegate::ShowTab(int id) { | 121 void VrShellDelegate::ShowTab(int id) { |
| 122 JNIEnv* env = AttachCurrentThread(); | 122 JNIEnv* env = AttachCurrentThread(); |
| 123 Java_VrShellDelegate_showTab(env, j_vr_shell_delegate_.obj(), id); | 123 Java_VrShellDelegate_showTab(env, j_vr_shell_delegate_.obj(), id); |
| 124 } | 124 } |
| 125 | 125 |
| 126 void VrShellDelegate::SetDeviceProvider( | 126 void VrShellDelegate::SetDeviceProvider( |
| 127 device::GvrDeviceProvider* device_provider) { | 127 device::GvrDeviceProvider* device_provider) { |
| 128 JNIEnv* env = AttachCurrentThread(); |
| 129 bool vrCorecompatible = static_cast<bool>( |
| 130 Java_VrShellDelegate_isVrCoreCompatible(env, j_vr_shell_delegate_.obj())); |
| 131 if (!vrCorecompatible) |
| 132 return; |
| 133 |
| 128 CHECK(!device_provider_); | 134 CHECK(!device_provider_); |
| 129 device_provider_ = device_provider; | 135 device_provider_ = device_provider; |
| 130 if (!delegate_) | 136 if (!delegate_) |
| 131 CreateNonPresentingDelegate(); | 137 CreateNonPresentingDelegate(); |
| 132 device_provider_->Device()->OnDelegateChanged(); | 138 device_provider_->Device()->OnDelegateChanged(); |
| 133 } | 139 } |
| 134 | 140 |
| 135 void VrShellDelegate::ClearDeviceProvider() { | 141 void VrShellDelegate::ClearDeviceProvider() { |
| 136 non_presenting_delegate_ = nullptr; | 142 // Clean up the non-presenting delegate. |
| 137 JNIEnv* env = AttachCurrentThread(); | 143 if (non_presenting_delegate_) { |
| 138 Java_VrShellDelegate_shutdownNonPresentingNativeContext( | 144 non_presenting_delegate_ = nullptr; |
| 139 env, j_vr_shell_delegate_.obj()); | 145 JNIEnv* env = AttachCurrentThread(); |
| 140 device_provider_->Device()->OnDelegateChanged(); | 146 Java_VrShellDelegate_shutdownNonPresentingNativeContext( |
| 147 env, j_vr_shell_delegate_.obj()); |
| 148 device_provider_->Device()->OnDelegateChanged(); |
| 149 } |
| 141 device_provider_ = nullptr; | 150 device_provider_ = nullptr; |
| 142 } | 151 } |
| 143 | 152 |
| 144 void VrShellDelegate::RequestWebVRPresent( | 153 void VrShellDelegate::RequestWebVRPresent( |
| 145 const base::Callback<void(bool)>& callback) { | 154 const base::Callback<void(bool)>& callback) { |
| 146 if (!present_callback_.is_null()) { | 155 if (!present_callback_.is_null()) { |
| 147 // Can only handle one request at a time. This is also extremely unlikely to | 156 // Can only handle one request at a time. This is also extremely unlikely to |
| 148 // happen in practice. | 157 // happen in practice. |
| 149 callback.Run(false); | 158 callback.Run(false); |
| 150 return; | 159 return; |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 205 | 214 |
| 206 bool RegisterVrShellDelegate(JNIEnv* env) { | 215 bool RegisterVrShellDelegate(JNIEnv* env) { |
| 207 return RegisterNativesImpl(env); | 216 return RegisterNativesImpl(env); |
| 208 } | 217 } |
| 209 | 218 |
| 210 jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 219 jlong Init(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
| 211 return reinterpret_cast<intptr_t>(new VrShellDelegate(env, obj)); | 220 return reinterpret_cast<intptr_t>(new VrShellDelegate(env, obj)); |
| 212 } | 221 } |
| 213 | 222 |
| 214 } // namespace vr_shell | 223 } // namespace vr_shell |
| OLD | NEW |