Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/permissions/permission_manager.h" | 5 #include "chrome/browser/permissions/permission_manager.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
|
dominickn
2016/09/14 07:18:42
Nit: this should probably #include <memory> for st
raymes
2016/09/15 03:40:30
Done.
| |
| 8 | 8 |
| 9 #include "base/callback.h" | 9 #include "base/callback.h" |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| 11 #include "build/build_config.h" | 11 #include "build/build_config.h" |
| 12 #include "chrome/browser/background_sync/background_sync_permission_context.h" | 12 #include "chrome/browser/background_sync/background_sync_permission_context.h" |
| 13 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" | 13 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
| 14 #include "chrome/browser/media/midi_permission_context.h" | 14 #include "chrome/browser/media/midi_permission_context.h" |
| 15 #include "chrome/browser/media/webrtc/media_stream_device_permission_context.h" | 15 #include "chrome/browser/media/webrtc/media_stream_device_permission_context.h" |
| 16 #include "chrome/browser/notifications/notification_permission_context.h" | 16 #include "chrome/browser/notifications/notification_permission_context.h" |
| 17 #include "chrome/browser/permissions/permission_context_base.h" | 17 #include "chrome/browser/permissions/permission_context_base.h" |
| 18 #include "chrome/browser/permissions/permission_manager_factory.h" | 18 #include "chrome/browser/permissions/permission_manager_factory.h" |
| 19 #include "chrome/browser/permissions/permission_request_id.h" | 19 #include "chrome/browser/permissions/permission_request_id.h" |
| 20 #include "chrome/browser/permissions/permission_uma_util.h" | 20 #include "chrome/browser/permissions/permission_uma_util.h" |
| 21 #include "chrome/browser/plugins/plugins_permission_context.h" | |
| 21 #include "chrome/browser/profiles/profile.h" | 22 #include "chrome/browser/profiles/profile.h" |
| 22 #include "chrome/browser/storage/durable_storage_permission_context.h" | 23 #include "chrome/browser/storage/durable_storage_permission_context.h" |
| 23 #include "chrome/browser/tab_contents/tab_util.h" | 24 #include "chrome/browser/tab_contents/tab_util.h" |
| 24 #include "chrome/common/features.h" | 25 #include "chrome/common/features.h" |
| 25 #include "components/content_settings/core/browser/host_content_settings_map.h" | 26 #include "components/content_settings/core/browser/host_content_settings_map.h" |
| 26 #include "content/public/browser/permission_type.h" | 27 #include "content/public/browser/permission_type.h" |
| 27 #include "content/public/browser/render_frame_host.h" | 28 #include "content/public/browser/render_frame_host.h" |
| 28 #include "content/public/browser/render_process_host.h" | 29 #include "content/public/browser/render_process_host.h" |
| 29 #include "content/public/browser/web_contents.h" | 30 #include "content/public/browser/web_contents.h" |
| 30 | 31 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 92 return CONTENT_SETTINGS_TYPE_DURABLE_STORAGE; | 93 return CONTENT_SETTINGS_TYPE_DURABLE_STORAGE; |
| 93 case PermissionType::MIDI: | 94 case PermissionType::MIDI: |
| 94 // This will hit the NOTREACHED below. | 95 // This will hit the NOTREACHED below. |
| 95 break; | 96 break; |
| 96 case PermissionType::AUDIO_CAPTURE: | 97 case PermissionType::AUDIO_CAPTURE: |
| 97 return CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC; | 98 return CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC; |
| 98 case PermissionType::VIDEO_CAPTURE: | 99 case PermissionType::VIDEO_CAPTURE: |
| 99 return CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA; | 100 return CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA; |
| 100 case PermissionType::BACKGROUND_SYNC: | 101 case PermissionType::BACKGROUND_SYNC: |
| 101 return CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC; | 102 return CONTENT_SETTINGS_TYPE_BACKGROUND_SYNC; |
| 103 case PermissionType::PLUGINS: | |
| 104 return CONTENT_SETTINGS_TYPE_PLUGINS; | |
| 102 case PermissionType::NUM: | 105 case PermissionType::NUM: |
| 103 // This will hit the NOTREACHED below. | 106 // This will hit the NOTREACHED below. |
| 104 break; | 107 break; |
| 105 } | 108 } |
| 106 | 109 |
| 107 NOTREACHED() << "Unknown content setting for permission " | 110 NOTREACHED() << "Unknown content setting for permission " |
| 108 << static_cast<int>(permission); | 111 << static_cast<int>(permission); |
| 109 return CONTENT_SETTINGS_TYPE_DEFAULT; | 112 return CONTENT_SETTINGS_TYPE_DEFAULT; |
| 110 } | 113 } |
| 111 | 114 |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 212 // static | 215 // static |
| 213 PermissionManager* PermissionManager::Get(Profile* profile) { | 216 PermissionManager* PermissionManager::Get(Profile* profile) { |
| 214 return PermissionManagerFactory::GetForProfile(profile); | 217 return PermissionManagerFactory::GetForProfile(profile); |
| 215 } | 218 } |
| 216 | 219 |
| 217 PermissionManager::PermissionManager(Profile* profile) | 220 PermissionManager::PermissionManager(Profile* profile) |
| 218 : profile_(profile), | 221 : profile_(profile), |
| 219 weak_ptr_factory_(this) { | 222 weak_ptr_factory_(this) { |
| 220 permission_contexts_[PermissionType::MIDI_SYSEX] = | 223 permission_contexts_[PermissionType::MIDI_SYSEX] = |
| 221 base::WrapUnique(new MidiPermissionContext(profile)); | 224 base::WrapUnique(new MidiPermissionContext(profile)); |
| 222 permission_contexts_[PermissionType::PUSH_MESSAGING] = | 225 permission_contexts_[PermissionType::PUSH_MESSAGING] = |
|
dominickn
2016/09/14 07:18:43
base::WrapUnique is dispreferred in favour of base
raymes
2016/09/15 03:40:30
Done.
| |
| 223 base::WrapUnique(new NotificationPermissionContext( | 226 base::WrapUnique(new NotificationPermissionContext( |
| 224 profile, PermissionType::PUSH_MESSAGING)); | 227 profile, PermissionType::PUSH_MESSAGING)); |
| 225 permission_contexts_[PermissionType::NOTIFICATIONS] = | 228 permission_contexts_[PermissionType::NOTIFICATIONS] = |
| 226 base::WrapUnique(new NotificationPermissionContext( | 229 base::WrapUnique(new NotificationPermissionContext( |
| 227 profile, PermissionType::NOTIFICATIONS)); | 230 profile, PermissionType::NOTIFICATIONS)); |
| 228 #if !BUILDFLAG(ANDROID_JAVA_UI) | 231 #if !BUILDFLAG(ANDROID_JAVA_UI) |
| 229 permission_contexts_[PermissionType::GEOLOCATION] = | 232 permission_contexts_[PermissionType::GEOLOCATION] = |
| 230 base::WrapUnique(new GeolocationPermissionContext(profile)); | 233 base::WrapUnique(new GeolocationPermissionContext(profile)); |
| 231 #else | 234 #else |
| 232 permission_contexts_[PermissionType::GEOLOCATION] = | 235 permission_contexts_[PermissionType::GEOLOCATION] = |
| 233 base::WrapUnique(new GeolocationPermissionContextAndroid(profile)); | 236 base::WrapUnique(new GeolocationPermissionContextAndroid(profile)); |
| 234 #endif | 237 #endif |
| 235 #if defined(OS_CHROMEOS) || defined(OS_ANDROID) | 238 #if defined(OS_CHROMEOS) || defined(OS_ANDROID) |
| 236 permission_contexts_[PermissionType::PROTECTED_MEDIA_IDENTIFIER] = | 239 permission_contexts_[PermissionType::PROTECTED_MEDIA_IDENTIFIER] = |
| 237 base::WrapUnique(new ProtectedMediaIdentifierPermissionContext(profile)); | 240 base::WrapUnique(new ProtectedMediaIdentifierPermissionContext(profile)); |
| 238 #endif | 241 #endif |
| 239 permission_contexts_[PermissionType::DURABLE_STORAGE] = | 242 permission_contexts_[PermissionType::DURABLE_STORAGE] = |
| 240 base::WrapUnique(new DurableStoragePermissionContext(profile)); | 243 base::WrapUnique(new DurableStoragePermissionContext(profile)); |
| 241 permission_contexts_[PermissionType::AUDIO_CAPTURE] = | 244 permission_contexts_[PermissionType::AUDIO_CAPTURE] = |
| 242 base::WrapUnique(new MediaStreamDevicePermissionContext( | 245 base::WrapUnique(new MediaStreamDevicePermissionContext( |
| 243 profile, content::PermissionType::AUDIO_CAPTURE, | 246 profile, content::PermissionType::AUDIO_CAPTURE, |
| 244 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); | 247 CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC)); |
| 245 permission_contexts_[PermissionType::VIDEO_CAPTURE] = | 248 permission_contexts_[PermissionType::VIDEO_CAPTURE] = |
| 246 base::WrapUnique(new MediaStreamDevicePermissionContext( | 249 base::WrapUnique(new MediaStreamDevicePermissionContext( |
| 247 profile, content::PermissionType::VIDEO_CAPTURE, | 250 profile, content::PermissionType::VIDEO_CAPTURE, |
| 248 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)); | 251 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA)); |
| 249 permission_contexts_[PermissionType::BACKGROUND_SYNC] = | 252 permission_contexts_[PermissionType::BACKGROUND_SYNC] = |
| 250 base::WrapUnique(new BackgroundSyncPermissionContext(profile)); | 253 base::WrapUnique(new BackgroundSyncPermissionContext(profile)); |
| 254 permission_contexts_[PermissionType::PLUGINS] = | |
| 255 base::WrapUnique(new PluginsPermissionContext(profile)); | |
| 251 } | 256 } |
| 252 | 257 |
| 253 PermissionManager::~PermissionManager() { | 258 PermissionManager::~PermissionManager() { |
| 254 if (!subscriptions_.IsEmpty()) | 259 if (!subscriptions_.IsEmpty()) |
| 255 HostContentSettingsMapFactory::GetForProfile(profile_) | 260 HostContentSettingsMapFactory::GetForProfile(profile_) |
| 256 ->RemoveObserver(this); | 261 ->RemoveObserver(this); |
| 257 } | 262 } |
| 258 | 263 |
| 259 int PermissionManager::RequestPermission( | 264 int PermissionManager::RequestPermission( |
| 260 PermissionType permission, | 265 PermissionType permission, |
| (...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 473 // Add the callback to |callbacks| which will be run after the loop to | 478 // Add the callback to |callbacks| which will be run after the loop to |
| 474 // prevent re-entrance issues. | 479 // prevent re-entrance issues. |
| 475 callbacks.push_back( | 480 callbacks.push_back( |
| 476 base::Bind(subscription->callback, | 481 base::Bind(subscription->callback, |
| 477 ContentSettingToPermissionStatus(new_value))); | 482 ContentSettingToPermissionStatus(new_value))); |
| 478 } | 483 } |
| 479 | 484 |
| 480 for (const auto& callback : callbacks) | 485 for (const auto& callback : callbacks) |
| 481 callback.Run(); | 486 callback.Run(); |
| 482 } | 487 } |
| OLD | NEW |