| 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_gl.h" | 5 #include "chrome/browser/android/vr_shell/vr_shell_gl.h" |
| 6 | 6 |
| 7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
| 8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
| 9 #include "base/metrics/histogram_macros.h" | 9 #include "base/metrics/histogram_macros.h" |
| 10 #include "base/threading/thread_task_runner_handle.h" | 10 #include "base/threading/thread_task_runner_handle.h" |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 quat.qz = 0.0f; | 114 quat.qz = 0.0f; |
| 115 vr_shell::NormalizeQuat(quat); | 115 vr_shell::NormalizeQuat(quat); |
| 116 } | 116 } |
| 117 return quat; | 117 return quat; |
| 118 } | 118 } |
| 119 | 119 |
| 120 std::unique_ptr<blink::WebMouseEvent> MakeMouseEvent(WebInputEvent::Type type, | 120 std::unique_ptr<blink::WebMouseEvent> MakeMouseEvent(WebInputEvent::Type type, |
| 121 double timestamp, | 121 double timestamp, |
| 122 float x, | 122 float x, |
| 123 float y) { | 123 float y) { |
| 124 std::unique_ptr<blink::WebMouseEvent> mouse_event(new blink::WebMouseEvent); | 124 std::unique_ptr<blink::WebMouseEvent> mouse_event(new blink::WebMouseEvent( |
| 125 mouse_event->type = type; | 125 type, blink::WebInputEvent::NoModifiers, timestamp)); |
| 126 mouse_event->pointerType = blink::WebPointerProperties::PointerType::Mouse; | 126 mouse_event->pointerType = blink::WebPointerProperties::PointerType::Mouse; |
| 127 mouse_event->x = x; | 127 mouse_event->x = x; |
| 128 mouse_event->y = y; | 128 mouse_event->y = y; |
| 129 mouse_event->windowX = x; | 129 mouse_event->windowX = x; |
| 130 mouse_event->windowY = y; | 130 mouse_event->windowY = y; |
| 131 mouse_event->timeStampSeconds = timestamp; | |
| 132 mouse_event->clickCount = 1; | 131 mouse_event->clickCount = 1; |
| 133 mouse_event->modifiers = 0; | |
| 134 | 132 |
| 135 return mouse_event; | 133 return mouse_event; |
| 136 } | 134 } |
| 137 | 135 |
| 138 enum class ViewerType { | 136 enum class ViewerType { |
| 139 UNKNOWN_TYPE = 0, | 137 UNKNOWN_TYPE = 0, |
| 140 CARDBOARD = 1, | 138 CARDBOARD = 1, |
| 141 DAYDREAM = 2, | 139 DAYDREAM = 2, |
| 142 VIEWER_TYPE_MAX, | 140 VIEWER_TYPE_MAX, |
| 143 }; | 141 }; |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 410 main_thread_task_runner_->PostTask( | 408 main_thread_task_runner_->PostTask( |
| 411 FROM_HERE, base::Bind(&VrShell::AppButtonPressed, weak_vr_shell_)); | 409 FROM_HERE, base::Bind(&VrShell::AppButtonPressed, weak_vr_shell_)); |
| 412 } | 410 } |
| 413 | 411 |
| 414 if (web_vr_mode_) { | 412 if (web_vr_mode_) { |
| 415 // Process screen touch events for Cardboard button compatibility. | 413 // Process screen touch events for Cardboard button compatibility. |
| 416 // Also send tap events for controller "touchpad click" events. | 414 // Also send tap events for controller "touchpad click" events. |
| 417 if (touch_pending_ || controller_->ButtonUpHappened( | 415 if (touch_pending_ || controller_->ButtonUpHappened( |
| 418 gvr::ControllerButton::GVR_CONTROLLER_BUTTON_CLICK)) { | 416 gvr::ControllerButton::GVR_CONTROLLER_BUTTON_CLICK)) { |
| 419 touch_pending_ = false; | 417 touch_pending_ = false; |
| 420 std::unique_ptr<WebGestureEvent> gesture(new WebGestureEvent()); | 418 std::unique_ptr<WebGestureEvent> gesture(new WebGestureEvent( |
| 419 WebInputEvent::GestureTapDown, WebInputEvent::NoModifiers, |
| 420 (base::TimeTicks::Now() - base::TimeTicks()).InSecondsF())); |
| 421 gesture->sourceDevice = blink::WebGestureDeviceTouchpad; | 421 gesture->sourceDevice = blink::WebGestureDeviceTouchpad; |
| 422 gesture->timeStampSeconds = | |
| 423 (base::TimeTicks::Now() - base::TimeTicks()).InSecondsF(); | |
| 424 gesture->type = WebInputEvent::GestureTapDown; | |
| 425 gesture->x = 0; | 422 gesture->x = 0; |
| 426 gesture->y = 0; | 423 gesture->y = 0; |
| 427 SendGesture(InputTarget::CONTENT, std::move(gesture)); | 424 SendGesture(InputTarget::CONTENT, std::move(gesture)); |
| 428 } | 425 } |
| 429 | 426 |
| 430 return; | 427 return; |
| 431 } | 428 } |
| 432 | 429 |
| 433 gvr::Vec3f ergo_neutral_pose; | 430 gvr::Vec3f ergo_neutral_pose; |
| 434 if (!controller_->IsConnected()) { | 431 if (!controller_->IsConnected()) { |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 521 } | 518 } |
| 522 } | 519 } |
| 523 SendEventsToTarget(input_target, pixel_x, pixel_y); | 520 SendEventsToTarget(input_target, pixel_x, pixel_y); |
| 524 } | 521 } |
| 525 | 522 |
| 526 void VrShellGl::SendEventsToTarget(InputTarget input_target, | 523 void VrShellGl::SendEventsToTarget(InputTarget input_target, |
| 527 int pixel_x, | 524 int pixel_x, |
| 528 int pixel_y) { | 525 int pixel_y) { |
| 529 std::vector<std::unique_ptr<WebGestureEvent>> gesture_list = | 526 std::vector<std::unique_ptr<WebGestureEvent>> gesture_list = |
| 530 controller_->DetectGestures(); | 527 controller_->DetectGestures(); |
| 531 double timestamp = gesture_list.front()->timeStampSeconds; | 528 double timestamp = gesture_list.front()->timeStampSeconds(); |
| 532 | 529 |
| 533 if (touch_pending_) { | 530 if (touch_pending_) { |
| 534 touch_pending_ = false; | 531 touch_pending_ = false; |
| 535 std::unique_ptr<WebGestureEvent> event(new WebGestureEvent()); | 532 std::unique_ptr<WebGestureEvent> event(new WebGestureEvent( |
| 536 event->type = WebInputEvent::GestureTapDown; | 533 WebInputEvent::GestureTapDown, WebInputEvent::NoModifiers, timestamp)); |
| 537 event->sourceDevice = blink::WebGestureDeviceTouchpad; | 534 event->sourceDevice = blink::WebGestureDeviceTouchpad; |
| 538 event->timeStampSeconds = timestamp; | |
| 539 event->x = pixel_x; | 535 event->x = pixel_x; |
| 540 event->y = pixel_y; | 536 event->y = pixel_y; |
| 541 gesture_list.push_back(std::move(event)); | 537 gesture_list.push_back(std::move(event)); |
| 542 } | 538 } |
| 543 | 539 |
| 544 for (const auto& gesture : gesture_list) { | 540 for (const auto& gesture : gesture_list) { |
| 545 switch (gesture->type) { | 541 switch (gesture->type()) { |
| 546 case WebInputEvent::GestureScrollBegin: | 542 case WebInputEvent::GestureScrollBegin: |
| 547 case WebInputEvent::GestureScrollUpdate: | 543 case WebInputEvent::GestureScrollUpdate: |
| 548 case WebInputEvent::GestureScrollEnd: | 544 case WebInputEvent::GestureScrollEnd: |
| 549 case WebInputEvent::GestureFlingCancel: | 545 case WebInputEvent::GestureFlingCancel: |
| 550 case WebInputEvent::GestureFlingStart: | 546 case WebInputEvent::GestureFlingStart: |
| 551 SendGesture(InputTarget::CONTENT, | 547 SendGesture(InputTarget::CONTENT, |
| 552 base::WrapUnique(new WebGestureEvent(*gesture))); | 548 base::WrapUnique(new WebGestureEvent(*gesture))); |
| 553 break; | 549 break; |
| 554 case WebInputEvent::GestureTapDown: | 550 case WebInputEvent::GestureTapDown: |
| 555 gesture->x = pixel_x; | 551 gesture->x = pixel_x; |
| (...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 996 void VrShellGl::ForceExitVr() { | 992 void VrShellGl::ForceExitVr() { |
| 997 main_thread_task_runner_->PostTask( | 993 main_thread_task_runner_->PostTask( |
| 998 FROM_HERE, base::Bind(&VrShell::ForceExitVr, weak_vr_shell_)); | 994 FROM_HERE, base::Bind(&VrShell::ForceExitVr, weak_vr_shell_)); |
| 999 } | 995 } |
| 1000 | 996 |
| 1001 void VrShellGl::UpdateScene(std::unique_ptr<base::ListValue> commands) { | 997 void VrShellGl::UpdateScene(std::unique_ptr<base::ListValue> commands) { |
| 1002 scene_->HandleCommands(std::move(commands), TimeInMicroseconds()); | 998 scene_->HandleCommands(std::move(commands), TimeInMicroseconds()); |
| 1003 } | 999 } |
| 1004 | 1000 |
| 1005 } // namespace vr_shell | 1001 } // namespace vr_shell |
| OLD | NEW |