#include "chrome/browser/vr/chrome_xr_integration_client.h"
#include <memory>
#include <utility>
#include "base/command_line.h"
#include "base/metrics/user_metrics.h"
#include "base/metrics/user_metrics_action.h"
#include "build/build_config.h"
#include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h"
#include "chrome/browser/media/webrtc/media_stream_capture_indicator.h"
#include "chrome/browser/vr/ui_host/vr_ui_host_impl.h"
#include "content/public/browser/browser_xr_runtime.h"
#include "content/public/browser/media_stream_request.h"
#include "content/public/browser/xr_install_helper.h"
#include "content/public/common/content_switches.h"
#include "device/vr/buildflags/buildflags.h"
#include "device/vr/public/cpp/features.h"
#include "device/vr/public/cpp/vr_device_provider.h"
#include "device/vr/public/mojom/vr_service.mojom-shared.h"
#include "third_party/blink/public/common/mediastream/media_stream_request.h"
#include "third_party/blink/public/mojom/mediastream/media_stream.mojom.h"
#if BUILDFLAG(IS_ANDROID)
#if BUILDFLAG(ENABLE_ARCORE)
#include "chrome/browser/android/vr/ar_jni_headers/ArCompositorDelegateProviderImpl_jni.h"
#include "components/webxr/android/ar_compositor_delegate_provider.h"
#include "components/webxr/android/arcore_device_provider.h"
#include "components/webxr/android/arcore_install_helper.h"
#endif
#if BUILDFLAG(ENABLE_CARDBOARD)
#include "chrome/browser/android/vr/vr_jni_headers/VrCompositorDelegateProviderImpl_jni.h"
#include "components/webxr/android/cardboard_device_provider.h"
#include "components/webxr/android/vr_compositor_delegate_provider.h"
#endif
#if BUILDFLAG(ENABLE_OPENXR)
#include "components/webxr/android/openxr_device_provider.h"
#endif
#endif
namespace {
constexpr char kWebXrVideoCaptureDeviceId[] = …;
constexpr char kWebXrVideoCaptureDeviceName[] = …;
constexpr char kWebXrMediaStreamLabel[] = …;
class CameraIndicationObserver : public content::BrowserXRRuntime::Observer { … };
#if BUILDFLAG(IS_ANDROID) && BUILDFLAG(ENABLE_OPENXR)
bool IsForcedByCommandLine(const base::CommandLine* command_line,
const std::string& name) {
if (command_line->HasSwitch(switches::kWebXrForceRuntime)) {
return (base::CompareCaseInsensitiveASCII(
command_line->GetSwitchValueASCII(switches::kWebXrForceRuntime),
name) == 0);
}
return false;
}
#endif
}
namespace vr {
std::unique_ptr<content::XrInstallHelper>
ChromeXrIntegrationClient::GetInstallHelper(
device::mojom::XRDeviceId device_id) { … }
content::XRProviderList ChromeXrIntegrationClient::GetAdditionalProviders() { … }
std::unique_ptr<content::BrowserXRRuntime::Observer>
ChromeXrIntegrationClient::CreateRuntimeObserver() { … }
std::unique_ptr<content::VrUiHost> ChromeXrIntegrationClient::CreateVrUiHost(
content::WebContents& contents,
const std::vector<device::mojom::XRViewPtr>& views,
mojo::PendingRemote<device::mojom::ImmersiveOverlay> overlay) { … }
}