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

Unified Diff: chrome/browser/permissions/permission_manager.cc

Issue 2675483002: Replace PermissionType in chrome/ with ContentSettingsType (Closed)
Patch Set: rebase + include content_settings_types.h more Created 3 years, 10 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/browser/permissions/permission_manager.cc
diff --git a/chrome/browser/permissions/permission_manager.cc b/chrome/browser/permissions/permission_manager.cc
index de4666487cc49a6389702160eab3b09b5cbca702..e890aea26b0a94bb4ec5f78a184249846e77bb7d 100644
--- a/chrome/browser/permissions/permission_manager.cc
+++ b/chrome/browser/permissions/permission_manager.cc
@@ -4,8 +4,6 @@
#include "chrome/browser/permissions/permission_manager.h"
-#include <stddef.h>
-
#include <memory>
#include <utility>
@@ -86,6 +84,7 @@ ContentSettingsType PermissionTypeToContentSetting(PermissionType permission) {
case PermissionType::MIDI_SYSEX:
return CONTENT_SETTINGS_TYPE_MIDI_SYSEX;
case PermissionType::PUSH_MESSAGING:
+ return CONTENT_SETTINGS_TYPE_PUSH_MESSAGING;
case PermissionType::NOTIFICATIONS:
return CONTENT_SETTINGS_TYPE_NOTIFICATIONS;
case PermissionType::GEOLOCATION:
@@ -146,13 +145,14 @@ void PermissionRequestResponseCallbackWrapper(
// CONTENT_SETTING_DEFAULT is returned if the permission needs further handling.
// This function should only be called when IsConstantPermission has returned
// true for the PermissionType.
-ContentSetting GetContentSettingForConstantPermission(PermissionType type) {
+blink::mojom::PermissionStatus GetPermissionStatusForConstantPermission(
+ PermissionType type) {
DCHECK(IsConstantPermission(type));
switch (type) {
case PermissionType::MIDI:
- return CONTENT_SETTING_ALLOW;
+ return PermissionStatus::GRANTED;
default:
- return CONTENT_SETTING_DEFAULT;
+ return PermissionStatus::DENIED;
}
}
@@ -212,7 +212,7 @@ struct PermissionManager::Subscription {
GURL requesting_origin;
GURL embedding_origin;
base::Callback<void(PermissionStatus)> callback;
- ContentSetting current_value;
+ PermissionStatus current_value;
};
// static
@@ -223,39 +223,37 @@ PermissionManager* PermissionManager::Get(Profile* profile) {
PermissionManager::PermissionManager(Profile* profile)
: profile_(profile),
weak_ptr_factory_(this) {
- permission_contexts_[PermissionType::MIDI_SYSEX] =
+ permission_contexts_[CONTENT_SETTINGS_TYPE_MIDI_SYSEX] =
base::MakeUnique<MidiPermissionContext>(profile);
- permission_contexts_[PermissionType::PUSH_MESSAGING] =
+ permission_contexts_[CONTENT_SETTINGS_TYPE_PUSH_MESSAGING] =
base::MakeUnique<NotificationPermissionContext>(
- profile, PermissionType::PUSH_MESSAGING);
- permission_contexts_[PermissionType::NOTIFICATIONS] =
+ profile, CONTENT_SETTINGS_TYPE_PUSH_MESSAGING);
+ permission_contexts_[CONTENT_SETTINGS_TYPE_NOTIFICATIONS] =
base::MakeUnique<NotificationPermissionContext>(
- profile, PermissionType::NOTIFICATIONS);
+ profile, CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
#if !defined(OS_ANDROID)
- permission_contexts_[PermissionType::GEOLOCATION] =
+ permission_contexts_[CONTENT_SETTINGS_TYPE_GEOLOCATION] =
base::MakeUnique<GeolocationPermissionContext>(profile);
#else
- permission_contexts_[PermissionType::GEOLOCATION] =
+ permission_contexts_[CONTENT_SETTINGS_TYPE_GEOLOCATION] =
base::MakeUnique<GeolocationPermissionContextAndroid>(profile);
#endif
#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
- permission_contexts_[PermissionType::PROTECTED_MEDIA_IDENTIFIER] =
+ permission_contexts_[CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER] =
base::MakeUnique<ProtectedMediaIdentifierPermissionContext>(profile);
#endif
- permission_contexts_[PermissionType::DURABLE_STORAGE] =
+ permission_contexts_[CONTENT_SETTINGS_TYPE_DURABLE_STORAGE] =
base::MakeUnique<DurableStoragePermissionContext>(profile);
- permission_contexts_[PermissionType::AUDIO_CAPTURE] =
+ permission_contexts_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC] =
base::MakeUnique<MediaStreamDevicePermissionContext>(
- profile, content::PermissionType::AUDIO_CAPTURE,
- CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC);
- permission_contexts_[PermissionType::VIDEO_CAPTURE] =
+ profile, CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC);
+ permission_contexts_[CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA] =
base::MakeUnique<MediaStreamDevicePermissionContext>(
- profile, content::PermissionType::VIDEO_CAPTURE,
- CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA);
- permission_contexts_[PermissionType::BACKGROUND_SYNC] =
+ profile, CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA);
+ permission_contexts_[CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC] =
base::MakeUnique<BackgroundSyncPermissionContext>(profile);
#if BUILDFLAG(ENABLE_PLUGINS)
- permission_contexts_[PermissionType::FLASH] =
+ permission_contexts_[CONTENT_SETTINGS_TYPE_PLUGINS] =
base::MakeUnique<FlashPermissionContext>(profile);
#endif
}
@@ -267,6 +265,35 @@ PermissionManager::~PermissionManager() {
}
int PermissionManager::RequestPermission(
+ ContentSettingsType content_settings_type,
+ content::RenderFrameHost* render_frame_host,
+ const GURL& requesting_origin,
+ bool user_gesture,
+ const base::Callback<void(PermissionStatus)>& callback) {
+ // TODO(timloh): We should be operating on ContentSettingsType instead of
+ // converting these back to PermissionType.
+ PermissionType permission_type;
+ bool success = PermissionUtil::GetPermissionType(content_settings_type,
+ &permission_type);
+ DCHECK(success);
+ return RequestPermissions(
+ std::vector<PermissionType>(1, permission_type), render_frame_host,
+ requesting_origin, user_gesture,
+ base::Bind(&PermissionRequestResponseCallbackWrapper, callback));
+}
+
+PermissionStatus PermissionManager::GetPermissionStatus(
+ ContentSettingsType permission,
+ const GURL& requesting_origin,
+ const GURL& embedding_origin) {
+ PermissionContextBase* context = GetPermissionContext(permission);
+ return ContentSettingToPermissionStatus(
+ context->GetPermissionStatus(requesting_origin.GetOrigin(),
+ embedding_origin.GetOrigin())
+ .content_setting);
+}
+
+int PermissionManager::RequestPermission(
PermissionType permission,
content::RenderFrameHost* render_frame_host,
const GURL& requesting_origin,
@@ -306,16 +333,17 @@ int PermissionManager::RequestPermissions(
const PermissionType permission = permissions[i];
if (IsConstantPermission(permission) ||
- !GetPermissionContext(permission)) {
+ !GetPermissionContext(PermissionTypeToContentSetting(permission))) {
// Track permission request usages even for constant permissions.
PermissionUmaUtil::PermissionRequested(permission, requesting_origin,
embedding_origin, profile_);
- OnPermissionsRequestResponseStatus(request_id, i,
- GetPermissionStatus(permission, requesting_origin, embedding_origin));
+ OnPermissionsRequestResponseStatus(
+ request_id, i, GetPermissionStatusForConstantPermission(permission));
continue;
}
- PermissionContextBase* context = GetPermissionContext(permission);
+ PermissionContextBase* context =
+ GetPermissionContext(PermissionTypeToContentSetting(permission));
context->RequestPermission(
web_contents, request, requesting_origin, user_gesture,
base::Bind(&ContentSettingToPermissionStatusCallbackWrapper,
@@ -331,7 +359,7 @@ int PermissionManager::RequestPermissions(
}
PermissionContextBase* PermissionManager::GetPermissionContext(
- PermissionType type) {
+ ContentSettingsType type) {
const auto& it = permission_contexts_.find(type);
return it == permission_contexts_.end() ? nullptr : it->second.get();
}
@@ -364,7 +392,8 @@ void PermissionManager::CancelPermissionRequest(int request_id) {
pending_request->render_frame_id(),
request_id);
for (PermissionType permission : pending_request->permissions()) {
- PermissionContextBase* context = GetPermissionContext(permission);
+ PermissionContextBase* context =
+ GetPermissionContext(PermissionTypeToContentSetting(permission));
if (!context)
continue;
context->CancelPermissionRequest(web_contents, request);
@@ -376,7 +405,8 @@ void PermissionManager::ResetPermission(PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- PermissionContextBase* context = GetPermissionContext(permission);
+ PermissionContextBase* context =
+ GetPermissionContext(PermissionTypeToContentSetting(permission));
if (!context)
return;
@@ -389,8 +419,10 @@ PermissionStatus PermissionManager::GetPermissionStatus(
const GURL& requesting_origin,
const GURL& embedding_origin) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
- return ContentSettingToPermissionStatus(GetPermissionStatusInternal(
- permission, requesting_origin, embedding_origin));
+ if (IsConstantPermission(permission))
+ return GetPermissionStatusForConstantPermission(permission);
+ return GetPermissionStatus(PermissionTypeToContentSetting(permission),
+ requesting_origin, embedding_origin);
}
void PermissionManager::RegisterPermissionUsage(PermissionType permission,
@@ -423,8 +455,8 @@ int PermissionManager::SubscribePermissionStatusChange(
subscription->embedding_origin = embedding_origin;
subscription->callback = callback;
- subscription->current_value = GetPermissionStatusInternal(
- permission, requesting_origin, embedding_origin);
+ subscription->current_value =
+ GetPermissionStatus(permission, requesting_origin, embedding_origin);
return subscriptions_.Add(std::move(subscription));
}
@@ -440,7 +472,7 @@ void PermissionManager::UnsubscribePermissionStatusChange(int subscription_id) {
}
bool PermissionManager::IsPermissionKillSwitchOn(
- content::PermissionType permission) {
+ ContentSettingsType permission) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
return GetPermissionContext(permission)->IsPermissionKillSwitchOn();
}
@@ -470,7 +502,7 @@ void PermissionManager::OnContentSettingChanged(
!secondary_pattern.Matches(subscription->embedding_origin))
continue;
- ContentSetting new_value = GetPermissionStatusInternal(
+ PermissionStatus new_value = GetPermissionStatus(
subscription->permission, subscription->requesting_origin,
subscription->embedding_origin);
if (subscription->current_value == new_value)
@@ -480,25 +512,9 @@ void PermissionManager::OnContentSettingChanged(
// Add the callback to |callbacks| which will be run after the loop to
// prevent re-entrance issues.
- callbacks.push_back(
- base::Bind(subscription->callback,
- ContentSettingToPermissionStatus(new_value)));
+ callbacks.push_back(base::Bind(subscription->callback, new_value));
}
for (const auto& callback : callbacks)
callback.Run();
}
-
-ContentSetting PermissionManager::GetPermissionStatusInternal(
- PermissionType permission,
- const GURL& requesting_origin,
- const GURL& embedding_origin) {
- if (IsConstantPermission(permission))
- return GetContentSettingForConstantPermission(permission);
-
- PermissionContextBase* context = GetPermissionContext(permission);
- return context
- ->GetPermissionStatus(requesting_origin.GetOrigin(),
- embedding_origin.GetOrigin())
- .content_setting;
-}
« no previous file with comments | « chrome/browser/permissions/permission_manager.h ('k') | chrome/browser/permissions/permission_queue_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698