summaryrefslogtreecommitdiffstats
path: root/chrome/browser/android/preferences
diff options
context:
space:
mode:
authorkhannans <khannans@chromium.org>2014-12-19 08:04:25 -0800
committerCommit bot <commit-bot@chromium.org>2014-12-19 16:05:20 +0000
commitb2025b782e266c5093e1ad40070341801877266f (patch)
tree3a91b7e54dbb74ffb6e22977f98df09989c5f853 /chrome/browser/android/preferences
parent7c5016ccbd307a4e2a2ca140cc0739f29f288bb0 (diff)
downloadchromium_src-b2025b782e266c5093e1ad40070341801877266f.zip
chromium_src-b2025b782e266c5093e1ad40070341801877266f.tar.gz
chromium_src-b2025b782e266c5093e1ad40070341801877266f.tar.bz2
Allow managing Camera and Location for Supervised Users
BUG=440721 Review URL: https://codereview.chromium.org/789173002 Cr-Commit-Position: refs/heads/master@{#309208}
Diffstat (limited to 'chrome/browser/android/preferences')
-rw-r--r--chrome/browser/android/preferences/pref_service_bridge.cc85
1 files changed, 78 insertions, 7 deletions
diff --git a/chrome/browser/android/preferences/pref_service_bridge.cc b/chrome/browser/android/preferences/pref_service_bridge.cc
index 457109d..808d56e 100644
--- a/chrome/browser/android/preferences/pref_service_bridge.cc
+++ b/chrome/browser/android/preferences/pref_service_bridge.cc
@@ -102,6 +102,15 @@ bool IsContentSettingManaged(HostContentSettingsMap* content_settings,
return provider == HostContentSettingsMap::POLICY_PROVIDER;
}
+bool IsContentSettingUserModifiable(HostContentSettingsMap* content_settings,
+ ContentSettingsType content_settings_type) {
+ std::string source;
+ content_settings->GetDefaultContentSetting(content_settings_type, &source);
+ HostContentSettingsMap::ProviderType provider =
+ content_settings->GetProviderTypeFromSource(source);
+ return provider >= HostContentSettingsMap::PREF_PROVIDER;
+}
+
void OnGotProfilePath(ScopedJavaGlobalRef<jobject>* callback,
std::string path) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -254,19 +263,42 @@ static jboolean GetSearchSuggestManaged(JNIEnv* env, jobject obj) {
static jboolean GetProtectedMediaIdentifierEnabled(JNIEnv* env, jobject obj) {
Profile* profile = GetOriginalProfile();
EnsureConsistentProtectedMediaIdentifierPreferences(profile);
- return GetPrefService()->GetBoolean(prefs::kProtectedMediaIdentifierEnabled);
+ HostContentSettingsMap* content_settings =
+ profile->GetHostContentSettingsMap();
+ return GetBooleanForContentSetting(
+ content_settings,
+ CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER) &&
+ GetPrefService()->GetBoolean(prefs::kProtectedMediaIdentifierEnabled);
+}
+
+static jboolean GetPushNotificationsEnabled(JNIEnv* env, jobject obj) {
+ HostContentSettingsMap* content_settings =
+ GetOriginalProfile()->GetHostContentSettingsMap();
+ return GetBooleanForContentSetting(content_settings,
+ CONTENT_SETTINGS_TYPE_PUSH_MESSAGING);
}
static jboolean GetAllowLocationEnabled(JNIEnv* env, jobject obj) {
Profile* profile = GetOriginalProfile();
EnsureConsistentGeolocationPreferences(profile);
- return GetPrefService()->GetBoolean(prefs::kGeolocationEnabled);
+ HostContentSettingsMap* content_settings =
+ profile->GetHostContentSettingsMap();
+ return GetBooleanForContentSetting(content_settings,
+ CONTENT_SETTINGS_TYPE_GEOLOCATION) &&
+ GetPrefService()->GetBoolean(prefs::kGeolocationEnabled);
}
-static jboolean GetAllowLocationManaged(JNIEnv* env, jobject obj) {
- return IsContentSettingManaged(
- GetOriginalProfile()->GetHostContentSettingsMap(),
- CONTENT_SETTINGS_TYPE_GEOLOCATION);
+static jboolean GetAllowLocationUserModifiable(JNIEnv* env, jobject obj) {
+ return IsContentSettingUserModifiable(
+ GetOriginalProfile()->GetHostContentSettingsMap(),
+ CONTENT_SETTINGS_TYPE_GEOLOCATION) &&
+ GetPrefService()->IsUserModifiablePreference(
+ prefs::kGeolocationEnabled);
+}
+
+static jboolean GetAllowLocationManagedByCustodian(JNIEnv* env, jobject obj) {
+ return GetPrefService()->IsPreferenceManagedByCustodian(
+ prefs::kGeolocationEnabled);
}
static jboolean GetResolveNavigationErrorEnabled(JNIEnv* env, jobject obj) {
@@ -396,6 +428,24 @@ static void SetAllowLocationEnabled(JNIEnv* env, jobject obj, jboolean allow) {
GetPrefService()->SetBoolean(prefs::kGeolocationEnabled, allow);
}
+static void SetCameraMicEnabled(JNIEnv* env, jobject obj, jboolean allow) {
+ HostContentSettingsMap* host_content_settings_map =
+ GetOriginalProfile()->GetHostContentSettingsMap();
+ host_content_settings_map->SetDefaultContentSetting(
+ CONTENT_SETTINGS_TYPE_MEDIASTREAM,
+ allow ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK);
+}
+
+static void SetPushNotificationsEnabled(JNIEnv* env,
+ jobject obj,
+ jboolean allow) {
+ HostContentSettingsMap* host_content_settings_map =
+ GetOriginalProfile()->GetHostContentSettingsMap();
+ host_content_settings_map->SetDefaultContentSetting(
+ CONTENT_SETTINGS_TYPE_PUSH_MESSAGING,
+ allow ? CONTENT_SETTING_ASK : CONTENT_SETTING_BLOCK);
+}
+
static void SetCrashReporting(JNIEnv* env, jobject obj, jboolean reporting) {
PrefService* local_state = g_browser_process->local_state();
local_state->SetBoolean(prefs::kCrashReportingEnabled, reporting);
@@ -484,8 +534,29 @@ static void SetAllowPopupsEnabled(JNIEnv* env, jobject obj, jboolean allow) {
static jboolean GetCameraMicEnabled(JNIEnv* env, jobject obj) {
HostContentSettingsMap* content_settings =
GetOriginalProfile()->GetHostContentSettingsMap();
+ PrefService* prefs = GetPrefService();
return GetBooleanForContentSetting(content_settings,
- CONTENT_SETTINGS_TYPE_MEDIASTREAM);
+ CONTENT_SETTINGS_TYPE_MEDIASTREAM) &&
+ prefs->GetBoolean(prefs::kAudioCaptureAllowed) &&
+ prefs->GetBoolean(prefs::kVideoCaptureAllowed);
+}
+
+static jboolean GetCameraMicUserModifiable(JNIEnv* env, jobject obj) {
+ PrefService* prefs = GetPrefService();
+ return IsContentSettingUserModifiable(
+ GetOriginalProfile()->GetHostContentSettingsMap(),
+ CONTENT_SETTINGS_TYPE_MEDIASTREAM) &&
+ prefs->IsUserModifiablePreference(prefs::kAudioCaptureAllowed) &&
+ prefs->IsUserModifiablePreference(prefs::kVideoCaptureAllowed);
+}
+
+static jboolean GetCameraMicManagedByCustodian(JNIEnv* env, jobject obj) {
+ PrefService* prefs = GetPrefService();
+ if (prefs->IsPreferenceManagedByCustodian(prefs::kVideoCaptureAllowed))
+ return true;
+ if (prefs->IsPreferenceManagedByCustodian(prefs::kAudioCaptureAllowed))
+ return true;
+ return false;
}
static jboolean GetAutologinEnabled(JNIEnv* env, jobject obj) {