Commit 9d5595f8 authored by Piotr Bialecki's avatar Piotr Bialecki Committed by Commit Bot

Move ArCoreJavaUtils, ArImmersiveOverlay & ArDelegate

Yet another CL to unblock WebXR in WebView / WebLayer work.

Changes:
- ArCoreJavaUtils, ArImmersiveOverlay & ArDelegatenow no longer need
  to live in //chrome - moved them to //components/webxr
- native ArCoreJavaUtils are also moved to //components/webxr
- ArDelegate needs to be consumable by ChromeActivity - added required
  DEPS entries and created a target that is present independently of
  enable_arcore build flag
- adjusted the location of linter suppression entries - converted them
  from entries in lint-baseline.xml into @SuppressLint attributes

Bug: 843374
Change-Id: I8fa8a7594f69fd4bb6cb65326ef626300b5ab55d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2490235Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Reviewed-by: default avatarAlexander Cooper <alcooper@chromium.org>
Commit-Queue: Piotr Bialecki <bialpio@chromium.org>
Cr-Commit-Position: refs/heads/master@{#820501}
parent b8c55dc8
...@@ -463,6 +463,7 @@ android_library("chrome_java") { ...@@ -463,6 +463,7 @@ android_library("chrome_java") {
"//components/webapk/android/libs/client:java", "//components/webapk/android/libs/client:java",
"//components/webapk/android/libs/common:java", "//components/webapk/android/libs/common:java",
"//components/webrtc/android:java", "//components/webrtc/android:java",
"//components/webxr/android:ar_java_interfaces",
"//content/public/android:content_java", "//content/public/android:content_java",
"//device/gamepad:java", "//device/gamepad:java",
"//media/base/android:media_java", "//media/base/android:media_java",
......
...@@ -1649,7 +1649,6 @@ chrome_java_sources = [ ...@@ -1649,7 +1649,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/usage_stats/UsageStatsMetricsReporter.java", "java/src/org/chromium/chrome/browser/usage_stats/UsageStatsMetricsReporter.java",
"java/src/org/chromium/chrome/browser/usage_stats/UsageStatsService.java", "java/src/org/chromium/chrome/browser/usage_stats/UsageStatsService.java",
"java/src/org/chromium/chrome/browser/usage_stats/WebsiteEvent.java", "java/src/org/chromium/chrome/browser/usage_stats/WebsiteEvent.java",
"java/src/org/chromium/chrome/browser/vr/ArDelegate.java",
"java/src/org/chromium/chrome/browser/vr/ArDelegateProvider.java", "java/src/org/chromium/chrome/browser/vr/ArDelegateProvider.java",
"java/src/org/chromium/chrome/browser/webapps/ActivateWebApkActivity.java", "java/src/org/chromium/chrome/browser/webapps/ActivateWebApkActivity.java",
"java/src/org/chromium/chrome/browser/webapps/ChromeWebApkHost.java", "java/src/org/chromium/chrome/browser/webapps/ChromeWebApkHost.java",
......
...@@ -1255,28 +1255,6 @@ ...@@ -1255,28 +1255,6 @@
column="20"/> column="20"/>
</issue> </issue>
<issue
id="ClickableViewAccessibility"
message="Custom view ``SurfaceView`` has `setOnTouchListener` called on it but does not override `performClick`"
errorLine1=" mSurfaceView.setOnTouchListener(ArImmersiveOverlay.this);"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="../../chrome/android/java/src/org/chromium/chrome/browser/vr/ArImmersiveOverlay.java"
line="176"
column="13"/>
</issue>
<issue
id="ClickableViewAccessibility"
message="`ArImmersiveOverlay#onTouch` should call `View#performClick` when a click is detected"
errorLine1=" public boolean onTouch(View v, MotionEvent ev) {"
errorLine2=" ~~~~~~~">
<location
file="../../chrome/android/java/src/org/chromium/chrome/browser/vr/ArImmersiveOverlay.java"
line="222"
column="20"/>
</issue>
<issue <issue
id="ClickableViewAccessibility" id="ClickableViewAccessibility"
message="`onTouch` lambda should call `View#performClick` when a click is detected" message="`onTouch` lambda should call `View#performClick` when a click is detected"
......
...@@ -52,6 +52,7 @@ include_rules = [ ...@@ -52,6 +52,7 @@ include_rules = [
"+components/sync/android/java/src/org/chromium/components/sync", "+components/sync/android/java/src/org/chromium/components/sync",
"+components/query_tiles/android/java", "+components/query_tiles/android/java",
"+components/thin_webview/java", "+components/thin_webview/java",
"+components/webxr/android/java",
"-content/public/android", "-content/public/android",
"+content/public/android/java/src/org/chromium/content_public", "+content/public/android/java/src/org/chromium/content_public",
......
...@@ -164,7 +164,6 @@ import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; ...@@ -164,7 +164,6 @@ import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarManageable; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarManageable;
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManagerProvider; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManagerProvider;
import org.chromium.chrome.browser.ui.system.StatusBarColorController; import org.chromium.chrome.browser.ui.system.StatusBarColorController;
import org.chromium.chrome.browser.vr.ArDelegate;
import org.chromium.chrome.browser.vr.ArDelegateProvider; import org.chromium.chrome.browser.vr.ArDelegateProvider;
import org.chromium.chrome.browser.vr.VrModuleProvider; import org.chromium.chrome.browser.vr.VrModuleProvider;
import org.chromium.chrome.browser.webapps.addtohomescreen.AddToHomescreenCoordinator; import org.chromium.chrome.browser.webapps.addtohomescreen.AddToHomescreenCoordinator;
...@@ -186,6 +185,7 @@ import org.chromium.components.policy.CombinedPolicyProvider; ...@@ -186,6 +185,7 @@ import org.chromium.components.policy.CombinedPolicyProvider;
import org.chromium.components.policy.CombinedPolicyProvider.PolicyChangeListener; import org.chromium.components.policy.CombinedPolicyProvider.PolicyChangeListener;
import org.chromium.components.user_prefs.UserPrefs; import org.chromium.components.user_prefs.UserPrefs;
import org.chromium.components.webapk.lib.client.WebApkValidator; import org.chromium.components.webapk.lib.client.WebApkValidator;
import org.chromium.components.webxr.ArDelegate;
import org.chromium.content_public.browser.LoadUrlParams; import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.content_public.browser.ScreenOrientationProvider; import org.chromium.content_public.browser.ScreenOrientationProvider;
import org.chromium.content_public.browser.SelectionPopupController; import org.chromium.content_public.browser.SelectionPopupController;
......
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
package org.chromium.chrome.browser.vr; package org.chromium.chrome.browser.vr;
import org.chromium.base.annotations.UsedByReflection; import org.chromium.base.annotations.UsedByReflection;
import org.chromium.components.webxr.ArCoreJavaUtils;
import org.chromium.components.webxr.ArDelegate;
/** /**
* This class provides methods to call into AR. It will be compiled into Chrome * This class provides methods to call into AR. It will be compiled into Chrome
......
...@@ -4,10 +4,16 @@ ...@@ -4,10 +4,16 @@
package org.chromium.chrome.browser.vr; package org.chromium.chrome.browser.vr;
import org.chromium.base.Log;
import org.chromium.components.webxr.ArDelegate;
/** /**
* Class used to create ArDelegate instances. * Class used to create ArDelegate instances.
*/ */
public class ArDelegateProvider { public class ArDelegateProvider {
private static final String TAG = "ArDelegateProvider";
private static final boolean DEBUG_LOGS = false;
/** /**
* Cached instance of ArDelegate implementation. It is ok to cache since the * Cached instance of ArDelegate implementation. It is ok to cache since the
* inclusion of ArDelegateImpl is controlled at build time. * inclusion of ArDelegateImpl is controlled at build time.
...@@ -23,6 +29,12 @@ public class ArDelegateProvider { ...@@ -23,6 +29,12 @@ public class ArDelegateProvider {
* Provides an instance of ArDelegate. * Provides an instance of ArDelegate.
*/ */
public static ArDelegate getDelegate() { public static ArDelegate getDelegate() {
if (DEBUG_LOGS) {
Log.i(TAG,
"ArDelegate.getDelegate(): sDelegateInitialized=" + sDelegateInitialized
+ ", is sDelegate null? " + (sDelegate == null));
}
if (sDelegateInitialized) return sDelegate; if (sDelegateInitialized) return sDelegate;
try { try {
...@@ -35,6 +47,10 @@ public class ArDelegateProvider { ...@@ -35,6 +47,10 @@ public class ArDelegateProvider {
sDelegateInitialized = true; sDelegateInitialized = true;
} }
if (DEBUG_LOGS) {
Log.i(TAG, "Is sDelegate null? " + (sDelegate == null));
}
return sDelegate; return sDelegate;
} }
} }
...@@ -45,8 +45,6 @@ if (enable_arcore) { ...@@ -45,8 +45,6 @@ if (enable_arcore) {
"java/src/org/chromium/chrome/browser/vr/ArCompositorDelegateImpl.java", "java/src/org/chromium/chrome/browser/vr/ArCompositorDelegateImpl.java",
"java/src/org/chromium/chrome/browser/vr/ArCompositorDelegateProviderImpl.java", "java/src/org/chromium/chrome/browser/vr/ArCompositorDelegateProviderImpl.java",
"java/src/org/chromium/chrome/browser/vr/ArCoreDeviceUtils.java", "java/src/org/chromium/chrome/browser/vr/ArCoreDeviceUtils.java",
"java/src/org/chromium/chrome/browser/vr/ArCoreJavaUtils.java",
"java/src/org/chromium/chrome/browser/vr/ArDelegateImpl.java", "java/src/org/chromium/chrome/browser/vr/ArDelegateImpl.java",
"java/src/org/chromium/chrome/browser/vr/ArImmersiveOverlay.java",
] ]
} }
...@@ -66,8 +66,6 @@ static_library("vr_android") { ...@@ -66,8 +66,6 @@ static_library("vr_android") {
"arcore_device/arcore_device_provider.cc", "arcore_device/arcore_device_provider.cc",
"arcore_device/arcore_device_provider.h", "arcore_device/arcore_device_provider.h",
"arcore_device/arcore_device_utils.cc", "arcore_device/arcore_device_utils.cc",
"arcore_device/arcore_java_utils.cc",
"arcore_device/arcore_java_utils.h",
] ]
} }
...@@ -177,7 +175,6 @@ if (enable_arcore) { ...@@ -177,7 +175,6 @@ if (enable_arcore) {
sources = [ sources = [
"//chrome/android/java/src/org/chromium/chrome/browser/vr/ArCompositorDelegateProviderImpl.java", "//chrome/android/java/src/org/chromium/chrome/browser/vr/ArCompositorDelegateProviderImpl.java",
"//chrome/android/java/src/org/chromium/chrome/browser/vr/ArCoreDeviceUtils.java", "//chrome/android/java/src/org/chromium/chrome/browser/vr/ArCoreDeviceUtils.java",
"//chrome/android/java/src/org/chromium/chrome/browser/vr/ArCoreJavaUtils.java",
] ]
} }
} }
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
#include "chrome/browser/android/vr/arcore_device/arcore_device_provider.h" #include "chrome/browser/android/vr/arcore_device/arcore_device_provider.h"
#include "chrome/browser/android/vr/arcore_device/arcore_java_utils.h" #include "components/webxr/android/arcore_java_utils.h"
#include "components/webxr/mailbox_to_surface_bridge_impl.h" #include "components/webxr/mailbox_to_surface_bridge_impl.h"
#include "device/vr/android/arcore/ar_image_transport.h" #include "device/vr/android/arcore/ar_image_transport.h"
#include "device/vr/android/arcore/arcore_device.h" #include "device/vr/android/arcore/arcore_device.h"
...@@ -34,7 +34,8 @@ void ArCoreDeviceProvider::Initialize( ...@@ -34,7 +34,8 @@ void ArCoreDeviceProvider::Initialize(
std::make_unique<ArCoreImplFactory>(), std::make_unique<ArCoreImplFactory>(),
std::make_unique<ArImageTransportFactory>(), std::make_unique<ArImageTransportFactory>(),
std::make_unique<webxr::MailboxToSurfaceBridgeFactoryImpl>(), std::make_unique<webxr::MailboxToSurfaceBridgeFactoryImpl>(),
std::make_unique<vr::ArCoreJavaUtils>(compositor_delegate_provider_)); std::make_unique<webxr::ArCoreJavaUtils>(
compositor_delegate_provider_));
add_device_callback.Run( add_device_callback.Run(
arcore_device_->GetId(), arcore_device_->GetVRDisplayInfo(), arcore_device_->GetId(), arcore_device_->GetVRDisplayInfo(),
......
...@@ -5,8 +5,6 @@ ...@@ -5,8 +5,6 @@
import("//build/config/android/rules.gni") import("//build/config/android/rules.gni")
import("//device/vr/buildflags/buildflags.gni") import("//device/vr/buildflags/buildflags.gni")
assert(enable_vr)
source_set("android_utils") { source_set("android_utils") {
sources = [ sources = [
"webxr_utils.cc", "webxr_utils.cc",
...@@ -32,6 +30,8 @@ source_set("android") { ...@@ -32,6 +30,8 @@ source_set("android") {
sources += [ sources += [
"arcore_install_helper.cc", "arcore_install_helper.cc",
"arcore_install_helper.h", "arcore_install_helper.h",
"arcore_java_utils.cc",
"arcore_java_utils.h",
] ]
} }
...@@ -46,14 +46,32 @@ source_set("android") { ...@@ -46,14 +46,32 @@ source_set("android") {
] ]
if (enable_arcore) { if (enable_arcore) {
deps += [ ":ar_jni_headers" ] deps += [
":ar_jni_headers",
"//device/vr/android/arcore:arcore",
]
} }
libs = [ "android" ] libs = [ "android" ]
} }
android_library("ar_java_interfaces") {
sources = [
"//components/webxr/android/java/src/org/chromium/components/webxr/ArCompositorDelegate.java",
"//components/webxr/android/java/src/org/chromium/components/webxr/ArCompositorDelegateProvider.java",
"//components/webxr/android/java/src/org/chromium/components/webxr/ArDelegate.java",
]
deps = [
"//content/public/android:content_java",
"//third_party/android_deps:androidx_annotation_annotation_java",
]
}
android_library("ar_java_base") { android_library("ar_java_base") {
deps = [ deps = [
":ar_java_base_resources",
":ar_java_interfaces",
":webxr_android_enums_java", ":webxr_android_enums_java",
"//base:base_java", "//base:base_java",
"//base:jni_java", "//base:jni_java",
...@@ -65,15 +83,19 @@ android_library("ar_java_base") { ...@@ -65,15 +83,19 @@ android_library("ar_java_base") {
] ]
sources = [ sources = [
"//components/webxr/android/java/src/org/chromium/components/webxr/ArCompositorDelegate.java",
"//components/webxr/android/java/src/org/chromium/components/webxr/ArCompositorDelegateProvider.java",
"//components/webxr/android/java/src/org/chromium/components/webxr/ArCoreInstallUtils.java", "//components/webxr/android/java/src/org/chromium/components/webxr/ArCoreInstallUtils.java",
"//components/webxr/android/java/src/org/chromium/components/webxr/ArCoreJavaUtils.java",
"//components/webxr/android/java/src/org/chromium/components/webxr/ArCoreShim.java", "//components/webxr/android/java/src/org/chromium/components/webxr/ArCoreShim.java",
"//components/webxr/android/java/src/org/chromium/components/webxr/ArImmersiveOverlay.java",
] ]
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
resources_package = "org.chromium.components.webxr" resources_package = "org.chromium.components.webxr"
} }
android_resources("ar_java_base_resources") {
deps = [ "//components/browser_ui/strings/android:browser_ui_strings_grd" ]
}
android_library("ar_java") { android_library("ar_java") {
deps = [ deps = [
":ar_java_base", ":ar_java_base",
...@@ -87,7 +109,10 @@ android_library("ar_java") { ...@@ -87,7 +109,10 @@ android_library("ar_java") {
if (enable_arcore) { if (enable_arcore) {
generate_jni("ar_jni_headers") { generate_jni("ar_jni_headers") {
sources = [ "//components/webxr/android/java/src/org/chromium/components/webxr/ArCoreInstallUtils.java" ] sources = [
"//components/webxr/android/java/src/org/chromium/components/webxr/ArCoreInstallUtils.java",
"//components/webxr/android/java/src/org/chromium/components/webxr/ArCoreJavaUtils.java",
]
} }
} }
......
...@@ -3,6 +3,7 @@ include_rules = [ ...@@ -3,6 +3,7 @@ include_rules = [
"+components/resources/android/theme_resources.h", "+components/resources/android/theme_resources.h",
"+components/strings/grit/components_strings.h", "+components/strings/grit/components_strings.h",
"+content/public/android/java/src/org/chromium/content_public", "+content/public/android/java/src/org/chromium/content_public",
"+device/vr/android/arcore",
"+ui/android", "+ui/android",
"+ui/base", "+ui/base",
] ]
...@@ -2,20 +2,20 @@ ...@@ -2,20 +2,20 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/android/vr/arcore_device/arcore_java_utils.h" #include "components/webxr/android/arcore_java_utils.h"
#include <memory> #include <memory>
#include <utility> #include <utility>
#include "base/android/jni_string.h" #include "base/android/jni_string.h"
#include "chrome/browser/android/vr/ar_jni_headers/ArCoreJavaUtils_jni.h" #include "components/webxr/android/ar_jni_headers/ArCoreJavaUtils_jni.h"
#include "components/webxr/android/webxr_utils.h" #include "components/webxr/android/webxr_utils.h"
#include "device/vr/android/arcore/arcore_shim.h" #include "device/vr/android/arcore/arcore_shim.h"
using base::android::AttachCurrentThread; using base::android::AttachCurrentThread;
using base::android::ScopedJavaLocalRef; using base::android::ScopedJavaLocalRef;
namespace vr { namespace webxr {
ArCoreJavaUtils::ArCoreJavaUtils( ArCoreJavaUtils::ArCoreJavaUtils(
webxr::ArCompositorDelegateProvider compositor_delegate_provider) webxr::ArCompositorDelegateProvider compositor_delegate_provider)
...@@ -39,9 +39,9 @@ void ArCoreJavaUtils::RequestArSession( ...@@ -39,9 +39,9 @@ void ArCoreJavaUtils::RequestArSession(
int render_process_id, int render_process_id,
int render_frame_id, int render_frame_id,
bool use_overlay, bool use_overlay,
SurfaceReadyCallback ready_callback, vr::SurfaceReadyCallback ready_callback,
SurfaceTouchCallback touch_callback, vr::SurfaceTouchCallback touch_callback,
SurfaceDestroyedCallback destroyed_callback) { vr::SurfaceDestroyedCallback destroyed_callback) {
DVLOG(1) << __func__; DVLOG(1) << __func__;
JNIEnv* env = AttachCurrentThread(); JNIEnv* env = AttachCurrentThread();
...@@ -124,7 +124,8 @@ bool ArCoreJavaUtils::EnsureLoaded() { ...@@ -124,7 +124,8 @@ bool ArCoreJavaUtils::EnsureLoaded() {
return false; return false;
} }
return LoadArCoreSdk(base::android::ConvertJavaStringToUTF8(env, java_path)); return vr::LoadArCoreSdk(
base::android::ConvertJavaStringToUTF8(env, java_path));
} }
ScopedJavaLocalRef<jobject> ArCoreJavaUtils::GetApplicationContext() { ScopedJavaLocalRef<jobject> ArCoreJavaUtils::GetApplicationContext() {
...@@ -132,4 +133,4 @@ ScopedJavaLocalRef<jobject> ArCoreJavaUtils::GetApplicationContext() { ...@@ -132,4 +133,4 @@ ScopedJavaLocalRef<jobject> ArCoreJavaUtils::GetApplicationContext() {
return Java_ArCoreJavaUtils_getApplicationContext(env); return Java_ArCoreJavaUtils_getApplicationContext(env);
} }
} // namespace vr } // namespace webxr
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CHROME_BROWSER_ANDROID_VR_ARCORE_DEVICE_ARCORE_JAVA_UTILS_H_ #ifndef COMPONENTS_WEBXR_ANDROID_ARCORE_JAVA_UTILS_H_
#define CHROME_BROWSER_ANDROID_VR_ARCORE_DEVICE_ARCORE_JAVA_UTILS_H_ #define COMPONENTS_WEBXR_ANDROID_ARCORE_JAVA_UTILS_H_
#include <android/native_window_jni.h> #include <android/native_window_jni.h>
#include <jni.h> #include <jni.h>
...@@ -14,21 +14,22 @@ ...@@ -14,21 +14,22 @@
#include "components/webxr/android/ar_compositor_delegate_provider.h" #include "components/webxr/android/ar_compositor_delegate_provider.h"
#include "device/vr/android/arcore/arcore_session_utils.h" #include "device/vr/android/arcore/arcore_session_utils.h"
namespace vr { namespace webxr {
class ArCoreJavaUtils : public ArCoreSessionUtils { class ArCoreJavaUtils : public vr::ArCoreSessionUtils {
public: public:
explicit ArCoreJavaUtils( explicit ArCoreJavaUtils(
webxr::ArCompositorDelegateProvider compositor_delegate_provider); webxr::ArCompositorDelegateProvider compositor_delegate_provider);
~ArCoreJavaUtils() override; ~ArCoreJavaUtils() override;
// ArCoreSessionUtils: // ArCoreSessionUtils:
void RequestArSession(int render_process_id, void RequestArSession(
int render_process_id,
int render_frame_id, int render_frame_id,
bool use_overlay, bool use_overlay,
SurfaceReadyCallback ready_callback, vr::SurfaceReadyCallback ready_callback,
SurfaceTouchCallback touch_callback, vr::SurfaceTouchCallback touch_callback,
SurfaceDestroyedCallback destroyed_callback) override; vr::SurfaceDestroyedCallback destroyed_callback) override;
void EndSession() override; void EndSession() override;
bool EnsureLoaded() override; bool EnsureLoaded() override;
base::android::ScopedJavaLocalRef<jobject> GetApplicationContext() override; base::android::ScopedJavaLocalRef<jobject> GetApplicationContext() override;
...@@ -57,11 +58,11 @@ class ArCoreJavaUtils : public ArCoreSessionUtils { ...@@ -57,11 +58,11 @@ class ArCoreJavaUtils : public ArCoreSessionUtils {
webxr::ArCompositorDelegateProvider compositor_delegate_provider_; webxr::ArCompositorDelegateProvider compositor_delegate_provider_;
SurfaceReadyCallback surface_ready_callback_; vr::SurfaceReadyCallback surface_ready_callback_;
SurfaceTouchCallback surface_touch_callback_; vr::SurfaceTouchCallback surface_touch_callback_;
SurfaceDestroyedCallback surface_destroyed_callback_; vr::SurfaceDestroyedCallback surface_destroyed_callback_;
}; };
} // namespace vr } // namespace webxr
#endif // CHROME_BROWSER_ANDROID_VR_ARCORE_DEVICE_ARCORE_JAVA_UTILS_H_ #endif // COMPONENTS_WEBXR_ANDROID_ARCORE_JAVA_UTILS_H_
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
package org.chromium.chrome.browser.vr; package org.chromium.components.webxr;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
...@@ -15,7 +15,6 @@ import org.chromium.base.ThreadUtils; ...@@ -15,7 +15,6 @@ import org.chromium.base.ThreadUtils;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods; import org.chromium.base.annotations.NativeMethods;
import org.chromium.components.webxr.ArCompositorDelegateProvider;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
...@@ -25,7 +24,7 @@ import org.chromium.ui.base.WindowAndroid; ...@@ -25,7 +24,7 @@ import org.chromium.ui.base.WindowAndroid;
* <p>This class provides static methods called by ArDelegateImpl via ArDelegateProvider, * <p>This class provides static methods called by ArDelegateImpl via ArDelegateProvider,
* and provides JNI interfaces to/from the C++ AR code.</p> * and provides JNI interfaces to/from the C++ AR code.</p>
*/ */
@JNINamespace("vr") @JNINamespace("webxr")
public class ArCoreJavaUtils { public class ArCoreJavaUtils {
private static final String TAG = "ArCoreJavaUtils"; private static final String TAG = "ArCoreJavaUtils";
private static final boolean DEBUG_LOGS = false; private static final boolean DEBUG_LOGS = false;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
package org.chromium.chrome.browser.vr; package org.chromium.components.webxr;
/** /**
* Interface used by ChromeActivity to communicate with AR code that is only * Interface used by ChromeActivity to communicate with AR code that is only
......
...@@ -2,8 +2,9 @@ ...@@ -2,8 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
package org.chromium.chrome.browser.vr; package org.chromium.components.webxr;
import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.app.Dialog; import android.app.Dialog;
import android.content.DialogInterface; import android.content.DialogInterface;
...@@ -23,8 +24,6 @@ import android.view.WindowManager; ...@@ -23,8 +24,6 @@ import android.view.WindowManager;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import org.chromium.base.Log; import org.chromium.base.Log;
import org.chromium.chrome.R;
import org.chromium.components.webxr.ArCompositorDelegate;
import org.chromium.content_public.browser.ScreenOrientationDelegate; import org.chromium.content_public.browser.ScreenOrientationDelegate;
import org.chromium.content_public.browser.ScreenOrientationProvider; import org.chromium.content_public.browser.ScreenOrientationProvider;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
...@@ -167,6 +166,7 @@ public class ArImmersiveOverlay ...@@ -167,6 +166,7 @@ public class ArImmersiveOverlay
private SurfaceView mSurfaceView; private SurfaceView mSurfaceView;
private WebContentsObserver mWebContentsObserver; private WebContentsObserver mWebContentsObserver;
@SuppressLint("ClickableViewAccessibility")
public SurfaceUiCompositor() { public SurfaceUiCompositor() {
mSurfaceView = new SurfaceView(mActivity); mSurfaceView = new SurfaceView(mActivity);
// Keep the camera layer at "default" Z order. Chrome's compositor SurfaceView is in // Keep the camera layer at "default" Z order. Chrome's compositor SurfaceView is in
...@@ -229,6 +229,7 @@ public class ArImmersiveOverlay ...@@ -229,6 +229,7 @@ public class ArImmersiveOverlay
} }
@Override // View.OnTouchListener @Override // View.OnTouchListener
@SuppressLint("ClickableViewAccessibility")
public boolean onTouch(View v, MotionEvent ev) { public boolean onTouch(View v, MotionEvent ev) {
// Only forward primary actions, ignore more complex events such as secondary pointer // Only forward primary actions, ignore more complex events such as secondary pointer
// touches. Ignore batching since we're only sending one ray pose per frame. // touches. Ignore batching since we're only sending one ray pose per frame.
......
...@@ -17,6 +17,8 @@ bool create_called = false; ...@@ -17,6 +17,8 @@ bool create_called = false;
// static // static
std::unique_ptr<device::VRDeviceProvider> std::unique_ptr<device::VRDeviceProvider>
ArCoreDeviceProviderFactory::Create() { ArCoreDeviceProviderFactory::Create() {
DVLOG(2) << __func__;
create_called = true; create_called = true;
if (!g_arcore_device_provider_factory) if (!g_arcore_device_provider_factory)
return nullptr; return nullptr;
...@@ -26,6 +28,8 @@ ArCoreDeviceProviderFactory::Create() { ...@@ -26,6 +28,8 @@ ArCoreDeviceProviderFactory::Create() {
// static // static
void ArCoreDeviceProviderFactory::Install( void ArCoreDeviceProviderFactory::Install(
std::unique_ptr<ArCoreDeviceProviderFactory> factory) { std::unique_ptr<ArCoreDeviceProviderFactory> factory) {
DVLOG(2) << __func__;
DCHECK_NE(g_arcore_device_provider_factory, factory.get()); DCHECK_NE(g_arcore_device_provider_factory, factory.get());
if (g_arcore_device_provider_factory) { if (g_arcore_device_provider_factory) {
delete g_arcore_device_provider_factory; delete g_arcore_device_provider_factory;
......
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