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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 if (requests_.size() == 1) { | 72 if (requests_.size() == 1) { |
71 CreateInfoBar( | 73 CreateInfoBar( |
72 infobar_service, | 74 infobar_service, |
73 requests_[0], | 75 requests_[0], |
74 display_languages, | 76 display_languages, |
75 base::Bind(&PermissionInfoBarRequest::OnPermissionSet, | 77 base::Bind(&PermissionInfoBarRequest::OnPermissionSet, |
76 weak_factory_.GetWeakPtr())); | 78 weak_factory_.GetWeakPtr())); |
77 return true; | 79 return true; |
78 } | 80 } |
79 | 81 |
80 // TODO(lalitm) once multiple permissions is ready to land, this | 82 std::vector<int> permissions; |
81 // should be implemented properly. | 83 permissions.reserve(requests_.size()); |
82 NOTIMPLEMENTED(); | 84 for (const auto& request : requests_) |
83 for (size_t i = 0; i < requests_.size(); ++i) | 85 permissions.push_back(request.type()); |
84 requests_[i].non_user_callback().Run(false, CONTENT_SETTING_DEFAULT); | 86 |
85 return false; | 87 scoped_ptr<PermissionGroupInfoBarDelegateAndroid> delegate( |
| 88 new PermissionGroupInfoBarDelegateAndroid( |
| 89 requesting_frame_, |
| 90 display_languages, |
| 91 base::Bind(&PermissionInfoBarRequest::OnPermissionsSet, |
| 92 weak_factory_.GetWeakPtr()))); |
| 93 infobar_ = infobar_service->AddInfoBar(make_scoped_ptr( |
| 94 new PermissionGroupInfoBarAndroid(delegate.Pass(), permissions))); |
| 95 DCHECK(infobar_); |
| 96 return infobar_; |
86 } | 97 } |
87 | 98 |
88 void PermissionInfoBarRequest::Cancel(bool allowed) { | 99 void PermissionInfoBarRequest::Cancel(bool allowed) { |
89 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | 100 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
90 DCHECK(infobar_); | 101 DCHECK(infobar_); |
91 | 102 |
92 infobar_->RemoveSelf(); | 103 infobar_->RemoveSelf(); |
93 OnPermissionsSet(allowed, | 104 OnPermissionsSet(allowed, |
94 std::vector<ContentSetting>(requests_.size(), | 105 std::vector<ContentSetting>(requests_.size(), |
95 allowed ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK)); | 106 allowed ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK)); |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 case CONTENT_SETTINGS_TYPE_DURABLE_STORAGE: | 180 case CONTENT_SETTINGS_TYPE_DURABLE_STORAGE: |
170 infobar_ = DurableStoragePermissionInfoBarDelegate::Create( | 181 infobar_ = DurableStoragePermissionInfoBarDelegate::Create( |
171 infobar_service, requesting_frame_, | 182 infobar_service, requesting_frame_, |
172 display_languages, request.type(), callback); | 183 display_languages, request.type(), callback); |
173 break; | 184 break; |
174 default: | 185 default: |
175 NOTREACHED(); | 186 NOTREACHED(); |
176 break; | 187 break; |
177 } | 188 } |
178 } | 189 } |
OLD | NEW |