| // Copyright 2018 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_VR_UI_TEST_INPUT_H_ |
| #define CHROME_BROWSER_VR_UI_TEST_INPUT_H_ |
| |
| #include "base/functional/callback.h" |
| #include "base/time/time.h" |
| #include "chrome/browser/vr/vr_base_export.h" |
| |
| namespace vr { |
| |
| // These are used to map user-friendly names, e.g. URL_BAR, to the underlying |
| // element names for interaction during testing. |
| // GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.vr |
| enum class UserFriendlyElementName : int { |
| kWebXrAudioIndicator, // Toast in WebXR indicating the microphone permission |
| // is in use. |
| kMicrophonePermissionIndicator, // The microphone icon that appears when a |
| // page is using the microphone permission. |
| kWebXrExternalPromptNotification, // The notification shown in the headset |
| // if a permission is requested while in |
| // immersive WebXR session. |
| kCameraPermissionIndicator, // The camera icon that appears when a page is |
| // using the camera permission. |
| kLocationPermissionIndicator, // The location icon that appears when a page |
| // is using the high accuracy location |
| // permission. |
| kWebXrLocationPermissionIndicator, // The location icon that appears when a |
| // page is using the location permission. |
| kWebXrVideoPermissionIndicator, // Toast in WebXR indicating the camera |
| // permission is in use. |
| }; |
| |
| // Holds all the information necessary to keep track of and report whether a |
| // UI element changed visibility in the allotted time. |
| struct VR_BASE_EXPORT UiVisibilityState { |
| // The UI element being watched. |
| UserFriendlyElementName element_to_watch = |
| UserFriendlyElementName::kWebXrExternalPromptNotification; |
| // The desired visibility state of the element. |
| bool expected_visibile = false; |
| // How long to wait for a visibility change before timing out. |
| base::TimeDelta timeout_ms = base::TimeDelta::Min(); |
| // The point in time that we started watching for visibility changes. |
| base::TimeTicks start_time = base::TimeTicks::Now(); |
| // Reports whether the visibility matched the expectation or timed out. |
| base::OnceCallback<void(bool)> on_visibility_change_result; |
| |
| UiVisibilityState(); |
| ~UiVisibilityState(); |
| UiVisibilityState(UiVisibilityState&& other); |
| UiVisibilityState& operator=(UiVisibilityState&& other); |
| }; |
| |
| } // namespace vr |
| |
| #endif // CHROME_BROWSER_VR_UI_TEST_INPUT_H_ |