Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Side by Side Diff: chrome/android/java/src/org/chromium/chrome/browser/infobar/GroupedPermissionInfoBar.java

Issue 2254763002: Enable the optional permission prompt persistence toggle on grouped infobars (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@permission-infobardelegate-clean
Patch Set: Address nits Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.infobar; 5 package org.chromium.chrome.browser.infobar;
6 6
7 import android.support.v7.widget.SwitchCompat; 7 import android.support.v7.widget.SwitchCompat;
8 8
9 import org.chromium.base.annotations.CalledByNative; 9 import org.chromium.base.annotations.CalledByNative;
10 import org.chromium.chrome.R; 10 import org.chromium.chrome.R;
11 import org.chromium.chrome.browser.ResourceId; 11 import org.chromium.chrome.browser.ResourceId;
12 import org.chromium.ui.base.WindowAndroid; 12 import org.chromium.ui.base.WindowAndroid;
13 13
14 import java.util.ArrayList; 14 import java.util.ArrayList;
15 15
16 /** 16 /**
17 * An infobar for showing several permission requests which can be allowed or bl ocked. 17 * An infobar for showing several permission requests which can be allowed or bl ocked.
18 */ 18 */
19 public class GroupedPermissionInfoBar extends PermissionInfoBar { 19 public class GroupedPermissionInfoBar extends PermissionInfoBar {
20 private final int[] mPermissionIcons; 20 private final int[] mPermissionIcons;
21 private final String[] mPermissionText; 21 private final String[] mPermissionText;
22 private final int[] mContentSettings; 22 private final int[] mContentSettings;
23 private final WindowAndroid mWindowAndroid; 23 private final WindowAndroid mWindowAndroid;
24 private long mNativeGroupedPermissionInfoBar; 24 private long mNativeGroupedPermissionInfoBar;
25 25
26 GroupedPermissionInfoBar(String message, String buttonOk, String buttonCance l, 26 GroupedPermissionInfoBar(String message, String buttonOk, String buttonCance l,
27 int[] permissionIcons, String[] permissionText, WindowAndroid window Android, 27 int[] permissionIcons, String[] permissionText, WindowAndroid window Android,
28 int[] contentSettings) { 28 int[] contentSettings, boolean showPersistenceToggle) {
29 super(0, null, message, null, buttonOk, buttonCancel); 29 super(0, null, message, null, buttonOk, buttonCancel, showPersistenceTog gle);
30 mPermissionIcons = permissionIcons; 30 mPermissionIcons = permissionIcons;
31 mPermissionText = permissionText; 31 mPermissionText = permissionText;
32 mWindowAndroid = windowAndroid; 32 mWindowAndroid = windowAndroid;
33 mContentSettings = contentSettings; 33 mContentSettings = contentSettings;
34 } 34 }
35 35
36 @Override 36 @Override
37 public void createContent(InfoBarLayout layout) { 37 public void createContent(InfoBarLayout layout) {
38 super.createContent(layout);
39 InfoBarControlLayout control = layout.addControlLayout(); 38 InfoBarControlLayout control = layout.addControlLayout();
40 39
41 if (mPermissionIcons.length == 1) { 40 if (mPermissionIcons.length == 1) {
42 control.addIcon(ResourceId.mapToDrawableId(mPermissionIcons[0]), 41 control.addIcon(ResourceId.mapToDrawableId(mPermissionIcons[0]),
43 R.color.light_normal_color, mPermissionText[0], null); 42 R.color.light_normal_color, mPermissionText[0], null);
44 } else { 43 } else {
45 for (int i = 0; i < mPermissionIcons.length; i++) { 44 for (int i = 0; i < mPermissionIcons.length; i++) {
46 control.addSwitch(ResourceId.mapToDrawableId(mPermissionIcons[i] ), 45 control.addSwitch(ResourceId.mapToDrawableId(mPermissionIcons[i] ),
47 R.color.light_normal_color, mPermissionText[i], i, true) ; 46 R.color.light_normal_color, mPermissionText[i], i, true) ;
48 } 47 }
49 } 48 }
49
50 // Call this last to ensure that if a persistence toggle is added, it's added last.
51 super.createContent(layout);
50 } 52 }
51 53
52 @Override 54 @Override
53 public void onButtonClicked(final boolean isPrimaryButton) { 55 public void onButtonClicked(final boolean isPrimaryButton) {
54 if (isPrimaryButton) { 56 if (isPrimaryButton) {
55 boolean[] toggleStatus = new boolean[mPermissionIcons.length]; 57 boolean[] toggleStatus = new boolean[mPermissionIcons.length];
56 58
57 if (mPermissionIcons.length == 1) { 59 if (mPermissionIcons.length == 1) {
58 toggleStatus[0] = true; 60 toggleStatus[0] = true;
59 } else { 61 } else {
(...skipping 16 matching lines...) Expand all
76 } 78 }
77 79
78 if (mNativeGroupedPermissionInfoBar != 0) { 80 if (mNativeGroupedPermissionInfoBar != 0) {
79 nativeSetPermissionState(mNativeGroupedPermissionInfoBar, toggle Status); 81 nativeSetPermissionState(mNativeGroupedPermissionInfoBar, toggle Status);
80 setContentSettings(mWindowAndroid, selectedArray); 82 setContentSettings(mWindowAndroid, selectedArray);
81 } 83 }
82 } 84 }
83 super.onButtonClicked(isPrimaryButton); 85 super.onButtonClicked(isPrimaryButton);
84 } 86 }
85 87
88 @CalledByNative
89 protected boolean isPersistSwitchOn() {
90 return super.isPersistSwitchOn();
91 }
92
86 /** 93 /**
87 * Create an infobar for a given set of permission requests. 94 * Create an infobar for a given set of permission requests.
88 * 95 *
89 * @param message Message to display at the top of the infobar. 96 * @param message Message to display at the top of the infobar.
90 * @param buttonOk String to display on the 'Allow' button. 97 * @param buttonOk String to display on the 'Allow' button.
91 * @param buttonCancel String to display on the 'Block' button. 98 * @param buttonCancel String to display on the 'Block' button.
92 * @param permissionIcons Enumerated ID (from ResourceMapper) of an icon to display next to each 99 * @param permissionIcons Enumerated ID (from ResourceMapper) of an icon to display next to each
93 * permission. 100 * permission.
94 * @param permissionText String to display for each permission request. 101 * @param permissionText String to display for each permission request.
95 * @param windowAndroid The window which owns the infobar. 102 * @param windowAndroid The window which owns the infobar.
96 * @param contentSettings The list of ContentSettingsTypes requested by the infobar. 103 * @param contentSettings The list of ContentSettingsTypes requested by the infobar.
104 * @param showPersistenceToggle Whether or not a toggle to opt-out of persis ting a decision
105 * should be displayed.
97 */ 106 */
98 @CalledByNative 107 @CalledByNative
99 private static InfoBar create(String message, String buttonOk, String button Cancel, 108 private static InfoBar create(String message, String buttonOk, String button Cancel,
100 int[] permissionIcons, String[] permissionText, WindowAndroid window Android, 109 int[] permissionIcons, String[] permissionText, WindowAndroid window Android,
101 int[] contentSettings) { 110 int[] contentSettings, boolean showPersistenceToggle) {
102 GroupedPermissionInfoBar infobar = new GroupedPermissionInfoBar(message, buttonOk, 111 GroupedPermissionInfoBar infobar =
103 buttonCancel, permissionIcons, permissionText, windowAndroid, co ntentSettings); 112 new GroupedPermissionInfoBar(message, buttonOk, buttonCancel, pe rmissionIcons,
113 permissionText, windowAndroid, contentSettings, showPers istenceToggle);
104 return infobar; 114 return infobar;
105 } 115 }
106 116
107 @CalledByNative 117 @CalledByNative
108 private void setNativePtr(long nativePtr) { 118 private void setNativePtr(long nativePtr) {
109 mNativeGroupedPermissionInfoBar = nativePtr; 119 mNativeGroupedPermissionInfoBar = nativePtr;
110 } 120 }
111 121
112 @Override 122 @Override
113 protected void onNativeDestroyed() { 123 protected void onNativeDestroyed() {
114 mNativeGroupedPermissionInfoBar = 0; 124 mNativeGroupedPermissionInfoBar = 0;
115 super.onNativeDestroyed(); 125 super.onNativeDestroyed();
116 } 126 }
117 127
118 private native void nativeSetPermissionState( 128 private native void nativeSetPermissionState(
119 long nativeGroupedPermissionInfoBar, boolean[] permissions); 129 long nativeGroupedPermissionInfoBar, boolean[] permissions);
120 } 130 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698