Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(89)

Unified Diff: chrome/browser/permissions/permission_queue_controller.h

Issue 1337903002: permissions: remove PermissionQueueController and introduce PermissionInfoBarManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@callbacks-delegates
Patch Set: Fix compile failures Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/permissions/permission_queue_controller.h
diff --git a/chrome/browser/permissions/permission_queue_controller.h b/chrome/browser/permissions/permission_queue_controller.h
deleted file mode 100644
index cbc52738d317a523d90328cf31687822bc7d1185..0000000000000000000000000000000000000000
--- a/chrome/browser/permissions/permission_queue_controller.h
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_PERMISSIONS_PERMISSION_QUEUE_CONTROLLER_H_
-#define CHROME_BROWSER_PERMISSIONS_PERMISSION_QUEUE_CONTROLLER_H_
-
-#include "base/bind.h"
-#include "components/content_settings/core/common/content_settings.h"
-#include "components/content_settings/core/common/content_settings_types.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_registrar.h"
-
-class GURL;
-class PermissionRequestID;
-class InfoBarService;
-class Profile;
-
-// This class controls an infobar queue per profile, and it's used by
-// GeolocationPermissionContext, and so on.
-// An alternate approach would be to have this queue per tab, and use
-// notifications to broadcast when permission is set / listen to notification to
-// cancel pending requests. This may be specially useful if there are other
-// things listening for such notifications.
-// For the time being this class is self-contained and it doesn't seem pulling
-// the notification infrastructure would simplify.
-class PermissionQueueController : public content::NotificationObserver {
- public:
- using PermissionDecidedCallback = base::Callback<void(ContentSetting)>;
-
- PermissionQueueController(Profile* profile, ContentSettingsType type);
- ~PermissionQueueController() override;
-
- // The InfoBar will be displayed immediately if the tab is not already
- // displaying one, otherwise it'll be queued.
- void CreateInfoBarRequest(const PermissionRequestID& id,
- const GURL& requesting_frame,
- const GURL& embedder,
- const PermissionDecidedCallback& callback);
-
- // Cancels a specific infobar request.
- void CancelInfoBarRequest(const PermissionRequestID& id);
-
- // Called by the InfoBarDelegate to notify permission has been set.
- // It'll notify and dismiss any other pending InfoBar request for the same
- // |requesting_frame| and embedder.
- void OnPermissionSet(const PermissionRequestID& id,
- const GURL& requesting_frame,
- const GURL& embedder,
- bool update_content_setting,
- bool allowed);
-
- // Performs the update to content settings for a particular request frame
- // context.
- void UpdateContentSetting(
- const GURL& requesting_frame, const GURL& embedder, bool allowed);
-
- protected:
- // content::NotificationObserver:
- void Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) override;
-
- private:
- class PendingInfobarRequest;
- class RequestEquals;
-
- typedef std::vector<PendingInfobarRequest> PendingInfobarRequests;
-
- // Returns true if a geolocation infobar is already visible for the tab
- // corresponding to |id|.
- bool AlreadyShowingInfoBarForTab(const PermissionRequestID& id) const;
-
- // Shows the next pending infobar for the tab corresponding to |id|, if any.
- // Note that this may not be the pending request whose ID is |id| if other
- // requests are higher in the queue. If we can't show infobars because there
- // is no InfoBarService for this tab, removes all queued requests for this
- // tab.
- void ShowQueuedInfoBarForTab(const PermissionRequestID& id);
-
- void ClearPendingInfobarRequestsForTab(const PermissionRequestID& id);
-
- void RegisterForInfoBarNotifications(InfoBarService* infobar_service);
- void UnregisterForInfoBarNotifications(InfoBarService* infobar_service);
-
- content::NotificationRegistrar registrar_;
-
- Profile* const profile_;
- ContentSettingsType type_;
- PendingInfobarRequests pending_infobar_requests_;
- bool in_shutdown_;
-
- DISALLOW_COPY_AND_ASSIGN(PermissionQueueController);
-};
-
-#endif // CHROME_BROWSER_PERMISSIONS_PERMISSION_QUEUE_CONTROLLER_H_
« no previous file with comments | « chrome/browser/permissions/permission_manager.cc ('k') | chrome/browser/permissions/permission_queue_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698