| 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.h" | 5 #include "chrome/browser/android/vr_shell/vr_shell.h" |
| 6 | 6 |
| 7 #include <thread> | 7 #include <thread> |
| 8 | 8 |
| 9 #include "chrome/browser/android/vr_shell/vr_compositor.h" | 9 #include "chrome/browser/android/vr_shell/vr_compositor.h" |
| 10 #include "chrome/browser/android/vr_shell/vr_gl_util.h" | 10 #include "chrome/browser/android/vr_shell/vr_gl_util.h" |
| 11 #include "chrome/browser/android/vr_shell/vr_math.h" | 11 #include "chrome/browser/android/vr_shell/vr_math.h" |
| 12 #include "chrome/browser/android/vr_shell/vr_shell_delegate.h" |
| 12 #include "chrome/browser/android/vr_shell/vr_shell_renderer.h" | 13 #include "chrome/browser/android/vr_shell/vr_shell_renderer.h" |
| 13 #include "content/public/browser/android/content_view_core.h" | 14 #include "content/public/browser/android/content_view_core.h" |
| 14 #include "content/public/browser/render_widget_host.h" | 15 #include "content/public/browser/render_widget_host.h" |
| 15 #include "content/public/browser/render_widget_host_view.h" | 16 #include "content/public/browser/render_widget_host_view.h" |
| 16 #include "content/public/browser/web_contents.h" | 17 #include "content/public/browser/web_contents.h" |
| 17 #include "jni/VrShell_jni.h" | 18 #include "jni/VrShell_jni.h" |
| 18 #include "ui/android/view_android.h" | 19 #include "ui/android/view_android.h" |
| 19 #include "ui/android/window_android.h" | 20 #include "ui/android/window_android.h" |
| 20 #include "ui/gl/gl_bindings.h" | 21 #include "ui/gl/gl_bindings.h" |
| 21 #include "ui/gl/init/gl_factory.h" | 22 #include "ui/gl/init/gl_factory.h" |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 } // namespace | 59 } // namespace |
| 59 | 60 |
| 60 namespace vr_shell { | 61 namespace vr_shell { |
| 61 | 62 |
| 62 VrShell::VrShell(JNIEnv* env, jobject obj, | 63 VrShell::VrShell(JNIEnv* env, jobject obj, |
| 63 content::ContentViewCore* content_core, | 64 content::ContentViewCore* content_core, |
| 64 ui::WindowAndroid* content_window) | 65 ui::WindowAndroid* content_window) |
| 65 : desktop_screen_tilt_(kDesktopScreenTiltDefault), | 66 : desktop_screen_tilt_(kDesktopScreenTiltDefault), |
| 66 desktop_height_(kDesktopHeightDefault), | 67 desktop_height_(kDesktopHeightDefault), |
| 67 desktop_position_(kDesktopPositionDefault), | 68 desktop_position_(kDesktopPositionDefault), |
| 68 content_cvc_(content_core) { | 69 content_cvc_(content_core), |
| 70 delegate_(nullptr) { |
| 69 j_vr_shell_.Reset(env, obj); | 71 j_vr_shell_.Reset(env, obj); |
| 70 content_compositor_view_.reset(new VrCompositor(content_window)); | 72 content_compositor_view_.reset(new VrCompositor(content_window)); |
| 71 ui_rects_.emplace_back(new ContentRectangle()); | 73 ui_rects_.emplace_back(new ContentRectangle()); |
| 72 desktop_plane_ = ui_rects_.back().get(); | 74 desktop_plane_ = ui_rects_.back().get(); |
| 73 desktop_plane_->id = 0; | 75 desktop_plane_->id = 0; |
| 74 desktop_plane_->copy_rect = {0.0f, 0.0f, 1.0f, 1.0f}; | 76 desktop_plane_->copy_rect = {0.0f, 0.0f, 1.0f, 1.0f}; |
| 75 // TODO(cjgrant): If we use the native path for content clicks, fix this. | 77 // TODO(cjgrant): If we use the native path for content clicks, fix this. |
| 76 desktop_plane_->window_rect = {0, 0, 0, 0}; | 78 desktop_plane_->window_rect = {0, 0, 0, 0}; |
| 77 desktop_plane_->translation = {0.0f, 0.0f, 0.0f}; | 79 desktop_plane_->translation = {0.0f, 0.0f, 0.0f}; |
| 78 desktop_plane_->x_anchoring = XNONE; | 80 desktop_plane_->x_anchoring = XNONE; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 92 void VrShell::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 94 void VrShell::Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
| 93 delete this; | 95 delete this; |
| 94 gl::init::ClearGLBindings(); | 96 gl::init::ClearGLBindings(); |
| 95 } | 97 } |
| 96 | 98 |
| 97 bool RegisterVrShell(JNIEnv* env) { | 99 bool RegisterVrShell(JNIEnv* env) { |
| 98 return RegisterNativesImpl(env); | 100 return RegisterNativesImpl(env); |
| 99 } | 101 } |
| 100 | 102 |
| 101 VrShell::~VrShell() { | 103 VrShell::~VrShell() { |
| 102 device::GvrDelegateManager::GetInstance()->Shutdown(); | 104 } |
| 105 |
| 106 void VrShell::SetDelegate(JNIEnv* env, |
| 107 const base::android::JavaParamRef<jobject>& obj, |
| 108 const base::android::JavaParamRef<jobject>& delegate) { |
| 109 delegate_ = VrShellDelegate::getNativeDelegate(env, delegate); |
| 103 } | 110 } |
| 104 | 111 |
| 105 void VrShell::GvrInit(JNIEnv* env, | 112 void VrShell::GvrInit(JNIEnv* env, |
| 106 const JavaParamRef<jobject>& obj, | 113 const JavaParamRef<jobject>& obj, |
| 107 jlong native_gvr_api) { | 114 jlong native_gvr_api) { |
| 108 gvr_api_ = | 115 gvr_api_ = |
| 109 gvr::GvrApi::WrapNonOwned(reinterpret_cast<gvr_context*>(native_gvr_api)); | 116 gvr::GvrApi::WrapNonOwned(reinterpret_cast<gvr_context*>(native_gvr_api)); |
| 110 | 117 |
| 111 device::GvrDelegateManager::GetInstance()->Initialize(this); | 118 if (delegate_) |
| 119 delegate_->OnVrShellReady(this); |
| 112 } | 120 } |
| 113 | 121 |
| 114 void VrShell::InitializeGl(JNIEnv* env, | 122 void VrShell::InitializeGl(JNIEnv* env, |
| 115 const JavaParamRef<jobject>& obj, | 123 const JavaParamRef<jobject>& obj, |
| 116 jint texture_data_handle) { | 124 jint texture_data_handle) { |
| 117 CHECK(gl::GetGLImplementation() != gl::kGLImplementationNone || | 125 CHECK(gl::GetGLImplementation() != gl::kGLImplementationNone || |
| 118 gl::init::InitializeGLOneOff()); | 126 gl::init::InitializeGLOneOff()); |
| 119 | 127 |
| 120 content_texture_id_ = texture_data_handle; | 128 content_texture_id_ = texture_data_handle; |
| 121 gvr_api_->InitializeGl(); | 129 gvr_api_->InitializeGl(); |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 375 } | 383 } |
| 376 | 384 |
| 377 void VrShell::OnResume(JNIEnv* env, const JavaParamRef<jobject>& obj) { | 385 void VrShell::OnResume(JNIEnv* env, const JavaParamRef<jobject>& obj) { |
| 378 if (gvr_api_ == nullptr) | 386 if (gvr_api_ == nullptr) |
| 379 return; | 387 return; |
| 380 | 388 |
| 381 gvr_api_->RefreshViewerProfile(); | 389 gvr_api_->RefreshViewerProfile(); |
| 382 gvr_api_->ResumeTracking(); | 390 gvr_api_->ResumeTracking(); |
| 383 } | 391 } |
| 384 | 392 |
| 385 void VrShell::RequestWebVRPresent() { | 393 void VrShell::SetWebVrMode(JNIEnv* env, |
| 386 webvr_mode_ = true; | 394 const base::android::JavaParamRef<jobject>& obj, |
| 387 } | 395 bool enabled) { |
| 388 | 396 webvr_mode_ = enabled; |
| 389 void VrShell::ExitWebVRPresent() { | |
| 390 webvr_mode_ = false; | |
| 391 } | 397 } |
| 392 | 398 |
| 393 void VrShell::SubmitWebVRFrame() { | 399 void VrShell::SubmitWebVRFrame() { |
| 394 } | 400 } |
| 395 | 401 |
| 396 void VrShell::UpdateWebVRTextureBounds( | 402 void VrShell::UpdateWebVRTextureBounds( |
| 397 int eye, float left, float top, float width, float height) { | 403 int eye, float left, float top, float width, float height) { |
| 398 gvr::Rectf bounds = { left, top, width, height }; | 404 gvr::Rectf bounds = { left, top, width, height }; |
| 399 vr_shell_renderer_->GetWebVrRenderer()->UpdateTextureBounds(eye, bounds); | 405 vr_shell_renderer_->GetWebVrRenderer()->UpdateTextureBounds(eye, bounds); |
| 400 } | 406 } |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 471 const JavaParamRef<jobject>& content_web_contents, | 477 const JavaParamRef<jobject>& content_web_contents, |
| 472 jlong content_window_android) { | 478 jlong content_window_android) { |
| 473 content::ContentViewCore* c_core = content::ContentViewCore::FromWebContents( | 479 content::ContentViewCore* c_core = content::ContentViewCore::FromWebContents( |
| 474 content::WebContents::FromJavaWebContents(content_web_contents)); | 480 content::WebContents::FromJavaWebContents(content_web_contents)); |
| 475 return reinterpret_cast<intptr_t>(new VrShell( | 481 return reinterpret_cast<intptr_t>(new VrShell( |
| 476 env, obj, c_core, | 482 env, obj, c_core, |
| 477 reinterpret_cast<ui::WindowAndroid*>(content_window_android))); | 483 reinterpret_cast<ui::WindowAndroid*>(content_window_android))); |
| 478 } | 484 } |
| 479 | 485 |
| 480 } // namespace vr_shell | 486 } // namespace vr_shell |
| OLD | NEW |