Commit 1cbe3f77 authored by Alex Cooper's avatar Alex Cooper Committed by Commit Bot

Consolidate GetTabFromRenderer Implementations

There are currently two separate implementations of the same code.
Upcoming refactors to split the installation and consent flow logic
from each other will make three implementations. Create a utils file so
that the Android runtimes can share the implementation of this method.

Fixed: 1046593
Change-Id: I55a20229f0150aea2f27df333245d31094cbee28
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2026651
Commit-Queue: Alexander Cooper <alcooper@chromium.org>
Reviewed-by: default avatarKlaus Weidner <klausw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#736226}
parent c9db17ef
......@@ -5293,7 +5293,6 @@ jumbo_static_library("browser") {
"vr/service/browser_xr_runtime.h",
"vr/service/vr_service_impl.cc",
"vr/service/vr_service_impl.h",
"vr/service/xr_consent_helper.cc",
"vr/service/xr_consent_helper.h",
"vr/service/xr_runtime_manager.cc",
"vr/service/xr_runtime_manager.h",
......
......@@ -16,6 +16,8 @@ static_library("vr_android") {
sources = [
"android_ui_gesture_target.cc",
"android_ui_gesture_target.h",
"android_vr_utils.cc",
"android_vr_utils.h",
"android_vsync_helper.cc",
"android_vsync_helper.h",
"autocomplete_controller.cc",
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Copyright 2017 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 "chrome/browser/vr/service/xr_consent_helper.h"
#include "chrome/browser/android/vr/android_vr_utils.h"
#include "chrome/browser/android/tab_android.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
#if defined(OS_ANDROID)
#include "chrome/browser/android/tab_android.h"
#endif
namespace vr {
XrConsentHelper::XrConsentHelper() = default;
XrConsentHelper::~XrConsentHelper() = default;
// static
content::WebContents* XrConsentHelper::GetWebContentsFromRenderer(
base::android::ScopedJavaLocalRef<jobject> GetTabFromRenderer(
int render_process_id,
int render_frame_id) {
content::RenderFrameHost* render_frame_host =
......@@ -28,18 +21,6 @@ content::WebContents* XrConsentHelper::GetWebContentsFromRenderer(
content::WebContents::FromRenderFrameHost(render_frame_host);
DCHECK(web_contents);
return web_contents;
}
#if defined(OS_ANDROID)
// static
base::android::ScopedJavaLocalRef<jobject> XrConsentHelper::GetTabFromRenderer(
int render_process_id,
int render_frame_id) {
auto* web_contents =
GetWebContentsFromRenderer(render_process_id, render_frame_id);
DCHECK(web_contents);
TabAndroid* tab_android = TabAndroid::FromWebContents(web_contents);
DCHECK(tab_android);
......@@ -49,5 +30,5 @@ base::android::ScopedJavaLocalRef<jobject> XrConsentHelper::GetTabFromRenderer(
return j_tab_android;
}
#endif
} // namespace vr
// Copyright 2017 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.
#ifndef CHROME_BROWSER_ANDROID_VR_ANDROID_VR_UTILS_H_
#define CHROME_BROWSER_ANDROID_VR_ANDROID_VR_UTILS_H_
#include "base/android/jni_android.h"
// Functions in this file are currently GVR/ArCore specific functions. If other
// platforms need the same function here, please move it to
// chrome/browser/vr/*util.cc|h
namespace vr {
base::android::ScopedJavaLocalRef<jobject> GetTabFromRenderer(
int render_process_id,
int render_frame_id);
} // namespace vr
#endif // CHROME_BROWSER_ANDROID_VR_ANDROID_VR_UTILS_H_
......@@ -9,6 +9,7 @@
#include "base/bind.h"
#include "chrome/android/features/vr/jni_headers/ArConsentDialog_jni.h"
#include "chrome/browser/android/vr/android_vr_utils.h"
#include "chrome/browser/android/vr/ar_jni_headers/ArCoreInstallUtils_jni.h"
#include "chrome/browser/android/vr/arcore_device/arcore_device_provider.h"
#include "device/vr/android/arcore/arcore_device_provider_factory.h"
......
......@@ -8,11 +8,9 @@
#include <utility>
#include "base/android/jni_string.h"
#include "chrome/browser/android/tab_android.h"
#include "chrome/browser/android/vr/android_vr_utils.h"
#include "chrome/browser/android/vr/ar_jni_headers/ArCoreJavaUtils_jni.h"
#include "chrome/browser/android/vr/arcore_device/arcore_shim.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/web_contents.h"
using base::android::AttachCurrentThread;
using base::android::ScopedJavaLocalRef;
......@@ -51,7 +49,7 @@ void ArCoreJavaUtils::RequestArSession(
Java_ArCoreJavaUtils_startSession(
env, j_arcore_java_utils_,
getTabFromRenderer(render_process_id, render_frame_id), use_overlay);
GetTabFromRenderer(render_process_id, render_frame_id), use_overlay);
}
void ArCoreJavaUtils::EndSession() {
......@@ -128,25 +126,4 @@ ScopedJavaLocalRef<jobject> ArCoreJavaUtils::GetApplicationContext() {
return Java_ArCoreJavaUtils_getApplicationContext(env);
}
base::android::ScopedJavaLocalRef<jobject> ArCoreJavaUtils::getTabFromRenderer(
int render_process_id,
int render_frame_id) {
content::RenderFrameHost* render_frame_host =
content::RenderFrameHost::FromID(render_process_id, render_frame_id);
DCHECK(render_frame_host);
content::WebContents* web_contents =
content::WebContents::FromRenderFrameHost(render_frame_host);
DCHECK(web_contents);
TabAndroid* tab_android = TabAndroid::FromWebContents(web_contents);
DCHECK(tab_android);
base::android::ScopedJavaLocalRef<jobject> j_tab_android =
tab_android->GetJavaObject();
DCHECK(!j_tab_android.is_null());
return j_tab_android;
}
} // namespace vr
......@@ -49,9 +49,6 @@ class ArCoreJavaUtils : public ArCoreSessionUtils {
const base::android::JavaParamRef<jobject>& obj);
private:
base::android::ScopedJavaLocalRef<jobject> getTabFromRenderer(
int render_process_id,
int render_frame_id);
base::android::ScopedJavaGlobalRef<jobject> j_arcore_java_utils_;
......
......@@ -11,6 +11,7 @@
#include "base/callback.h"
#include "base/macros.h"
#include "chrome/android/features/vr/jni_headers/VrConsentDialog_jni.h"
#include "chrome/browser/android/vr/android_vr_utils.h"
using base::android::AttachCurrentThread;
......
......@@ -5,21 +5,9 @@
#ifndef CHROME_BROWSER_VR_SERVICE_XR_CONSENT_HELPER_H_
#define CHROME_BROWSER_VR_SERVICE_XR_CONSENT_HELPER_H_
#include <memory>
#include "base/callback_forward.h"
#include "base/macros.h"
#include "build/build_config.h"
#include "chrome/browser/vr/service/xr_consent_prompt_level.h"
#if defined(OS_ANDROID)
#include "base/android/jni_android.h"
#endif
namespace content {
class WebContents;
}
namespace vr {
typedef base::OnceCallback<void(XrConsentPromptLevel, bool)>
......@@ -27,7 +15,7 @@ typedef base::OnceCallback<void(XrConsentPromptLevel, bool)>
class XrConsentHelper {
public:
virtual ~XrConsentHelper();
virtual ~XrConsentHelper() = default;
virtual void ShowConsentPrompt(int render_process_id,
int render_frame_id,
......@@ -35,18 +23,7 @@ class XrConsentHelper {
OnUserConsentCallback) = 0;
protected:
XrConsentHelper();
// Gets a WebContents from a given |render_process_id| and |render_frame_id|.
// The return value is guaranteed non-null.
static content::WebContents* GetWebContentsFromRenderer(int render_process_id,
int render_frame_id);
#if defined(OS_ANDROID)
static base::android::ScopedJavaLocalRef<jobject> GetTabFromRenderer(
int render_process_id,
int render_frame_id);
#endif
XrConsentHelper() = default;
private:
XrConsentHelper(const XrConsentHelper&) = delete;
......
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