Commit 6c444ade authored by bsheedy's avatar bsheedy Committed by Commit Bot

Use GUARDED_BY in VR test code

Uses the GUARDED_BY annotation for the field we have protected by a
base::Lock in the VR browser test code.

As a result, switches all lock acquiring to AutoLock since the
annotation doesn't currently work with manually acquiring and
releasing.

Bug: 901136
Change-Id: I62b7726ca4ad56778b0354436a8f6d84f47fe86b
Reviewed-on: https://chromium-review.googlesource.com/c/1313752Reviewed-by: default avatarBill Orr <billorr@chromium.org>
Commit-Queue: Brian Sheedy <bsheedy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#604767}
parent 1d2eaa5f
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#include "device/vr/openvr/test/test_helper.h" #include "device/vr/openvr/test/test_helper.h"
#include "base/debug/debugger.h" #include "base/debug/debugger.h"
#include "base/logging.h" #include "base/logging.h"
#include "base/synchronization/lock.h"
#include "base/threading/thread_restrictions.h" #include "base/threading/thread_restrictions.h"
#include "device/vr/openvr/test/test_hook.h" #include "device/vr/openvr/test/test_hook.h"
#include "third_party/openvr/src/headers/openvr.h" #include "third_party/openvr/src/headers/openvr.h"
...@@ -26,11 +27,13 @@ void TestHelper::OnPresentedFrame(ID3D11Texture2D* texture, ...@@ -26,11 +27,13 @@ void TestHelper::OnPresentedFrame(ID3D11Texture2D* texture,
EVREye eye) { EVREye eye) {
// Early-out if there is nobody listening. // Early-out if there is nobody listening.
bool is_hooked = false; bool is_hooked = false;
lock_.Acquire(); {
base::AutoLock auto_lock(lock_);
if (test_hook_) { if (test_hook_) {
is_hooked = true; is_hooked = true;
} }
lock_.Release(); }
if (!is_hooked) if (!is_hooked)
return; return;
...@@ -84,10 +87,11 @@ void TestHelper::OnPresentedFrame(ID3D11Texture2D* texture, ...@@ -84,10 +87,11 @@ void TestHelper::OnPresentedFrame(ID3D11Texture2D* texture,
device::Color* color = reinterpret_cast<device::Color*>(map_data.pData); device::Color* color = reinterpret_cast<device::Color*>(map_data.pData);
frame_data.color = color[0]; frame_data.color = color[0];
memcpy(&frame_data.raw_buffer, map_data.pData, buffer_size); memcpy(&frame_data.raw_buffer, map_data.pData, buffer_size);
lock_.Acquire(); {
base::AutoLock auto_lock(lock_);
if (test_hook_) if (test_hook_)
test_hook_->OnFrameSubmitted(frame_data); test_hook_->OnFrameSubmitted(frame_data);
lock_.Release(); }
context->Unmap(texture_copy.Get(), 0); context->Unmap(texture_copy.Get(), 0);
} }
...@@ -114,18 +118,16 @@ vr::TrackedDevicePose_t TranslatePose(device::PoseFrameData pose) { ...@@ -114,18 +118,16 @@ vr::TrackedDevicePose_t TranslatePose(device::PoseFrameData pose) {
} // namespace } // namespace
float TestHelper::GetInterpupillaryDistance() { float TestHelper::GetInterpupillaryDistance() {
lock_.Acquire(); base::AutoLock auto_lock(lock_);
if (test_hook_) { if (test_hook_) {
auto config = test_hook_->WaitGetDeviceConfig(); auto config = test_hook_->WaitGetDeviceConfig();
lock_.Release();
return config.interpupillary_distance; return config.interpupillary_distance;
} }
lock_.Release();
return 0.1f; return 0.1f;
} }
ProjectionRaw TestHelper::GetProjectionRaw(bool left) { ProjectionRaw TestHelper::GetProjectionRaw(bool left) {
lock_.Acquire(); base::AutoLock auto_lock(lock_);
if (test_hook_) { if (test_hook_) {
auto config = test_hook_->WaitGetDeviceConfig(); auto config = test_hook_->WaitGetDeviceConfig();
ProjectionRaw ret = {}; ProjectionRaw ret = {};
...@@ -134,22 +136,18 @@ ProjectionRaw TestHelper::GetProjectionRaw(bool left) { ...@@ -134,22 +136,18 @@ ProjectionRaw TestHelper::GetProjectionRaw(bool left) {
ret.projection[1] = projection[1]; ret.projection[1] = projection[1];
ret.projection[2] = projection[2]; ret.projection[2] = projection[2];
ret.projection[3] = projection[3]; ret.projection[3] = projection[3];
lock_.Release();
return ret; return ret;
} }
lock_.Release();
return {{1, 1, 1, 1}}; return {{1, 1, 1, 1}};
} }
vr::TrackedDevicePose_t TestHelper::GetPose(bool presenting) { vr::TrackedDevicePose_t TestHelper::GetPose(bool presenting) {
lock_.Acquire(); base::AutoLock auto_lock(lock_);
if (test_hook_) { if (test_hook_) {
auto ret = TranslatePose(presenting ? test_hook_->WaitGetPresentingPose() auto ret = TranslatePose(presenting ? test_hook_->WaitGetPresentingPose()
: test_hook_->WaitGetMagicWindowPose()); : test_hook_->WaitGetMagicWindowPose());
lock_.Release();
return ret; return ret;
} }
lock_.Release();
device::PoseFrameData pose = {}; device::PoseFrameData pose = {};
pose.is_valid = true; pose.is_valid = true;
...@@ -165,7 +163,7 @@ vr::ETrackedPropertyError TestHelper::GetInt32TrackedDeviceProperty( ...@@ -165,7 +163,7 @@ vr::ETrackedPropertyError TestHelper::GetInt32TrackedDeviceProperty(
int32_t& prop_value) { int32_t& prop_value) {
vr::ETrackedPropertyError ret = vr::TrackedProp_Success; vr::ETrackedPropertyError ret = vr::TrackedProp_Success;
prop_value = 0; prop_value = 0;
lock_.Acquire(); base::AutoLock auto_lock(lock_);
switch (prop) { switch (prop) {
case vr::Prop_Axis0Type_Int32: case vr::Prop_Axis0Type_Int32:
case vr::Prop_Axis1Type_Int32: case vr::Prop_Axis1Type_Int32:
...@@ -184,7 +182,6 @@ vr::ETrackedPropertyError TestHelper::GetInt32TrackedDeviceProperty( ...@@ -184,7 +182,6 @@ vr::ETrackedPropertyError TestHelper::GetInt32TrackedDeviceProperty(
default: default:
ret = vr::TrackedProp_UnknownProperty; ret = vr::TrackedProp_UnknownProperty;
} }
lock_.Release();
return ret; return ret;
} }
...@@ -194,7 +191,7 @@ vr::ETrackedPropertyError TestHelper::GetUint64TrackedDeviceProperty( ...@@ -194,7 +191,7 @@ vr::ETrackedPropertyError TestHelper::GetUint64TrackedDeviceProperty(
uint64_t& prop_value) { uint64_t& prop_value) {
vr::ETrackedPropertyError ret = vr::TrackedProp_Success; vr::ETrackedPropertyError ret = vr::TrackedProp_Success;
prop_value = 0; prop_value = 0;
lock_.Acquire(); base::AutoLock auto_lock(lock_);
switch (prop) { switch (prop) {
case vr::Prop_SupportedButtons_Uint64: { case vr::Prop_SupportedButtons_Uint64: {
auto controller_data = test_hook_->WaitGetControllerData(index); auto controller_data = test_hook_->WaitGetControllerData(index);
...@@ -208,14 +205,13 @@ vr::ETrackedPropertyError TestHelper::GetUint64TrackedDeviceProperty( ...@@ -208,14 +205,13 @@ vr::ETrackedPropertyError TestHelper::GetUint64TrackedDeviceProperty(
default: default:
ret = vr::TrackedProp_UnknownProperty; ret = vr::TrackedProp_UnknownProperty;
} }
lock_.Release();
return ret; return ret;
} }
vr::ETrackedControllerRole TestHelper::GetControllerRoleForTrackedDeviceIndex( vr::ETrackedControllerRole TestHelper::GetControllerRoleForTrackedDeviceIndex(
unsigned int index) { unsigned int index) {
vr::ETrackedControllerRole ret = vr::TrackedControllerRole_Invalid; vr::ETrackedControllerRole ret = vr::TrackedControllerRole_Invalid;
lock_.Acquire(); base::AutoLock auto_lock(lock_);
if (test_hook_) { if (test_hook_) {
switch (test_hook_->WaitGetControllerRoleForTrackedDeviceIndex(index)) { switch (test_hook_->WaitGetControllerRoleForTrackedDeviceIndex(index)) {
case device::kControllerRoleInvalid: case device::kControllerRoleInvalid:
...@@ -230,13 +226,12 @@ vr::ETrackedControllerRole TestHelper::GetControllerRoleForTrackedDeviceIndex( ...@@ -230,13 +226,12 @@ vr::ETrackedControllerRole TestHelper::GetControllerRoleForTrackedDeviceIndex(
NOTREACHED(); NOTREACHED();
} }
} }
lock_.Release();
return ret; return ret;
} }
vr::ETrackedDeviceClass TestHelper::GetTrackedDeviceClass(unsigned int index) { vr::ETrackedDeviceClass TestHelper::GetTrackedDeviceClass(unsigned int index) {
vr::ETrackedDeviceClass tracked_class = vr::TrackedDeviceClass_Invalid; vr::ETrackedDeviceClass tracked_class = vr::TrackedDeviceClass_Invalid;
lock_.Acquire(); base::AutoLock auto_lock(lock_);
if (test_hook_) { if (test_hook_) {
switch (test_hook_->WaitGetTrackedDeviceClass(index)) { switch (test_hook_->WaitGetTrackedDeviceClass(index)) {
case device::kTrackedDeviceInvalid: case device::kTrackedDeviceInvalid:
...@@ -257,16 +252,14 @@ vr::ETrackedDeviceClass TestHelper::GetTrackedDeviceClass(unsigned int index) { ...@@ -257,16 +252,14 @@ vr::ETrackedDeviceClass TestHelper::GetTrackedDeviceClass(unsigned int index) {
NOTREACHED(); NOTREACHED();
} }
} }
lock_.Release();
return tracked_class; return tracked_class;
} }
bool TestHelper::GetControllerState(unsigned int index, bool TestHelper::GetControllerState(unsigned int index,
vr::VRControllerState_t* controller_state) { vr::VRControllerState_t* controller_state) {
lock_.Acquire(); base::AutoLock auto_lock(lock_);
if (test_hook_) { if (test_hook_) {
auto controller_data = test_hook_->WaitGetControllerData(index); auto controller_data = test_hook_->WaitGetControllerData(index);
lock_.Release();
controller_state->unPacketNum = controller_data.packet_number; controller_state->unPacketNum = controller_data.packet_number;
controller_state->ulButtonPressed = controller_data.buttons_pressed; controller_state->ulButtonPressed = controller_data.buttons_pressed;
controller_state->ulButtonTouched = controller_data.buttons_touched; controller_state->ulButtonTouched = controller_data.buttons_touched;
...@@ -276,27 +269,23 @@ bool TestHelper::GetControllerState(unsigned int index, ...@@ -276,27 +269,23 @@ bool TestHelper::GetControllerState(unsigned int index,
} }
return controller_data.is_valid; return controller_data.is_valid;
} }
lock_.Release();
return false; return false;
} }
bool TestHelper::GetControllerPose(unsigned int index, bool TestHelper::GetControllerPose(unsigned int index,
vr::TrackedDevicePose_t* controller_pose) { vr::TrackedDevicePose_t* controller_pose) {
lock_.Acquire(); base::AutoLock auto_lock(lock_);
if (test_hook_) { if (test_hook_) {
auto controller_data = test_hook_->WaitGetControllerData(index); auto controller_data = test_hook_->WaitGetControllerData(index);
lock_.Release();
*controller_pose = TranslatePose(controller_data.pose_data); *controller_pose = TranslatePose(controller_data.pose_data);
return controller_data.is_valid && controller_data.pose_data.is_valid; return controller_data.is_valid && controller_data.pose_data.is_valid;
} }
lock_.Release();
return false; return false;
} }
void TestHelper::SetTestHook(device::OpenVRTestHook* hook) { void TestHelper::SetTestHook(device::OpenVRTestHook* hook) {
lock_.Acquire(); base::AutoLock auto_lock(lock_);
test_hook_ = hook; test_hook_ = hook;
lock_.Release();
} }
} // namespace vr } // namespace vr
\ No newline at end of file
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#define DEVICE_VR_OPENVR_TEST_TEST_HELPER_H_ #define DEVICE_VR_OPENVR_TEST_TEST_HELPER_H_
#include "base/synchronization/lock.h" #include "base/synchronization/lock.h"
#include "base/thread_annotations.h"
#include "device/vr/openvr/test/test_hook.h" #include "device/vr/openvr/test/test_hook.h"
#include "third_party/openvr/src/headers/openvr.h" #include "third_party/openvr/src/headers/openvr.h"
...@@ -50,7 +51,7 @@ class TestHelper : public device::TestHookRegistration { ...@@ -50,7 +51,7 @@ class TestHelper : public device::TestHookRegistration {
void SetTestHook(device::OpenVRTestHook* hook) final; void SetTestHook(device::OpenVRTestHook* hook) final;
private: private:
device::OpenVRTestHook* test_hook_ = nullptr; device::OpenVRTestHook* test_hook_ GUARDED_BY(lock_) = nullptr;
base::Lock lock_; base::Lock lock_;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment