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

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferenceBridge.java

Issue 850813002: Upstream Site Settings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@location_settings_singleton
Patch Set: use findbugs annotations; fix test Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferenceBridge.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferenceBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferenceBridge.java
new file mode 100644
index 0000000000000000000000000000000000000000..6472600def557a45d03129518dac20674a010dfc
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/preferences/website/WebsitePreferenceBridge.java
@@ -0,0 +1,222 @@
+// Copyright 2015 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.
+
+package org.chromium.chrome.browser.preferences.website;
+
+import org.chromium.base.CalledByNative;
+import org.chromium.chrome.browser.preferences.PrefServiceBridge;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * Utility class that interacts with native to retrieve and set website settings.
+ */
+public abstract class WebsitePreferenceBridge {
+ private static final String LOG_TAG = "WebsiteSettingsUtils";
+
+ /**
+ * Interface for an object that listens to local storage info is ready callback.
+ */
+ public interface LocalStorageInfoReadyCallback {
+ @CalledByNative("LocalStorageInfoReadyCallback")
+ public void onLocalStorageInfoReady(HashMap map);
+ }
+
+ /**
+ * Interface for an object that listens to storage info is ready callback.
+ */
+ public interface StorageInfoReadyCallback {
+ @CalledByNative("StorageInfoReadyCallback")
+ public void onStorageInfoReady(ArrayList array);
+ }
+
+ /**
+ * Interface for an object that listens to storage info is cleared callback.
+ */
+ public interface StorageInfoClearedCallback {
+ @CalledByNative("StorageInfoClearedCallback")
+ public void onStorageInfoCleared();
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<GeolocationInfo> getGeolocationInfo() {
+ // Location can be managed by the custodian of a supervised account or by enterprise policy.
+ boolean managedOnly = !PrefServiceBridge.getInstance().isAllowLocationUserModifiable();
+ ArrayList<GeolocationInfo> list = new ArrayList<GeolocationInfo>();
+ nativeGetGeolocationOrigins(list, managedOnly);
+ return list;
+ }
+
+ @CalledByNative
+ private static void insertGeolocationInfoIntoList(
+ ArrayList<GeolocationInfo> list, String origin, String embedder) {
+ list.add(new GeolocationInfo(origin, embedder));
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<MidiInfo> getMidiInfo() {
+ ArrayList<MidiInfo> list = new ArrayList<MidiInfo>();
+ nativeGetMidiOrigins(list);
+ return list;
+ }
+
+ @CalledByNative
+ private static void insertMidiInfoIntoList(
+ ArrayList<MidiInfo> list, String origin, String embedder) {
+ list.add(new MidiInfo(origin, embedder));
+ }
+
+ public static List<CookieInfo> getCookieInfo() {
+ boolean managedOnly = PrefServiceBridge.getInstance().isAcceptCookiesManaged();
+ ArrayList<CookieInfo> list = new ArrayList<CookieInfo>();
+ nativeGetCookieOrigins(list, managedOnly);
+ return list;
+ }
+
+ @CalledByNative
+ private static void insertCookieInfoIntoList(
+ ArrayList<CookieInfo> list, String origin, String embedder) {
+ list.add(new CookieInfo(origin, embedder));
+ }
+
+ @CalledByNative
+ private static Object createStorageInfoList() {
+ return new ArrayList<StorageInfo>();
+ }
+
+ @CalledByNative
+ private static void insertStorageInfoIntoList(
+ ArrayList<StorageInfo> list, String host, int type, long size) {
+ list.add(new StorageInfo(host, type, size));
+ }
+
+ @CalledByNative
+ private static Object createLocalStorageInfoMap() {
+ return new HashMap<String, LocalStorageInfo>();
+ }
+
+ @SuppressWarnings("unchecked")
+ @CalledByNative
+ private static void insertLocalStorageInfoIntoMap(
+ HashMap map, String origin, String fullOrigin, long size) {
+ ((HashMap<String, LocalStorageInfo>) map).put(origin, new LocalStorageInfo(origin, size));
+ }
+
+ /**
+ * @return List of all the origin/embedder combinations of protected media identifier
+ * permissions.
+ */
+ @SuppressWarnings("unchecked")
+ public static List<ProtectedMediaIdentifierInfo> getProtectedMediaIdentifierInfo() {
+ ArrayList<ProtectedMediaIdentifierInfo> list =
+ new ArrayList<ProtectedMediaIdentifierInfo>();
+ nativeGetProtectedMediaIdentifierOrigins(list);
+ return list;
+ }
+
+ @CalledByNative
+ private static void insertProtectedMediaIdentifierInfoIntoList(
+ ArrayList<ProtectedMediaIdentifierInfo> list, String origin, String embedder) {
+ list.add(new ProtectedMediaIdentifierInfo(origin, embedder));
+ }
+
+ @SuppressWarnings("unchecked")
+ public static List<PushNotificationInfo> getPushNotificationInfo() {
+ ArrayList<PushNotificationInfo> list = new ArrayList<PushNotificationInfo>();
+ nativeGetPushNotificationOrigins(list);
+ return list;
+ }
+
+ @CalledByNative
+ private static void insertPushNotificationIntoList(
+ ArrayList<PushNotificationInfo> list, String origin, String embedder) {
+ list.add(new PushNotificationInfo(origin, embedder));
+ }
+
+ /**
+ * @return List of all the origin/embedder combinations of voice and video capture
+ * permissions.
+ */
+ @SuppressWarnings("unchecked")
+ public static List<VoiceAndVideoCaptureInfo> getVoiceAndVideoCaptureInfo() {
+ ArrayList<VoiceAndVideoCaptureInfo> list =
+ new ArrayList<VoiceAndVideoCaptureInfo>();
+ // Camera and Microphone can be managed by the custodian of a supervised account or
+ // by enterprise policy.
+ boolean managedOnly = !PrefServiceBridge.getInstance().isCameraMicUserModifiable();
+ nativeGetVoiceAndVideoCaptureOrigins(list, managedOnly);
+ return list;
+ }
+
+ @CalledByNative
+ private static void insertVoiceAndVideoCaptureInfoIntoList(
+ ArrayList<VoiceAndVideoCaptureInfo> list, String origin, String embedder) {
+ for (int i = 0; i < list.size(); i++) {
+ if (list.get(i).getOrigin().equals(origin)
+ && list.get(i).getEmbedder().equals(embedder)) {
+ return;
+ }
+ }
+ list.add(new VoiceAndVideoCaptureInfo(origin, embedder));
+ }
+
+ public static List<PopupExceptionInfo> getPopupExceptionInfo() {
+ List<PrefServiceBridge.PopupExceptionInfo> origins =
+ PrefServiceBridge.getInstance().getPopupExceptions();
+ List<PopupExceptionInfo> infos = new ArrayList<PopupExceptionInfo>();
+ boolean managedOnly = PrefServiceBridge.getInstance().isPopupsManaged();
+ if (origins != null) {
+ for (PrefServiceBridge.PopupExceptionInfo exception : origins) {
+ if (!managedOnly || exception.getSource().equals("policy")) {
+ infos.add(
+ new PopupExceptionInfo(exception.getPattern(), exception.getSetting()));
+ }
+ }
+ }
+ return infos;
+ }
+
+ public static void fetchLocalStorageInfo(LocalStorageInfoReadyCallback callback) {
+ nativeFetchLocalStorageInfo(callback);
+ }
+
+ public static void fetchStorageInfo(StorageInfoReadyCallback callback) {
+ nativeFetchStorageInfo(callback);
+ }
+
+ private static native void nativeGetGeolocationOrigins(Object list, boolean managedOnly);
+ static native int nativeGetGeolocationSettingForOrigin(String origin, String embedder);
+ static native void nativeSetGeolocationSettingForOrigin(String origin, String embedder,
+ int value);
+ private static native void nativeGetMidiOrigins(Object list);
+ static native int nativeGetMidiSettingForOrigin(String origin, String embedder);
+ static native void nativeSetMidiSettingForOrigin(String origin, String embedder,
+ int value);
+ private static native void nativeGetPushNotificationOrigins(Object list);
+ static native int nativeGetPushNotificationSettingForOrigin(String origin, String embedder);
+ static native void nativeSetPushNotificationSettingForOrigin(String origin, String embedder,
+ int value);
+ private static native void nativeGetProtectedMediaIdentifierOrigins(Object list);
+ static native int nativeGetProtectedMediaIdentifierSettingForOrigin(String origin,
+ String embedder);
+ static native void nativeSetProtectedMediaIdentifierSettingForOrigin(String origin,
+ String embedder, int value);
+ private static native void nativeGetVoiceAndVideoCaptureOrigins(
+ Object list, boolean managedOnly);
+ static native int nativeGetVoiceCaptureSettingForOrigin(String origin, String embedder);
+ static native int nativeGetVideoCaptureSettingForOrigin(String origin, String embedder);
+ static native void nativeSetVoiceCaptureSettingForOrigin(String origin, String embedder,
+ int value);
+ static native void nativeSetVideoCaptureSettingForOrigin(String origin, String embedder,
+ int value);
+ private static native void nativeGetCookieOrigins(Object list, boolean managedOnly);
+ static native int nativeGetCookieSettingForOrigin(String origin, String embedder);
+ static native void nativeSetCookieSettingForOrigin(String origin, String embedder, int setting);
+ static native void nativeClearLocalStorageData(String path);
+ static native void nativeClearStorageData(String origin, int type, Object callback);
+ private static native void nativeFetchLocalStorageInfo(Object callback);
+ private static native void nativeFetchStorageInfo(Object callback);
+}

Powered by Google App Engine
This is Rietveld 408576698