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

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

Issue 1871343002: Remove PermissionContext factories (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 951966c92e750f67c3ad04e43e095a7529ae6967..0bb7a820571de9772b17828d1e19e880162f81fa 100644
--- a/chrome/browser/permissions/permission_manager.cc
+++ b/chrome/browser/permissions/permission_manager.cc
@@ -7,23 +7,41 @@
#include <stddef.h>
#include "base/callback.h"
+#include "base/memory/ptr_util.h"
#include "build/build_config.h"
+#include "chrome/browser/background_sync/background_sync_permission_context.h"
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
-#include "chrome/browser/permissions/permission_context.h"
+#include "chrome/browser/media/media_stream_device_permission_context.h"
+#include "chrome/browser/media/midi_permission_context.h"
+#include "chrome/browser/notifications/notification_permission_context.h"
#include "chrome/browser/permissions/permission_context_base.h"
+#include "chrome/browser/permissions/permission_manager_factory.h"
#include "chrome/browser/permissions/permission_request_id.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/push_messaging/push_messaging_permission_context.h"
+#include "chrome/browser/storage/durable_storage_permission_context.h"
#include "chrome/browser/tab_contents/tab_util.h"
+#include "chrome/common/features.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
#include "content/public/browser/permission_type.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/web_contents.h"
+#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
+#include "chrome/browser/media/protected_media_identifier_permission_context.h"
+#endif
+
#if !defined(OS_ANDROID)
#include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
#endif
+#if BUILDFLAG(ANDROID_JAVA_UI)
+#include "chrome/browser/geolocation/geolocation_permission_context_android.h"
+#else
+#include "chrome/browser/geolocation/geolocation_permission_context.h"
+#endif
+
using blink::mojom::PermissionStatus;
using content::PermissionType;
@@ -99,7 +117,8 @@ ContentSettingsType PermissionTypeToContentSetting(PermissionType permission) {
// Returns whether the permission has a constant PermissionStatus value (i.e.
// always approved or always denied)
// The PermissionTypes for which true is returned should be exactly those which
-// return nullptr in PermissionContext::Get since they don't have a context.
+// return nullptr in PermissionManager::GetPermissionContext since they don't
+// have a context.
bool IsConstantPermission(PermissionType type) {
switch (type) {
case PermissionType::MIDI:
@@ -195,9 +214,43 @@ struct PermissionManager::Subscription {
ContentSetting current_value;
};
+// static
+PermissionManager* PermissionManager::Get(Profile* profile) {
+ return PermissionManagerFactory::GetForProfile(profile);
+}
+
PermissionManager::PermissionManager(Profile* profile)
: profile_(profile),
weak_ptr_factory_(this) {
+ permission_contexts_[PermissionType::MIDI_SYSEX] =
+ base::WrapUnique(new MidiPermissionContext(profile));
+ permission_contexts_[PermissionType::PUSH_MESSAGING] =
+ base::WrapUnique(new PushMessagingPermissionContext(profile));
+ permission_contexts_[PermissionType::NOTIFICATIONS] =
+ base::WrapUnique(new NotificationPermissionContext(profile));
+#if !BUILDFLAG(ANDROID_JAVA_UI)
+ permission_contexts_[PermissionType::GEOLOCATION] =
+ base::WrapUnique(new GeolocationPermissionContext(profile));
+#else
+ permission_contexts_[PermissionType::GEOLOCATION] =
+ base::WrapUnique(new GeolocationPermissionContextAndroid(profile));
+#endif
+#if defined(OS_CHROMEOS) || defined(OS_ANDROID)
+ permission_contexts_[PermissionType::PROTECTED_MEDIA_IDENTIFIER] =
+ base::WrapUnique(new ProtectedMediaIdentifierPermissionContext(profile));
+#endif
+ permission_contexts_[PermissionType::DURABLE_STORAGE] =
+ base::WrapUnique(new DurableStoragePermissionContext(profile));
+ permission_contexts_[PermissionType::AUDIO_CAPTURE] =
+ base::WrapUnique(new MediaStreamDevicePermissionContext(
+ profile, content::PermissionType::AUDIO_CAPTURE,
+ CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC));
+ permission_contexts_[PermissionType::VIDEO_CAPTURE] =
+ base::WrapUnique(new MediaStreamDevicePermissionContext(
+ profile, content::PermissionType::VIDEO_CAPTURE,
+ CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA));
+ permission_contexts_[PermissionType::BACKGROUND_SYNC] =
+ base::WrapUnique(new BackgroundSyncPermissionContext(profile));
}
PermissionManager::~PermissionManager() {
@@ -244,14 +297,13 @@ int PermissionManager::RequestPermissions(
if (IsConstantPermission(permission) ||
IsPermissionBubbleManagerMissing(web_contents) ||
- !PermissionContext::Get(profile_, permission)) {
+ !GetPermissionContext(permission)) {
OnPermissionsRequestResponseStatus(request_id, i,
GetPermissionStatus(permission, requesting_origin, embedding_origin));
continue;
}
- PermissionContextBase* context = PermissionContext::Get(
- profile_, permission);
+ PermissionContextBase* context = GetPermissionContext(permission);
context->RequestPermission(
web_contents, request, requesting_origin,
base::Bind(&ContentSettingToPermissionStatusCallbackWrapper,
@@ -266,6 +318,17 @@ int PermissionManager::RequestPermissions(
return request_id;
}
+std::size_t PermissionManager::PermissionTypeHash::operator()(
+ const content::PermissionType& type) const {
+ return static_cast<size_t>(type);
+}
+
+PermissionContextBase* PermissionManager::GetPermissionContext(
+ PermissionType type) {
+ const auto& it = permission_contexts_.find(type);
+ return it == permission_contexts_.end() ? nullptr : it->second.get();
+}
+
void PermissionManager::OnPermissionsRequestResponseStatus(
int request_id,
int permission_id,
@@ -297,8 +360,7 @@ void PermissionManager::CancelPermissionRequest(int request_id) {
pending_request->render_frame_id(),
request_id);
for (PermissionType permission : pending_request->permissions()) {
- PermissionContextBase* context = PermissionContext::Get(
- profile_, permission);
+ PermissionContextBase* context = GetPermissionContext(permission);
if (!context)
continue;
context->CancelPermissionRequest(web_contents, request);
@@ -309,7 +371,7 @@ void PermissionManager::CancelPermissionRequest(int request_id) {
void PermissionManager::ResetPermission(PermissionType permission,
const GURL& requesting_origin,
const GURL& embedding_origin) {
- PermissionContextBase* context = PermissionContext::Get(profile_, permission);
+ PermissionContextBase* context = GetPermissionContext(permission);
if (!context)
return;
@@ -324,7 +386,7 @@ PermissionStatus PermissionManager::GetPermissionStatus(
if (IsConstantPermission(permission))
return GetPermissionStatusForConstantPermission(permission);
- PermissionContextBase* context = PermissionContext::Get(profile_, permission);
+ PermissionContextBase* context = GetPermissionContext(permission);
if (!context)
return PermissionStatus::DENIED;
@@ -364,9 +426,10 @@ int PermissionManager::SubscribePermissionStatusChange(
subscription->current_value = GetContentSettingForConstantPermission(
permission);
} else {
- subscription->current_value = PermissionContext::Get(profile_, permission)
- ->GetPermissionStatus(subscription->requesting_origin,
- subscription->embedding_origin);
+ subscription->current_value =
+ GetPermissionContext(permission)
+ ->GetPermissionStatus(subscription->requesting_origin,
+ subscription->embedding_origin);
}
return subscriptions_.Add(subscription);
@@ -411,7 +474,7 @@ void PermissionManager::OnContentSettingChanged(
continue;
ContentSetting new_value =
- PermissionContext::Get(profile_, subscription->permission)
+ GetPermissionContext(subscription->permission)
->GetPermissionStatus(subscription->requesting_origin,
subscription->embedding_origin);
if (subscription->current_value == new_value)
« no previous file with comments | « chrome/browser/permissions/permission_manager.h ('k') | chrome/browser/permissions/permission_manager_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698