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_infobar_request.h" | 5 #include "chrome/browser/permissions/permission_infobar_request.h" |
6 | 6 |
7 #include "base/prefs/pref_service.h" | 7 #include "base/prefs/pref_service.h" |
| 8 #include "chrome/browser/android/permissions/permission_group_infobar_delegate_a
ndroid.h" |
8 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" | 9 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
9 #include "chrome/browser/geolocation/geolocation_infobar_delegate.h" | 10 #include "chrome/browser/geolocation/geolocation_infobar_delegate.h" |
10 #include "chrome/browser/infobars/infobar_service.h" | 11 #include "chrome/browser/infobars/infobar_service.h" |
11 #include "chrome/browser/media/midi_permission_infobar_delegate.h" | 12 #include "chrome/browser/media/midi_permission_infobar_delegate.h" |
12 #include "chrome/browser/notifications/notification_permission_infobar_delegate.
h" | 13 #include "chrome/browser/notifications/notification_permission_infobar_delegate.
h" |
13 #include "chrome/browser/profiles/profile.h" | 14 #include "chrome/browser/profiles/profile.h" |
14 #include "chrome/browser/storage/durable_storage_permission_infobar_delegate.h" | 15 #include "chrome/browser/storage/durable_storage_permission_infobar_delegate.h" |
| 16 #include "chrome/browser/ui/android/infobars/permission_group_infobar_android.h" |
15 #include "chrome/common/pref_names.h" | 17 #include "chrome/common/pref_names.h" |
16 #include "components/content_settings/core/browser/host_content_settings_map.h" | 18 #include "components/content_settings/core/browser/host_content_settings_map.h" |
17 #include "components/infobars/core/infobar.h" | 19 #include "components/infobars/core/infobar.h" |
18 #include "content/public/browser/browser_thread.h" | 20 #include "content/public/browser/browser_thread.h" |
19 | 21 |
20 #if defined(OS_ANDROID) || defined(OS_CHROMEOS) | 22 #if defined(OS_ANDROID) || defined(OS_CHROMEOS) |
21 #include "chrome/browser/media/protected_media_identifier_infobar_delegate.h" | 23 #include "chrome/browser/media/protected_media_identifier_infobar_delegate.h" |
22 #endif | 24 #endif |
23 | 25 |
24 PermissionInfoBarRequest::PermissionRequest::PermissionRequest( | 26 PermissionInfoBarRequest::PermissionRequest::PermissionRequest( |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 CreateInfoBar( | 71 CreateInfoBar( |
70 infobar_service, | 72 infobar_service, |
71 requests_[0], | 73 requests_[0], |
72 display_languages, | 74 display_languages, |
73 base::Bind(&PermissionInfoBarRequest::OnPermissionSet, | 75 base::Bind(&PermissionInfoBarRequest::OnPermissionSet, |
74 weak_factory_.GetWeakPtr(), | 76 weak_factory_.GetWeakPtr(), |
75 manager_callback)); | 77 manager_callback)); |
76 return true; | 78 return true; |
77 } | 79 } |
78 | 80 |
79 // TODO(lalitm) once multiple permissions is ready to land, this | 81 std::vector<int> permissions; |
80 // should be implemented properly. | 82 permissions.reserve(requests_.size()); |
81 NOTIMPLEMENTED(); | 83 for (const auto& request : requests_) |
82 for (size_t i = 0; i < requests_.size(); ++i) | 84 permissions.push_back(request.type()); |
83 requests_[i].non_user_callback().Run(false, CONTENT_SETTING_DEFAULT); | 85 |
84 return false; | 86 scoped_ptr<PermissionGroupInfoBarDelegateAndroid> delegate( |
| 87 new PermissionGroupInfoBarDelegateAndroid( |
| 88 requesting_frame_, |
| 89 display_languages, |
| 90 base::Bind(&PermissionInfoBarRequest::OnPermissionsSet, |
| 91 weak_factory_.GetWeakPtr(), |
| 92 manager_callback))); |
| 93 infobar_ = infobar_service->AddInfoBar(make_scoped_ptr( |
| 94 new PermissionGroupInfoBarAndroid(delegate.Pass(), permissions))); |
| 95 DCHECK(infobar_); |
| 96 return infobar_; |
85 } | 97 } |
86 | 98 |
87 void PermissionInfoBarRequest::Cancel() { | 99 void PermissionInfoBarRequest::Cancel() { |
88 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 100 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
89 DCHECK(infobar_); | 101 DCHECK(infobar_); |
90 infobar_->RemoveSelf(); | 102 infobar_->RemoveSelf(); |
91 } | 103 } |
92 | 104 |
93 void PermissionInfoBarRequest::OnPermissionSet( | 105 void PermissionInfoBarRequest::OnPermissionSet( |
94 const base::Closure& manager_callback, | 106 const base::Closure& manager_callback, |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
166 case CONTENT_SETTINGS_TYPE_DURABLE_STORAGE: | 178 case CONTENT_SETTINGS_TYPE_DURABLE_STORAGE: |
167 infobar_ = DurableStoragePermissionInfoBarDelegate::Create( | 179 infobar_ = DurableStoragePermissionInfoBarDelegate::Create( |
168 infobar_service, requesting_frame_, | 180 infobar_service, requesting_frame_, |
169 display_languages, request.type(), callback); | 181 display_languages, request.type(), callback); |
170 break; | 182 break; |
171 default: | 183 default: |
172 NOTREACHED(); | 184 NOTREACHED(); |
173 break; | 185 break; |
174 } | 186 } |
175 } | 187 } |
OLD | NEW |