| // Copyright 2019 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/bind_helpers.h" |
| #include "chrome/browser/vr/test/ui_utils.h" |
| #include "chrome/browser/vr/test/webxr_vr_browser_test.h" |
| #include "chrome/browser/vr/ui_test_input.h" |
| |
| // Browser tests for testing permission requests that occur during a WebXR |
| // immersive session. |
| |
| namespace vr { |
| |
| void InSessionPermissionNotificationCommon(WebXrVrBrowserTestStandard* t) { |
| // We need to use a local server for permission requests to not hit a DCHECK. |
| t->LoadUrlAndAwaitInitialization( |
| t->GetEmbeddedServerUrlForHtmlTestFile("generic_webxr_page")); |
| t->EnterSessionWithUserGestureOrFail(); |
| // Use location instead of camera/microphone since those automatically reject |
| // if a suitable device is not connected. |
| // TODO(bsheedy): Find a way to support more permission types (maybe use |
| // MockPermissionPromptFactory?). |
| t->RunJavaScriptOrFail( |
| "navigator.geolocation.getCurrentPosition( ()=>{}, ()=>{} )"); |
| auto utils = UiUtils::Create(); |
| utils->PerformActionAndWaitForVisibilityStatus( |
| UserFriendlyElementName::kWebXrExternalPromptNotification, |
| true /* visible */, base::DoNothing::Once()); |
| } |
| |
| // Tests that permission requests that occur when in an immersive session cause |
| // a notification to appear telling the user that a permission request is |
| // visible in the browser and that closing the browser while this is still |
| // displayed does not cause any issues. |
| IN_PROC_BROWSER_TEST_F(WebXrVrBrowserTestStandard, |
| TestInSessionPermissionNotificationCloseWhileVisible) { |
| InSessionPermissionNotificationCommon(this); |
| } |
| |
| // TODO(https://crbug.com/920697): Add tests verifying the notification |
| // disappears when the permission is accepted/denied once we can query element |
| // visibility at any time using PermissionRequestManagerTestApi. |
| |
| } // namespace vr |