diff --git a/android_webview/lib/aw_main_delegate.cc b/android_webview/lib/aw_main_delegate.cc index f72b6fd496361c..900846c57153b8 100644 --- a/android_webview/lib/aw_main_delegate.cc +++ b/android_webview/lib/aw_main_delegate.cc @@ -211,6 +211,8 @@ bool AwMainDelegate::BasicStartupComplete(int* exit_code) { // TODO(https://crbug.com/963653): SmsReceiver is not yet supported on // WebView. features.DisableIfNotSet(::features::kSmsReceiver); + + features.DisableIfNotSet(::features::kWebXr); } android_webview::RegisterPathProvider(); diff --git a/android_webview/tools/system_webview_shell/test/data/webexposed/not-webview-exposed.txt b/android_webview/tools/system_webview_shell/test/data/webexposed/not-webview-exposed.txt index 237cc53113661a..6f0a395a748edf 100644 --- a/android_webview/tools/system_webview_shell/test/data/webexposed/not-webview-exposed.txt +++ b/android_webview/tools/system_webview_shell/test/data/webexposed/not-webview-exposed.txt @@ -55,13 +55,14 @@ interface HTMLMediaElement : HTMLElement # permissions API (crbug.com/490120), presentation API (crbug.com/521319), # share API (crbug.com/765923), custom scheme handlers (crbug.com/589502), -# media session API (crbug.com/925997), and sms API (crbug.com/963653) -# are not supported in webview. +# media session API (crbug.com/925997), sms API (crbug.com/963653), and WebXr +# API (crbug.com/1012899) are not supported in webview. interface Navigator getter mediaSession # crbug.com/925997 getter permissions # crbug.com/490120 getter presentation # crbug.com/521319 getter sms # crbug.com/963653 + getter xr # crbug.com/1012899 method registerProtocolHandler # crbug.com/589502 method unregisterProtocolHandler # crbug.com/589502 method share # crbug.com/765923 @@ -129,6 +130,31 @@ interface OffscreenCanvas : EventTarget interface HTMLCanvasElement : HTMLElement method transferControlToOffscreen +# WebXR dependent interfaces are not supported on WebView crbug.com/1012899 +interface XRView +interface XRViewport +interface XR : EventTarget +interface XRFrame +interface XRRigidTransform +interface XRSpace : EventTarget +interface XRInputSourcesChangeEvent : Event +interface XRInputSource +interface XRWebGLLayer +interface XRInputSourceEvent : Event +interface XRViewerPose : XRPose +interface XRInputSourceArray +interface XRRenderState +interface XRPose +interface XRSession : EventTarget +interface XRReferenceSpaceEvent : Event +interface XRBoundedReferenceSpace : XRReferenceSpace +interface XRSessionEvent : Event +interface XRReferenceSpace : XRSpace +interface WebGLRenderingContext + method makeXRCompatible +interface WebGL2RenderingContext + method makeXRCompatible + [GLOBAL OBJECT] method openDatabase attribute eventSender # test only diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/vr/WebXrVrTransitionTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/vr/WebXrVrTransitionTest.java index 7b6cba497be451..677f019325a869 100644 --- a/chrome/android/javatests/src/org/chromium/chrome/browser/vr/WebXrVrTransitionTest.java +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/vr/WebXrVrTransitionTest.java @@ -183,11 +183,11 @@ public void testWebVrDisabledWithoutFlagSet() { */ @Test @MediumTest - @CommandLineFlags.Remove({"enable-webvr"}) - @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) - public void testWebXrDisabledWithoutFlagSet() { - // TODO(bsheedy): Remove this test once WebXR is on by default without - // requiring an origin trial. + @CommandLineFlags + .Add({"disable-features=WebXR"}) + @CommandLineFlags.Remove({"enable-webvr"}) + @XrActivityRestriction({XrActivityRestriction.SupportedActivity.ALL}) + public void testWebXrDisabledWithoutFlagSet() { apiDisabledWithoutFlagSetImpl(WebXrVrTestFramework.getFileUrlForHtmlTestFile( "test_webxr_disabled_without_flag_set"), mWebXrVrTestFramework); diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc index 4ce8738fad8dda..82d6006f912843 100644 --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc @@ -153,8 +153,8 @@ void SetRuntimeFeaturesFromChromiumFeatures() { if (base::FeatureList::IsEnabled(features::kPeriodicBackgroundSync)) WebRuntimeFeatures::EnablePeriodicBackgroundSync(true); - if (base::FeatureList::IsEnabled(features::kWebXr)) - WebRuntimeFeatures::EnableWebXR(true); + WebRuntimeFeatures::EnableWebXR( + base::FeatureList::IsEnabled(features::kWebXr)); if (base::FeatureList::IsEnabled(features::kWebXrArDOMOverlay)) WebRuntimeFeatures::EnableWebXRARDOMOverlay(true); diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc index a627165fd38995..57733d7b93fbcd 100644 --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc @@ -693,7 +693,7 @@ const base::Feature kWebRtcUseGpuMemoryBufferVideoFrames{ const base::Feature kWebUsb{"WebUSB", base::FEATURE_ENABLED_BY_DEFAULT}; // Controls whether the WebXR Device API is enabled. -const base::Feature kWebXr{"WebXR", base::FEATURE_DISABLED_BY_DEFAULT}; +const base::Feature kWebXr{"WebXR", base::FEATURE_ENABLED_BY_DEFAULT}; // Enables access to AR features via the WebXR API. const base::Feature kWebXrArModule{"WebXRARModule", diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 index ef0908525b43fe..05960cbe0c87c0 100644 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 @@ -1799,8 +1799,7 @@ }, { name: "WebXR", - origin_trial_feature_name: "WebXRDeviceM76", - status: "experimental", + status: "stable", }, { name: "WebXRAnchors", @@ -1813,7 +1812,7 @@ }, { name: "WebXRARModule", - // depends_on: ["WebXR"], // TODO(https://crbug.com/954679): uncomment once bug is fixed + depends_on: ["WebXR"], status: "experimental", }, { diff --git a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/xr/webxr-origin-trial-interfaces.html b/third_party/blink/web_tests/http/tests/origin_trials/webexposed/xr/webxr-origin-trial-interfaces.html deleted file mode 100644 index 4aab4c445ef0db..00000000000000 --- a/third_party/blink/web_tests/http/tests/origin_trials/webexposed/xr/webxr-origin-trial-interfaces.html +++ /dev/null @@ -1,156 +0,0 @@ - - -WebXR - interfaces exposed by origin trial - - - - diff --git a/third_party/blink/web_tests/virtual/stable/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt b/third_party/blink/web_tests/virtual/stable/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt index e0ec92c9d1f461..e9c65a5aaec4d7 100644 --- a/third_party/blink/web_tests/virtual/stable/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/http/tests/serviceworker/webexposed/global-interface-listing-service-worker-expected.txt @@ -1951,6 +1951,7 @@ interface WebGL2RenderingContext method isVertexArray method lineWidth method linkProgram + method makeXRCompatible method pauseTransformFeedback method pixelStorei method polygonOffset @@ -2443,6 +2444,7 @@ interface WebGLRenderingContext method isTexture method lineWidth method linkProgram + method makeXRCompatible method pixelStorei method polygonOffset method readPixels diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/feature-policy-features-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/feature-policy-features-expected.txt index aee66211f8c5e8..324728f08401d3 100644 --- a/third_party/blink/web_tests/virtual/stable/webexposed/feature-policy-features-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/webexposed/feature-policy-features-expected.txt @@ -18,4 +18,5 @@ picture-in-picture sync-xhr usb vr +xr-spatial-tracking diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt index 5af578b448ac64..c2efd0547231cb 100644 --- a/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-dedicated-worker-expected.txt @@ -1973,6 +1973,7 @@ Starting worker: resources/global-interface-listing-worker.js [Worker] method isVertexArray [Worker] method lineWidth [Worker] method linkProgram +[Worker] method makeXRCompatible [Worker] method pauseTransformFeedback [Worker] method pixelStorei [Worker] method polygonOffset @@ -2465,6 +2466,7 @@ Starting worker: resources/global-interface-listing-worker.js [Worker] method isTexture [Worker] method lineWidth [Worker] method linkProgram +[Worker] method makeXRCompatible [Worker] method pixelStorei [Worker] method polygonOffset [Worker] method readPixels diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt index 2aae6d36f30402..5f8b634a1bc110 100644 --- a/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-expected.txt @@ -4324,6 +4324,7 @@ interface Navigator getter vendorSub getter webkitPersistentStorage getter webkitTemporaryStorage + getter xr method constructor method getBattery method getGamepads @@ -7953,6 +7954,7 @@ interface WebGL2RenderingContext method isVertexArray method lineWidth method linkProgram + method makeXRCompatible method pauseTransformFeedback method pixelStorei method polygonOffset @@ -8449,6 +8451,7 @@ interface WebGLRenderingContext method isTexture method lineWidth method linkProgram + method makeXRCompatible method pixelStorei method polygonOffset method readPixels @@ -8750,6 +8753,139 @@ interface XPathResult method constructor method iterateNext method snapshotItem +interface XR : EventTarget + attribute @@toStringTag + getter ondevicechange + method constructor + method isSessionSupported + method requestSession + method supportsSession + setter ondevicechange +interface XRBoundedReferenceSpace : XRReferenceSpace + attribute @@toStringTag + getter boundsGeometry + method constructor +interface XRFrame + attribute @@toStringTag + getter session + method constructor + method getPose + method getViewerPose +interface XRInputSource + attribute @@toStringTag + getter gripSpace + getter handedness + getter profiles + getter targetRayMode + getter targetRaySpace + method constructor +interface XRInputSourceArray + attribute @@toStringTag + getter length + method @@iterator + method constructor + method entries + method forEach + method keys + method values +interface XRInputSourceEvent : Event + attribute @@toStringTag + getter frame + getter inputSource + method constructor +interface XRInputSourcesChangeEvent : Event + attribute @@toStringTag + getter added + getter removed + getter session + method constructor +interface XRPose + attribute @@toStringTag + getter emulatedPosition + getter transform + method constructor +interface XRReferenceSpace : XRSpace + attribute @@toStringTag + getter onreset + method constructor + method getOffsetReferenceSpace + setter onreset +interface XRReferenceSpaceEvent : Event + attribute @@toStringTag + getter referenceSpace + getter transform + method constructor +interface XRRenderState + attribute @@toStringTag + getter baseLayer + getter depthFar + getter depthNear + getter inlineVerticalFieldOfView + method constructor +interface XRRigidTransform + attribute @@toStringTag + getter inverse + getter matrix + getter orientation + getter position + method constructor +interface XRSession : EventTarget + attribute @@toStringTag + getter inputSources + getter onend + getter oninputsourceschange + getter onselect + getter onselectend + getter onselectstart + getter onvisibilitychange + getter renderState + getter visibilityState + method cancelAnimationFrame + method constructor + method end + method requestAnimationFrame + method requestReferenceSpace + method updateRenderState + setter onend + setter oninputsourceschange + setter onselect + setter onselectend + setter onselectstart + setter onvisibilitychange +interface XRSessionEvent : Event + attribute @@toStringTag + getter session + method constructor +interface XRSpace : EventTarget + attribute @@toStringTag + method constructor +interface XRView + attribute @@toStringTag + getter eye + getter projectionMatrix + getter transform + method constructor +interface XRViewerPose : XRPose + attribute @@toStringTag + getter views + method constructor +interface XRViewport + attribute @@toStringTag + getter height + getter width + getter x + getter y + method constructor +interface XRWebGLLayer + static method getNativeFramebufferScaleFactor + attribute @@toStringTag + getter antialias + getter framebuffer + getter framebufferHeight + getter framebufferWidth + getter ignoreDepthValues + method constructor + method getViewport interface XSLTProcessor attribute @@toStringTag method clearParameters diff --git a/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-shared-worker-expected.txt b/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-shared-worker-expected.txt index 9a25a1e28fe312..84ada2db019fce 100644 --- a/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-shared-worker-expected.txt +++ b/third_party/blink/web_tests/virtual/stable/webexposed/global-interface-listing-shared-worker-expected.txt @@ -1869,6 +1869,7 @@ Starting worker: resources/global-interface-listing-worker.js [Worker] method isVertexArray [Worker] method lineWidth [Worker] method linkProgram +[Worker] method makeXRCompatible [Worker] method pauseTransformFeedback [Worker] method pixelStorei [Worker] method polygonOffset @@ -2361,6 +2362,7 @@ Starting worker: resources/global-interface-listing-worker.js [Worker] method isTexture [Worker] method lineWidth [Worker] method linkProgram +[Worker] method makeXRCompatible [Worker] method pixelStorei [Worker] method polygonOffset [Worker] method readPixels