Index: chrome/browser/permissions/permission_infobar_request.cc |
diff --git a/chrome/browser/permissions/permission_infobar_request.cc b/chrome/browser/permissions/permission_infobar_request.cc |
index 6e9daa63833bda887b823ca9c75e48a6206c421d..67fb8344e0cef83cce5ab32d48a8c77b7df79fe9 100644 |
--- a/chrome/browser/permissions/permission_infobar_request.cc |
+++ b/chrome/browser/permissions/permission_infobar_request.cc |
@@ -5,6 +5,7 @@ |
#include "chrome/browser/permissions/permission_infobar_request.h" |
#include "base/prefs/pref_service.h" |
+#include "chrome/browser/android/permissions/permission_group_infobar_delegate_android.h" |
#include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
#include "chrome/browser/geolocation/geolocation_infobar_delegate.h" |
#include "chrome/browser/infobars/infobar_service.h" |
@@ -12,6 +13,7 @@ |
#include "chrome/browser/notifications/notification_permission_infobar_delegate.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/storage/durable_storage_permission_infobar_delegate.h" |
+#include "chrome/browser/ui/android/infobars/permission_group_infobar_android.h" |
#include "chrome/common/pref_names.h" |
#include "components/content_settings/core/browser/host_content_settings_map.h" |
#include "components/infobars/core/infobar.h" |
@@ -76,12 +78,22 @@ bool PermissionInfoBarRequest::ShowInfobar( |
return true; |
} |
- // TODO(lalitm) once multiple permissions is ready to land, this |
- // should be implemented properly. |
- NOTIMPLEMENTED(); |
- for (size_t i = 0; i < requests_.size(); ++i) |
- requests_[i].non_user_callback().Run(false, CONTENT_SETTING_DEFAULT); |
- return false; |
+ std::vector<int> permissions; |
+ permissions.reserve(requests_.size()); |
+ for (const auto& request : requests_) |
+ permissions.push_back(request.type()); |
+ |
+ scoped_ptr<PermissionGroupInfoBarDelegateAndroid> delegate( |
+ new PermissionGroupInfoBarDelegateAndroid( |
+ requesting_frame_, |
+ display_languages, |
+ base::Bind(&PermissionInfoBarRequest::OnPermissionsSet, |
+ weak_factory_.GetWeakPtr(), |
+ manager_callback))); |
+ infobar_ = infobar_service->AddInfoBar(make_scoped_ptr( |
+ new PermissionGroupInfoBarAndroid(delegate.Pass(), permissions))); |
+ DCHECK(infobar_); |
+ return infobar_; |
} |
void PermissionInfoBarRequest::Cancel() { |