Commit 8d1d4b62 authored by Clark DuVall's avatar Clark DuVall Committed by Commit Bot

Remove dependency on TabAndroid in permissions classes

This will make it easier to move these into //components/permissions.

Bug: 1025609
Change-Id: Ic0745279a303c447beac0c3072dd59e494a15d1f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2065620
Commit-Queue: Clark DuVall <cduvall@chromium.org>
Reviewed-by: default avatarAndy Paicu <andypaicu@chromium.org>
Reviewed-by: default avatarMatthew Jones <mdjones@chromium.org>
Cr-Commit-Position: refs/heads/master@{#743998}
parent e3546a69
...@@ -13,16 +13,15 @@ import org.chromium.chrome.browser.permissions.AndroidPermissionRequester; ...@@ -13,16 +13,15 @@ import org.chromium.chrome.browser.permissions.AndroidPermissionRequester;
import org.chromium.chrome.browser.settings.SettingsLauncher; import org.chromium.chrome.browser.settings.SettingsLauncher;
import org.chromium.chrome.browser.settings.website.SingleCategorySettings; import org.chromium.chrome.browser.settings.website.SingleCategorySettings;
import org.chromium.chrome.browser.settings.website.SiteSettingsCategory; import org.chromium.chrome.browser.settings.website.SiteSettingsCategory;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.ui.base.WindowAndroid;
/** /**
* An infobar used for prompting the user to grant a web API permission. * An infobar used for prompting the user to grant a web API permission.
*/ */
public class PermissionInfoBar public class PermissionInfoBar
extends ConfirmInfoBar implements AndroidPermissionRequester.RequestDelegate { extends ConfirmInfoBar implements AndroidPermissionRequester.RequestDelegate {
/** The window which this infobar will be displayed upon. */
/** The tab which this infobar will be displayed upon. */ protected final WindowAndroid mWindow;
protected final Tab mTab;
/** The content settings types corresponding to the permission requested in this infobar. */ /** The content settings types corresponding to the permission requested in this infobar. */
protected int[] mContentSettingsTypes; protected int[] mContentSettingsTypes;
...@@ -42,12 +41,12 @@ public class PermissionInfoBar ...@@ -42,12 +41,12 @@ public class PermissionInfoBar
/** The secondary text shown below the message in the expanded state. */ /** The secondary text shown below the message in the expanded state. */
private String mDescription; private String mDescription;
protected PermissionInfoBar(Tab tab, int[] contentSettingsTypes, int iconDrawableId, protected PermissionInfoBar(WindowAndroid window, int[] contentSettingsTypes,
String compactMessage, String compactLinkText, String message, String description, int iconDrawableId, String compactMessage, String compactLinkText, String message,
String primaryButtonText, String secondaryButtonText) { String description, String primaryButtonText, String secondaryButtonText) {
super(iconDrawableId, R.color.infobar_icon_drawable_color, null /* iconBitmap */, message, super(iconDrawableId, R.color.infobar_icon_drawable_color, null /* iconBitmap */, message,
null /* linkText */, primaryButtonText, secondaryButtonText); null /* linkText */, primaryButtonText, secondaryButtonText);
mTab = tab; mWindow = window;
mContentSettingsTypes = contentSettingsTypes; mContentSettingsTypes = contentSettingsTypes;
mManageButtonLastClicked = false; mManageButtonLastClicked = false;
mIsExpanded = false; mIsExpanded = false;
...@@ -88,7 +87,7 @@ public class PermissionInfoBar ...@@ -88,7 +87,7 @@ public class PermissionInfoBar
// requestAndroidPermissions will call back into this class to finalize the action if it // requestAndroidPermissions will call back into this class to finalize the action if it
// returns true. // returns true.
if (AndroidPermissionRequester.requestAndroidPermissions( if (AndroidPermissionRequester.requestAndroidPermissions(
mTab, mContentSettingsTypes.clone(), this)) { mWindow, mContentSettingsTypes.clone(), this)) {
return; return;
} }
} else { } else {
...@@ -137,7 +136,7 @@ public class PermissionInfoBar ...@@ -137,7 +136,7 @@ public class PermissionInfoBar
/** /**
* Creates and begins the process for showing a PermissionInfoBar. * Creates and begins the process for showing a PermissionInfoBar.
* @param tab The owning tab for the infobar. * @param window The window this infobar will be displayed upon.
* @param contentSettingsTypes The list of ContentSettingTypes being requested by this infobar. * @param contentSettingsTypes The list of ContentSettingTypes being requested by this infobar.
* @param enumeratedIconId ID corresponding to the icon that will be shown for the infobar. * @param enumeratedIconId ID corresponding to the icon that will be shown for the infobar.
* The ID must have been mapped using the ResourceMapper class * The ID must have been mapped using the ResourceMapper class
...@@ -150,12 +149,12 @@ public class PermissionInfoBar ...@@ -150,12 +149,12 @@ public class PermissionInfoBar
* @param buttonManage String to display on the Manage button. * @param buttonManage String to display on the Manage button.
*/ */
@CalledByNative @CalledByNative
private static PermissionInfoBar create(Tab tab, int[] contentSettingsTypes, private static PermissionInfoBar create(WindowAndroid window, int[] contentSettingsTypes,
int enumeratedIconId, String compactMessage, String compactLinkText, String message, int enumeratedIconId, String compactMessage, String compactLinkText, String message,
String description, String buttonOk, String buttonManage) { String description, String buttonOk, String buttonManage) {
int drawableId = ResourceId.mapToDrawableId(enumeratedIconId); int drawableId = ResourceId.mapToDrawableId(enumeratedIconId);
PermissionInfoBar infoBar = new PermissionInfoBar(tab, contentSettingsTypes, drawableId, PermissionInfoBar infoBar = new PermissionInfoBar(window, contentSettingsTypes, drawableId,
compactMessage, compactLinkText, message, description, buttonOk, buttonManage); compactMessage, compactLinkText, message, description, buttonOk, buttonManage);
return infoBar; return infoBar;
......
...@@ -15,7 +15,6 @@ import androidx.annotation.StringRes; ...@@ -15,7 +15,6 @@ import androidx.annotation.StringRes;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.metrics.WebApkUma; import org.chromium.chrome.browser.metrics.WebApkUma;
import org.chromium.chrome.browser.settings.website.WebsitePreferenceBridge; import org.chromium.chrome.browser.settings.website.WebsitePreferenceBridge;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.webapps.WebApkActivity; import org.chromium.chrome.browser.webapps.WebApkActivity;
import org.chromium.components.content_settings.ContentSettingsType; import org.chromium.components.content_settings.ContentSettingsType;
import org.chromium.ui.base.PermissionCallback; import org.chromium.ui.base.PermissionCallback;
...@@ -89,9 +88,8 @@ public class AndroidPermissionRequester { ...@@ -89,9 +88,8 @@ public class AndroidPermissionRequester {
* If true is returned, this method will asynchronously request the necessary permissions using * If true is returned, this method will asynchronously request the necessary permissions using
* a dialog, running methods on the RequestDelegate when the user has made a decision. * a dialog, running methods on the RequestDelegate when the user has made a decision.
*/ */
public static boolean requestAndroidPermissions( public static boolean requestAndroidPermissions(final WindowAndroid windowAndroid,
final Tab tab, final int[] contentSettingsTypes, final RequestDelegate delegate) { final int[] contentSettingsTypes, final RequestDelegate delegate) {
final WindowAndroid windowAndroid = tab.getWindowAndroid();
if (windowAndroid == null) return false; if (windowAndroid == null) return false;
final SparseArray<String[]> contentSettingsTypesToPermissionsMap = final SparseArray<String[]> contentSettingsTypesToPermissionsMap =
...@@ -149,7 +147,9 @@ public class AndroidPermissionRequester { ...@@ -149,7 +147,9 @@ public class AndroidPermissionRequester {
+ deniedContentSettings; + deniedContentSettings;
showMissingPermissionDialog(activity, deniedStringId, showMissingPermissionDialog(activity, deniedStringId,
() -> requestAndroidPermissions(tab, contentSettingsTypes, delegate), ()
-> requestAndroidPermissions(
windowAndroid, contentSettingsTypes, delegate),
delegate::onAndroidPermissionCanceled); delegate::onAndroidPermissionCanceled);
} else if (deniedContentSettings.isEmpty()) { } else if (deniedContentSettings.isEmpty()) {
delegate.onAndroidPermissionAccepted(); delegate.onAndroidPermissionAccepted();
......
...@@ -5,13 +5,12 @@ ...@@ -5,13 +5,12 @@
package org.chromium.chrome.browser.permissions; package org.chromium.chrome.browser.permissions;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity;
import androidx.annotation.IntDef; import androidx.annotation.IntDef;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.tab.TabImpl;
import org.chromium.ui.modaldialog.DialogDismissalCause; import org.chromium.ui.modaldialog.DialogDismissalCause;
import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.ui.modaldialog.ModalDialogProperties; import org.chromium.ui.modaldialog.ModalDialogProperties;
...@@ -138,7 +137,7 @@ public class PermissionDialogController ...@@ -138,7 +137,7 @@ public class PermissionDialogController
assert mState == State.NOT_SHOWING; assert mState == State.NOT_SHOWING;
mDialogDelegate = mRequestQueue.remove(0); mDialogDelegate = mRequestQueue.remove(0);
ChromeActivity activity = ((TabImpl) mDialogDelegate.getTab()).getActivity(); Activity activity = mDialogDelegate.getWindow().getActivity().get();
// It's possible for the activity to be null if we reach here just after the user // It's possible for the activity to be null if we reach here just after the user
// backgrounds the browser and cleanup has happened. In that case, we can't show a prompt, // backgrounds the browser and cleanup has happened. In that case, we can't show a prompt,
...@@ -158,8 +157,7 @@ public class PermissionDialogController ...@@ -158,8 +157,7 @@ public class PermissionDialogController
return; return;
} }
mModalDialogManager = mModalDialogManager = mDialogDelegate.getWindow().getModalDialogManager();
((TabImpl) mDialogDelegate.getTab()).getActivity().getModalDialogManager();
mDialogModel = PermissionDialogModel.getModel(this, mDialogDelegate); mDialogModel = PermissionDialogModel.getModel(this, mDialogDelegate);
mModalDialogManager.showDialog(mDialogModel, ModalDialogManager.ModalDialogType.TAB); mModalDialogManager.showDialog(mDialogModel, ModalDialogManager.ModalDialogType.TAB);
mState = State.PROMPT_OPEN; mState = State.PROMPT_OPEN;
...@@ -205,7 +203,7 @@ public class PermissionDialogController ...@@ -205,7 +203,7 @@ public class PermissionDialogController
// no system level permissions need to be requested, so just run the // no system level permissions need to be requested, so just run the
// accept callback. // accept callback.
mState = State.REQUEST_ANDROID_PERMISSIONS; mState = State.REQUEST_ANDROID_PERMISSIONS;
if (!AndroidPermissionRequester.requestAndroidPermissions(mDialogDelegate.getTab(), if (!AndroidPermissionRequester.requestAndroidPermissions(mDialogDelegate.getWindow(),
mDialogDelegate.getContentSettingsTypes(), mDialogDelegate.getContentSettingsTypes(),
PermissionDialogController.this)) { PermissionDialogController.this)) {
onAndroidPermissionAccepted(); onAndroidPermissionAccepted();
......
...@@ -7,7 +7,7 @@ package org.chromium.chrome.browser.permissions; ...@@ -7,7 +7,7 @@ package org.chromium.chrome.browser.permissions;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.NativeMethods; import org.chromium.base.annotations.NativeMethods;
import org.chromium.chrome.browser.ResourceId; import org.chromium.chrome.browser.ResourceId;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.ui.base.WindowAndroid;
/** /**
* Delegate class for modal permission dialogs. Contains all of the data displayed in a prompt, * Delegate class for modal permission dialogs. Contains all of the data displayed in a prompt,
...@@ -24,8 +24,8 @@ public class PermissionDialogDelegate { ...@@ -24,8 +24,8 @@ public class PermissionDialogDelegate {
/** The controller for this class */ /** The controller for this class */
private PermissionDialogController mDialogController; private PermissionDialogController mDialogController;
/** The tab for which to create the dialog. */ /** The window for which to create the dialog. */
private Tab mTab; private WindowAndroid mWindow;
/** The icon to display in the dialog. */ /** The icon to display in the dialog. */
private int mDrawableId; private int mDrawableId;
...@@ -42,8 +42,8 @@ public class PermissionDialogDelegate { ...@@ -42,8 +42,8 @@ public class PermissionDialogDelegate {
/** The {@link ContentSettingsType}s requested in this dialog. */ /** The {@link ContentSettingsType}s requested in this dialog. */
private int[] mContentSettingsTypes; private int[] mContentSettingsTypes;
public Tab getTab() { public WindowAndroid getWindow() {
return mTab; return mWindow;
} }
public int[] getContentSettingsTypes() { public int[] getContentSettingsTypes() {
...@@ -105,7 +105,7 @@ public class PermissionDialogDelegate { ...@@ -105,7 +105,7 @@ public class PermissionDialogDelegate {
* Called from C++ by |nativeDelegatePtr| to instantiate this class. * Called from C++ by |nativeDelegatePtr| to instantiate this class.
* *
* @param nativeDelegatePtr The native counterpart that this object owns. * @param nativeDelegatePtr The native counterpart that this object owns.
* @param tab The tab to create the dialog for. * @param window The window to create the dialog for.
* @param contentSettingsTypes The content settings types requested by this dialog. * @param contentSettingsTypes The content settings types requested by this dialog.
* @param iconResourceId The id of the icon to display in the dialog. * @param iconResourceId The id of the icon to display in the dialog.
* @param message The message to display in the dialog. * @param message The message to display in the dialog.
...@@ -113,21 +113,21 @@ public class PermissionDialogDelegate { ...@@ -113,21 +113,21 @@ public class PermissionDialogDelegate {
* @param secondaryTextButton The text to display on the primary button. * @param secondaryTextButton The text to display on the primary button.
*/ */
@CalledByNative @CalledByNative
private static PermissionDialogDelegate create(long nativeDelegatePtr, Tab tab, private static PermissionDialogDelegate create(long nativeDelegatePtr, WindowAndroid window,
int[] contentSettingsTypes, int enumeratedIconId, String message, int[] contentSettingsTypes, int enumeratedIconId, String message,
String primaryButtonText, String secondaryButtonText) { String primaryButtonText, String secondaryButtonText) {
return new PermissionDialogDelegate(nativeDelegatePtr, tab, contentSettingsTypes, return new PermissionDialogDelegate(nativeDelegatePtr, window, contentSettingsTypes,
enumeratedIconId, message, primaryButtonText, secondaryButtonText); enumeratedIconId, message, primaryButtonText, secondaryButtonText);
} }
/** /**
* Upon construction, this class takes ownership of the passed in native delegate. * Upon construction, this class takes ownership of the passed in native delegate.
*/ */
private PermissionDialogDelegate(long nativeDelegatePtr, Tab tab, int[] contentSettingsTypes, private PermissionDialogDelegate(long nativeDelegatePtr, WindowAndroid window,
int enumeratedIconId, String message, String primaryButtonText, int[] contentSettingsTypes, int enumeratedIconId, String message,
String secondaryButtonText) { String primaryButtonText, String secondaryButtonText) {
mNativeDelegatePtr = nativeDelegatePtr; mNativeDelegatePtr = nativeDelegatePtr;
mTab = tab; mWindow = window;
mContentSettingsTypes = contentSettingsTypes; mContentSettingsTypes = contentSettingsTypes;
mDrawableId = ResourceId.mapToDrawableId(enumeratedIconId); mDrawableId = ResourceId.mapToDrawableId(enumeratedIconId);
mMessageText = message; mMessageText = message;
......
...@@ -12,7 +12,6 @@ import android.view.View; ...@@ -12,7 +12,6 @@ import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.tab.TabImpl;
import org.chromium.ui.modaldialog.ModalDialogProperties; import org.chromium.ui.modaldialog.ModalDialogProperties;
import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModel;
...@@ -22,7 +21,8 @@ import org.chromium.ui.modelutil.PropertyModel; ...@@ -22,7 +21,8 @@ import org.chromium.ui.modelutil.PropertyModel;
class PermissionDialogModel { class PermissionDialogModel {
public static PropertyModel getModel( public static PropertyModel getModel(
ModalDialogProperties.Controller controller, PermissionDialogDelegate delegate) { ModalDialogProperties.Controller controller, PermissionDialogDelegate delegate) {
Context context = ((TabImpl) delegate.getTab()).getActivity(); Context context = delegate.getWindow().getActivity().get();
assert context != null;
LayoutInflater inflater = LayoutInflater.from(context); LayoutInflater inflater = LayoutInflater.from(context);
View customView = inflater.inflate(R.layout.permission_dialog, null); View customView = inflater.inflate(R.layout.permission_dialog, null);
......
...@@ -13,9 +13,6 @@ ...@@ -13,9 +13,6 @@
#include "chrome/android/chrome_jni_headers/PermissionDialogController_jni.h" #include "chrome/android/chrome_jni_headers/PermissionDialogController_jni.h"
#include "chrome/android/chrome_jni_headers/PermissionDialogDelegate_jni.h" #include "chrome/android/chrome_jni_headers/PermissionDialogDelegate_jni.h"
#include "chrome/browser/android/resource_mapper.h" #include "chrome/browser/android/resource_mapper.h"
#include "chrome/browser/android/tab_android.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/chrome_features.h"
#include "chrome/grit/generated_resources.h" #include "chrome/grit/generated_resources.h"
#include "content/public/browser/navigation_handle.h" #include "content/public/browser/navigation_handle.h"
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
...@@ -30,19 +27,19 @@ void PermissionDialogDelegate::Create( ...@@ -30,19 +27,19 @@ void PermissionDialogDelegate::Create(
PermissionPromptAndroid* permission_prompt) { PermissionPromptAndroid* permission_prompt) {
DCHECK(web_contents); DCHECK(web_contents);
// If we don't have a tab, just act as though the prompt was dismissed. // If we don't have a window, just act as though the prompt was dismissed.
TabAndroid* tab = TabAndroid::FromWebContents(web_contents); if (!web_contents->GetTopLevelNativeWindow()) {
if (!tab) {
permission_prompt->Closing(); permission_prompt->Closing();
return; return;
} }
// Dispatch the dialog to Java, which manages the lifetime of this object. // Dispatch the dialog to Java, which manages the lifetime of this object.
new PermissionDialogDelegate(tab, permission_prompt); new PermissionDialogDelegate(web_contents, permission_prompt);
} }
void PermissionDialogDelegate::CreateJavaDelegate(JNIEnv* env, void PermissionDialogDelegate::CreateJavaDelegate(
TabAndroid* tab) { JNIEnv* env,
content::WebContents* web_contents) {
base::android::ScopedJavaLocalRef<jstring> primaryButtonText = base::android::ScopedJavaLocalRef<jstring> primaryButtonText =
ConvertUTF16ToJavaString(env, ConvertUTF16ToJavaString(env,
l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW)); l10n_util::GetStringUTF16(IDS_PERMISSION_ALLOW));
...@@ -57,7 +54,8 @@ void PermissionDialogDelegate::CreateJavaDelegate(JNIEnv* env, ...@@ -57,7 +54,8 @@ void PermissionDialogDelegate::CreateJavaDelegate(JNIEnv* env,
} }
j_delegate_.Reset(Java_PermissionDialogDelegate_create( j_delegate_.Reset(Java_PermissionDialogDelegate_create(
env, reinterpret_cast<uintptr_t>(this), tab->GetJavaObject(), env, reinterpret_cast<uintptr_t>(this),
web_contents->GetTopLevelNativeWindow()->GetJavaObject(),
base::android::ToJavaIntArray(env, content_settings_types), base::android::ToJavaIntArray(env, content_settings_types),
ResourceMapper::MapFromChromiumId(permission_prompt_->GetIconId()), ResourceMapper::MapFromChromiumId(permission_prompt_->GetIconId()),
ConvertUTF16ToJavaString(env, permission_prompt_->GetMessageText()), ConvertUTF16ToJavaString(env, permission_prompt_->GetMessageText()),
...@@ -85,16 +83,15 @@ void PermissionDialogDelegate::Destroy(JNIEnv* env, ...@@ -85,16 +83,15 @@ void PermissionDialogDelegate::Destroy(JNIEnv* env,
} }
PermissionDialogDelegate::PermissionDialogDelegate( PermissionDialogDelegate::PermissionDialogDelegate(
TabAndroid* tab, content::WebContents* web_contents,
PermissionPromptAndroid* permission_prompt) PermissionPromptAndroid* permission_prompt)
: content::WebContentsObserver(tab->web_contents()), : content::WebContentsObserver(web_contents),
permission_prompt_(permission_prompt) { permission_prompt_(permission_prompt) {
DCHECK(tab);
DCHECK(permission_prompt_); DCHECK(permission_prompt_);
// Create our Java counterpart, which manages our lifetime. // Create our Java counterpart, which manages our lifetime.
JNIEnv* env = base::android::AttachCurrentThread(); JNIEnv* env = base::android::AttachCurrentThread();
CreateJavaDelegate(env, tab); CreateJavaDelegate(env, web_contents);
// Send the Java delegate to the Java PermissionDialogController for display. // Send the Java delegate to the Java PermissionDialogController for display.
// The controller takes over lifetime management; when the Java delegate is no // The controller takes over lifetime management; when the Java delegate is no
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
#include "base/android/scoped_java_ref.h" #include "base/android/scoped_java_ref.h"
#include "base/callback.h" #include "base/callback.h"
#include "base/macros.h" #include "base/macros.h"
#include "chrome/browser/media/webrtc/media_stream_devices_controller.h"
#include "chrome/browser/permissions/permission_prompt_android.h" #include "chrome/browser/permissions/permission_prompt_android.h"
#include "components/content_settings/core/common/content_settings_types.h" #include "components/content_settings/core/common/content_settings_types.h"
#include "components/permissions/permission_util.h" #include "components/permissions/permission_util.h"
...@@ -21,7 +20,6 @@ using base::android::JavaParamRef; ...@@ -21,7 +20,6 @@ using base::android::JavaParamRef;
namespace content { namespace content {
class WebContents; class WebContents;
} }
class TabAndroid;
// Delegate class for displaying a permission prompt as a modal dialog. Used as // Delegate class for displaying a permission prompt as a modal dialog. Used as
// the native to Java interface to allow Java to communicate the user's // the native to Java interface to allow Java to communicate the user's
...@@ -46,12 +44,11 @@ class PermissionDialogDelegate : public content::WebContentsObserver { ...@@ -46,12 +44,11 @@ class PermissionDialogDelegate : public content::WebContentsObserver {
void Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj); void Destroy(JNIEnv* env, const JavaParamRef<jobject>& obj);
private: private:
PermissionDialogDelegate( PermissionDialogDelegate(content::WebContents* web_contents,
TabAndroid* tab, PermissionPromptAndroid* permission_prompt);
PermissionPromptAndroid* permission_prompt);
~PermissionDialogDelegate() override; ~PermissionDialogDelegate() override;
void CreateJavaDelegate(JNIEnv* env, TabAndroid* tab); void CreateJavaDelegate(JNIEnv* env, content::WebContents* web_contents);
// On navigation or page destruction, hide the dialog. // On navigation or page destruction, hide the dialog.
void DismissDialog(); void DismissDialog();
......
...@@ -14,6 +14,8 @@ ...@@ -14,6 +14,8 @@
#include "chrome/browser/android/resource_mapper.h" #include "chrome/browser/android/resource_mapper.h"
#include "chrome/browser/android/tab_android.h" #include "chrome/browser/android/tab_android.h"
#include "chrome/browser/permissions/grouped_permission_infobar_delegate_android.h" #include "chrome/browser/permissions/grouped_permission_infobar_delegate_android.h"
#include "content/public/browser/web_contents.h"
#include "ui/android/window_android.h"
namespace { namespace {
...@@ -23,7 +25,7 @@ using base::android::ScopedJavaLocalRef; ...@@ -23,7 +25,7 @@ using base::android::ScopedJavaLocalRef;
ScopedJavaLocalRef<jobject> CreateRenderInfoBarHelper( ScopedJavaLocalRef<jobject> CreateRenderInfoBarHelper(
JNIEnv* env, JNIEnv* env,
int enumerated_icon_id, int enumerated_icon_id,
const JavaRef<jobject>& tab, const JavaRef<jobject>& window,
const base::string16& compact_message_text, const base::string16& compact_message_text,
const base::string16& compact_link_text, const base::string16& compact_link_text,
const base::string16& message_text, const base::string16& message_text,
...@@ -47,7 +49,7 @@ ScopedJavaLocalRef<jobject> CreateRenderInfoBarHelper( ...@@ -47,7 +49,7 @@ ScopedJavaLocalRef<jobject> CreateRenderInfoBarHelper(
ScopedJavaLocalRef<jintArray> content_settings_types = ScopedJavaLocalRef<jintArray> content_settings_types =
base::android::ToJavaIntArray(env, content_settings); base::android::ToJavaIntArray(env, content_settings);
return Java_PermissionInfoBar_create( return Java_PermissionInfoBar_create(
env, tab, content_settings_types, enumerated_icon_id, env, window, content_settings_types, enumerated_icon_id,
compact_message_text_java, compact_link_text_java, message_text_java, compact_message_text_java, compact_link_text_java, message_text_java,
description_text_java, ok_button_text_java, cancel_button_text_java); description_text_java, ok_button_text_java, cancel_button_text_java);
} }
...@@ -82,9 +84,10 @@ GroupedPermissionInfoBar::CreateRenderInfoBar(JNIEnv* env) { ...@@ -82,9 +84,10 @@ GroupedPermissionInfoBar::CreateRenderInfoBar(JNIEnv* env) {
} }
return CreateRenderInfoBarHelper( return CreateRenderInfoBarHelper(
env, permission_icon, GetTab()->GetJavaObject(), compact_message_text, env, permission_icon,
compact_link_text, message_text, description_text, ok_button_text, GetTab()->web_contents()->GetTopLevelNativeWindow()->GetJavaObject(),
cancel_button_text, content_settings_types); compact_message_text, compact_link_text, message_text, description_text,
ok_button_text, cancel_button_text, content_settings_types);
} }
GroupedPermissionInfoBarDelegate* GroupedPermissionInfoBar::GetDelegate() { GroupedPermissionInfoBarDelegate* GroupedPermissionInfoBar::GetDelegate() {
......
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