permission_request_queue.cc 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // Copyright 2022 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "components/permissions/permission_request_queue.h"
  5. #include "base/stl_util.h"
  6. #include "components/permissions/features.h"
  7. namespace permissions {
  8. PermissionRequestQueue::PermissionRequestQueue() = default;
  9. PermissionRequestQueue::~PermissionRequestQueue() = default;
  10. bool PermissionRequestQueue::IsEmpty() {
  11. return queued_requests_.empty();
  12. }
  13. size_t PermissionRequestQueue::Count() {
  14. return queued_requests_.size();
  15. }
  16. size_t PermissionRequestQueue::Count(PermissionRequest* request) {
  17. return base::STLCount(queued_requests_, request);
  18. }
  19. void PermissionRequestQueue::Push(permissions::PermissionRequest* request) {
  20. if (base::FeatureList::IsEnabled(features::kPermissionQuietChip) &&
  21. !base::FeatureList::IsEnabled(features::kPermissionChip)) {
  22. queued_requests_.push_front(request);
  23. } else {
  24. queued_requests_.push_back(request);
  25. }
  26. }
  27. PermissionRequest* PermissionRequestQueue::Pop() {
  28. PermissionRequest* next = Peek();
  29. if (base::FeatureList::IsEnabled(features::kPermissionChip))
  30. queued_requests_.pop_back();
  31. else
  32. queued_requests_.pop_front();
  33. return next;
  34. }
  35. PermissionRequest* PermissionRequestQueue::Peek() {
  36. return base::FeatureList::IsEnabled(features::kPermissionChip)
  37. ? queued_requests_.back()
  38. : queued_requests_.front();
  39. }
  40. PermissionRequest* PermissionRequestQueue::FindDuplicate(
  41. PermissionRequest* request) {
  42. for (PermissionRequest* queued_request : queued_requests_) {
  43. if (request->IsDuplicateOf(queued_request)) {
  44. return queued_request;
  45. }
  46. }
  47. return nullptr;
  48. }
  49. PermissionRequestQueue::iterator PermissionRequestQueue::begin() {
  50. return queued_requests_.begin();
  51. }
  52. PermissionRequestQueue::iterator PermissionRequestQueue::end() {
  53. return queued_requests_.end();
  54. }
  55. }; // namespace permissions