| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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_queue_controller.h" | 5 #include "chrome/browser/permissions/permission_queue_controller.h" |
| 6 | 6 |
| 7 #include "base/prefs/pref_service.h" | 7 #include "base/prefs/pref_service.h" |
| 8 #include "chrome/browser/chrome_notification_types.h" | 8 #include "chrome/browser/chrome_notification_types.h" |
| 9 #include "chrome/browser/geolocation/geolocation_infobar_delegate.h" | 9 #include "chrome/browser/geolocation/geolocation_infobar_delegate.h" |
| 10 #include "chrome/browser/infobars/infobar_service.h" | 10 #include "chrome/browser/infobars/infobar_service.h" |
| 11 #include "chrome/browser/media/midi_permission_infobar_delegate.h" | 11 #include "chrome/browser/media/midi_permission_infobar_delegate.h" |
| 12 #include "chrome/browser/notifications/notification_permission_infobar_delegate.
h" | 12 #include "chrome/browser/notifications/notification_permission_infobar_delegate.
h" |
| 13 #include "chrome/browser/permissions/permission_context_uma_util.h" | 13 #include "chrome/browser/permissions/permission_context_uma_util.h" |
| 14 #include "chrome/browser/permissions/permission_request_id.h" |
| 14 #include "chrome/browser/profiles/profile.h" | 15 #include "chrome/browser/profiles/profile.h" |
| 15 #include "chrome/browser/storage/durable_storage_permission_infobar_delegate.h" | 16 #include "chrome/browser/storage/durable_storage_permission_infobar_delegate.h" |
| 16 #include "chrome/browser/tab_contents/tab_util.h" | 17 #include "chrome/browser/tab_contents/tab_util.h" |
| 17 #include "chrome/common/pref_names.h" | 18 #include "chrome/common/pref_names.h" |
| 18 #include "components/content_settings/core/browser/host_content_settings_map.h" | 19 #include "components/content_settings/core/browser/host_content_settings_map.h" |
| 19 #include "components/content_settings/core/common/content_settings.h" | 20 #include "components/content_settings/core/common/content_settings.h" |
| 20 #include "components/infobars/core/infobar.h" | 21 #include "components/infobars/core/infobar.h" |
| 21 #include "content/public/browser/browser_thread.h" | 22 #include "content/public/browser/browser_thread.h" |
| 22 #include "content/public/browser/notification_details.h" | 23 #include "content/public/browser/notification_details.h" |
| 23 #include "content/public/browser/notification_source.h" | 24 #include "content/public/browser/notification_source.h" |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 } | 107 } |
| 107 | 108 |
| 108 void PermissionQueueController::PendingInfobarRequest::RunCallback( | 109 void PermissionQueueController::PendingInfobarRequest::RunCallback( |
| 109 ContentSetting content_setting) { | 110 ContentSetting content_setting) { |
| 110 callback_.Run(content_setting); | 111 callback_.Run(content_setting); |
| 111 } | 112 } |
| 112 | 113 |
| 113 void PermissionQueueController::PendingInfobarRequest::CreateInfoBar( | 114 void PermissionQueueController::PendingInfobarRequest::CreateInfoBar( |
| 114 PermissionQueueController* controller, | 115 PermissionQueueController* controller, |
| 115 const std::string& display_languages) { | 116 const std::string& display_languages) { |
| 117 // Controller can be Unretained because the lifetime of the infobar |
| 118 // is tied to that of the queue controller. Before QueueController |
| 119 // is destroyed, all requests will be cancelled and so all delegates |
| 120 // will be destroyed. |
| 121 PermissionInfobarDelegate::PermissionSetCallback callback = |
| 122 base::Bind(&PermissionQueueController::OnPermissionSet, |
| 123 base::Unretained(controller), |
| 124 id_, |
| 125 requesting_frame_, |
| 126 embedder_); |
| 116 switch (type_) { | 127 switch (type_) { |
| 117 case CONTENT_SETTINGS_TYPE_GEOLOCATION: | 128 case CONTENT_SETTINGS_TYPE_GEOLOCATION: |
| 118 infobar_ = GeolocationInfoBarDelegate::Create( | 129 infobar_ = GeolocationInfoBarDelegate::Create( |
| 119 GetInfoBarService(id_), controller, id_, requesting_frame_, | 130 GetInfoBarService(id_), requesting_frame_, |
| 120 display_languages); | 131 display_languages, callback); |
| 121 break; | 132 break; |
| 122 #if defined(ENABLE_NOTIFICATIONS) | 133 #if defined(ENABLE_NOTIFICATIONS) |
| 123 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS: | 134 case CONTENT_SETTINGS_TYPE_NOTIFICATIONS: |
| 124 infobar_ = NotificationPermissionInfobarDelegate::Create( | 135 infobar_ = NotificationPermissionInfobarDelegate::Create( |
| 125 GetInfoBarService(id_), controller, id_, requesting_frame_, | 136 GetInfoBarService(id_), requesting_frame_, |
| 126 display_languages); | 137 display_languages, callback); |
| 127 break; | 138 break; |
| 128 #endif // ENABLE_NOTIFICATIONS | 139 #endif // ENABLE_NOTIFICATIONS |
| 129 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX: | 140 case CONTENT_SETTINGS_TYPE_MIDI_SYSEX: |
| 130 infobar_ = MidiPermissionInfoBarDelegate::Create( | 141 infobar_ = MidiPermissionInfoBarDelegate::Create( |
| 131 GetInfoBarService(id_), controller, id_, requesting_frame_, | 142 GetInfoBarService(id_), requesting_frame_, |
| 132 display_languages, type_); | 143 display_languages, type_, callback); |
| 133 break; | 144 break; |
| 134 #if defined(OS_ANDROID) || defined(OS_CHROMEOS) | 145 #if defined(OS_ANDROID) || defined(OS_CHROMEOS) |
| 135 case CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER: | 146 case CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER: |
| 136 infobar_ = ProtectedMediaIdentifierInfoBarDelegate::Create( | 147 infobar_ = ProtectedMediaIdentifierInfoBarDelegate::Create( |
| 137 GetInfoBarService(id_), controller, id_, requesting_frame_, | 148 GetInfoBarService(id_), requesting_frame_, |
| 138 display_languages); | 149 display_languages, callback); |
| 139 break; | 150 break; |
| 140 #endif | 151 #endif |
| 141 case CONTENT_SETTINGS_TYPE_DURABLE_STORAGE: | 152 case CONTENT_SETTINGS_TYPE_DURABLE_STORAGE: |
| 142 infobar_ = DurableStoragePermissionInfoBarDelegate::Create( | 153 infobar_ = DurableStoragePermissionInfoBarDelegate::Create( |
| 143 GetInfoBarService(id_), controller, id_, requesting_frame_, | 154 GetInfoBarService(id_), requesting_frame_, |
| 144 display_languages, type_); | 155 display_languages, type_, callback); |
| 145 break; | 156 break; |
| 146 default: | 157 default: |
| 147 NOTREACHED(); | 158 NOTREACHED(); |
| 148 break; | 159 break; |
| 149 } | 160 } |
| 150 } | 161 } |
| 151 | 162 |
| 152 | 163 |
| 153 PermissionQueueController::PermissionQueueController(Profile* profile, | 164 PermissionQueueController::PermissionQueueController(Profile* profile, |
| 154 ContentSettingsType type) | 165 ContentSettingsType type) |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 397 ContentSettingsPattern::Wildcard() : | 408 ContentSettingsPattern::Wildcard() : |
| 398 ContentSettingsPattern::FromURLNoWildcard(embedder.GetOrigin()); | 409 ContentSettingsPattern::FromURLNoWildcard(embedder.GetOrigin()); |
| 399 | 410 |
| 400 profile_->GetHostContentSettingsMap()->SetContentSetting( | 411 profile_->GetHostContentSettingsMap()->SetContentSetting( |
| 401 ContentSettingsPattern::FromURLNoWildcard(requesting_frame.GetOrigin()), | 412 ContentSettingsPattern::FromURLNoWildcard(requesting_frame.GetOrigin()), |
| 402 embedder_pattern, | 413 embedder_pattern, |
| 403 type_, | 414 type_, |
| 404 std::string(), | 415 std::string(), |
| 405 content_setting); | 416 content_setting); |
| 406 } | 417 } |
| OLD | NEW |