Commit 232a35e4 authored by Illia Klimov's avatar Illia Klimov Committed by Commit Bot

Display embargoed origin subtitle on Android.

That patch shows "Automatically blocked" subtitle for embargoed origins
in Site Details page.

Bug: 1033593
Change-Id: Ib9820f31cce317b23a62d4f53eff301f8e638d96
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2219505
Commit-Queue: Illia Klimov <elklm@google.com>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Reviewed-by: default avatarAndy Paicu <andypaicu@chromium.org>
Reviewed-by: default avatarBalazs Engedy <engedy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#774623}
parent a70449f8
......@@ -6,6 +6,7 @@ package org.chromium.chrome.browser.site_settings;
import static org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge.SITE_WILDCARD;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.test.InstrumentationRegistry;
......@@ -46,6 +47,7 @@ import org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference;
import org.chromium.components.browser_ui.settings.ChromeSwitchPreference;
import org.chromium.components.browser_ui.site_settings.FourStateCookieSettingsPreference;
import org.chromium.components.browser_ui.site_settings.FourStateCookieSettingsPreference.CookieSettingsState;
import org.chromium.components.browser_ui.site_settings.R;
import org.chromium.components.browser_ui.site_settings.SingleCategorySettings;
import org.chromium.components.browser_ui.site_settings.SingleWebsiteSettings;
import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory;
......@@ -1213,8 +1215,9 @@ public class SiteSettingsTest {
}
SettingsLauncher settingsLauncher = new SettingsLauncherImpl();
Intent intent = settingsLauncher.createSettingsActivityIntent(
InstrumentationRegistry.getTargetContext(), SingleWebsiteSettings.class.getName(),
Context context = InstrumentationRegistry.getTargetContext();
Intent intent = settingsLauncher.createSettingsActivityIntent(context,
SingleWebsiteSettings.class.getName(),
SingleWebsiteSettings.createFragmentArgsForSite(url));
final SettingsActivity settingsActivity =
(SettingsActivity) InstrumentationRegistry.getInstrumentation().startActivitySync(
......@@ -1227,6 +1230,9 @@ public class SiteSettingsTest {
final Preference notificationPreference =
websitePreferences.findPreference("push_notifications_list");
Assert.assertEquals(context.getString(R.string.automatically_blocked),
notificationPreference.getSummary());
websitePreferences.launchOsChannelSettingsFromPreference(notificationPreference);
// Ensure that a proper separate channel has indeed been created to allow the user to
......
......@@ -45,15 +45,22 @@ public class PermissionInfo implements Serializable {
}
private final boolean mIsIncognito;
private final boolean mIsEmbargoed;
private final String mEmbedder;
private final String mOrigin;
private final @Type int mType;
public PermissionInfo(@Type int type, String origin, String embedder, boolean isIncognito) {
this(type, origin, embedder, isIncognito, false);
}
public PermissionInfo(@Type int type, String origin, String embedder, boolean isIncognito,
boolean isEmbargoed) {
mOrigin = origin;
mEmbedder = embedder;
mIsIncognito = isIncognito;
mType = type;
mIsEmbargoed = isEmbargoed;
}
public @Type int getType() {
......@@ -76,6 +83,10 @@ public class PermissionInfo implements Serializable {
return mEmbedder != null ? mEmbedder : mOrigin;
}
public boolean isEmbargoed() {
return mIsEmbargoed;
}
/**
* Returns the ContentSetting value for this origin.
*/
......
......@@ -77,7 +77,7 @@ public class WebsitePreferenceBridge {
}
private static void insertInfoIntoList(@PermissionInfo.Type int type,
ArrayList<PermissionInfo> list, String origin, String embedder) {
ArrayList<PermissionInfo> list, String origin, String embedder, boolean isEmbargoed) {
if (type == PermissionInfo.Type.CAMERA || type == PermissionInfo.Type.MICROPHONE) {
for (PermissionInfo info : list) {
if (info.getOrigin().equals(origin) && info.getEmbedder().equals(embedder)) {
......@@ -85,67 +85,69 @@ public class WebsitePreferenceBridge {
}
}
}
list.add(new PermissionInfo(type, origin, embedder, false));
list.add(new PermissionInfo(type, origin, embedder, false, isEmbargoed));
}
@CalledByNative
private static void insertArInfoIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
insertInfoIntoList(PermissionInfo.Type.AUGMENTED_REALITY, list, origin, embedder);
ArrayList<PermissionInfo> list, String origin, String embedder, boolean isEmbargoed) {
insertInfoIntoList(
PermissionInfo.Type.AUGMENTED_REALITY, list, origin, embedder, isEmbargoed);
}
@CalledByNative
private static void insertCameraInfoIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
insertInfoIntoList(PermissionInfo.Type.CAMERA, list, origin, embedder);
ArrayList<PermissionInfo> list, String origin, String embedder, boolean isEmbargoed) {
insertInfoIntoList(PermissionInfo.Type.CAMERA, list, origin, embedder, isEmbargoed);
}
@CalledByNative
private static void insertClipboardInfoIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
insertInfoIntoList(PermissionInfo.Type.CLIPBOARD, list, origin, embedder);
ArrayList<PermissionInfo> list, String origin, String embedder, boolean isEmbargoed) {
insertInfoIntoList(PermissionInfo.Type.CLIPBOARD, list, origin, embedder, isEmbargoed);
}
@CalledByNative
private static void insertGeolocationInfoIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
insertInfoIntoList(PermissionInfo.Type.GEOLOCATION, list, origin, embedder);
ArrayList<PermissionInfo> list, String origin, String embedder, boolean isEmbargoed) {
insertInfoIntoList(PermissionInfo.Type.GEOLOCATION, list, origin, embedder, isEmbargoed);
}
@CalledByNative
private static void insertMicrophoneInfoIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
insertInfoIntoList(PermissionInfo.Type.MICROPHONE, list, origin, embedder);
ArrayList<PermissionInfo> list, String origin, String embedder, boolean isEmbargoed) {
insertInfoIntoList(PermissionInfo.Type.MICROPHONE, list, origin, embedder, isEmbargoed);
}
@CalledByNative
private static void insertMidiInfoIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
insertInfoIntoList(PermissionInfo.Type.MIDI, list, origin, embedder);
ArrayList<PermissionInfo> list, String origin, String embedder, boolean isEmbargoed) {
insertInfoIntoList(PermissionInfo.Type.MIDI, list, origin, embedder, isEmbargoed);
}
@CalledByNative
private static void insertNfcInfoIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
insertInfoIntoList(PermissionInfo.Type.NFC, list, origin, embedder);
ArrayList<PermissionInfo> list, String origin, String embedder, boolean isEmbargoed) {
insertInfoIntoList(PermissionInfo.Type.NFC, list, origin, embedder, isEmbargoed);
}
@CalledByNative
private static void insertNotificationIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
insertInfoIntoList(PermissionInfo.Type.NOTIFICATION, list, origin, embedder);
ArrayList<PermissionInfo> list, String origin, String embedder, boolean isEmbargoed) {
insertInfoIntoList(PermissionInfo.Type.NOTIFICATION, list, origin, embedder, isEmbargoed);
}
@CalledByNative
private static void insertProtectedMediaIdentifierInfoIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
insertInfoIntoList(PermissionInfo.Type.PROTECTED_MEDIA_IDENTIFIER, list, origin, embedder);
ArrayList<PermissionInfo> list, String origin, String embedder, boolean isEmbargoed) {
insertInfoIntoList(PermissionInfo.Type.PROTECTED_MEDIA_IDENTIFIER, list, origin, embedder,
isEmbargoed);
}
@CalledByNative
private static void insertSensorsInfoIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
insertInfoIntoList(PermissionInfo.Type.SENSORS, list, origin, embedder);
ArrayList<PermissionInfo> list, String origin, String embedder, boolean isEmbargoed) {
insertInfoIntoList(PermissionInfo.Type.SENSORS, list, origin, embedder, isEmbargoed);
}
@CalledByNative
......@@ -156,8 +158,9 @@ public class WebsitePreferenceBridge {
@CalledByNative
private static void insertVrInfoIntoList(
ArrayList<PermissionInfo> list, String origin, String embedder) {
insertInfoIntoList(PermissionInfo.Type.VIRTUAL_REALITY, list, origin, embedder);
ArrayList<PermissionInfo> list, String origin, String embedder, boolean isEmbargoed) {
insertInfoIntoList(
PermissionInfo.Type.VIRTUAL_REALITY, list, origin, embedder, isEmbargoed);
}
@CalledByNative
......
......@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <jni.h>
#include <algorithm>
#include <string>
#include <vector>
......@@ -125,7 +126,8 @@ typedef void (*InfoListInsertionFunction)(
JNIEnv*,
const base::android::JavaRef<jobject>&,
const base::android::JavaRef<jstring>&,
const base::android::JavaRef<jstring>&);
const base::android::JavaRef<jstring>&,
jboolean);
void GetOrigins(JNIEnv* env,
const JavaParamRef<jobject>& jbrowser_context_handle,
......@@ -166,7 +168,8 @@ void GetOrigins(JNIEnv* env,
jembedder = ConvertUTF8ToJavaString(env, embedder);
seen_origins.push_back(origin);
insertionFunc(env, list, ConvertOriginToJavaString(env, origin), jembedder);
insertionFunc(env, list, ConvertOriginToJavaString(env, origin), jembedder,
/*is_embargoed=*/false);
}
// Add any origins which have a default content setting value (thus skipped
......@@ -188,7 +191,7 @@ void GetOrigins(JNIEnv* env,
.content_setting == CONTENT_SETTING_BLOCK) {
seen_origins.push_back(origin);
insertionFunc(env, list, ConvertOriginToJavaString(env, origin),
jembedder);
jembedder, /*is_embargoed=*/true);
}
}
}
......
......@@ -378,6 +378,9 @@
<message name="IDS_MENU_HELP" desc="Menu item for opening the help page. [CHAR-LIMIT=27]">
Help &amp; feedback
</message>
<message name="IDS_AUTOMATICALLY_BLOCKED" desc="Description displayed next to an origin when it was placed under embargo by Chrome. This indicates to the user that the origin is blocked automatically instead of being the result of the user's decision.">
Automatically blocked
</message>
<!-- Downloads UI -->
<message name="IDS_DOWNLOAD_NOTIFICATION_CANCEL_BUTTON" desc="Text on the button that cancels a download.">
......
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