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

Unified Diff: chrome/browser/ui/website_settings/permission_bubble_manager.h

Issue 2081103002: Rename PermissionBubbleManager to PermissionRequestManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review comments Created 4 years, 5 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/ui/website_settings/permission_bubble_manager.h
diff --git a/chrome/browser/ui/website_settings/permission_bubble_manager.h b/chrome/browser/ui/website_settings/permission_bubble_manager.h
deleted file mode 100644
index 6a1c0367a095cde8ce52af2a8ad17774762528b6..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/website_settings/permission_bubble_manager.h
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright 2014 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_UI_WEBSITE_SETTINGS_PERMISSION_BUBBLE_MANAGER_H_
-#define CHROME_BROWSER_UI_WEBSITE_SETTINGS_PERMISSION_BUBBLE_MANAGER_H_
-
-#include <unordered_map>
-#include <vector>
-
-#include "base/gtest_prod_util.h"
-#include "base/memory/weak_ptr.h"
-#include "base/observer_list.h"
-#include "chrome/browser/ui/website_settings/permission_bubble_view.h"
-#include "content/public/browser/web_contents_observer.h"
-#include "content/public/browser/web_contents_user_data.h"
-
-class PermissionBubbleRequest;
-
-// Provides access to permissions bubbles. Allows clients to add a request
-// callback interface to the existing permission bubble configuration.
-// Depending on the situation and policy, that may add new UI to an existing
-// permission bubble, create and show a new permission bubble, or provide no
-// visible UI action at all. (In that case, the request will be immediately
-// informed that the permission request failed.)
-//
-// A PermissionBubbleManager is associated with a particular WebContents.
-// Requests attached to a particular WebContents' PBM must outlive it.
-//
-// The PermissionBubbleManager should be addressed on the UI thread.
-class PermissionBubbleManager
- : public content::WebContentsObserver,
- public content::WebContentsUserData<PermissionBubbleManager>,
- public PermissionBubbleView::Delegate {
- public:
- class Observer {
- public:
- virtual ~Observer();
- virtual void OnBubbleAdded();
- };
-
- enum AutoResponseType {
- NONE,
- ACCEPT_ALL,
- DENY_ALL,
- DISMISS
- };
-
- ~PermissionBubbleManager() override;
-
- // Adds a new request to the permission bubble. Ownership of the request
- // remains with the caller. The caller must arrange for the request to
- // outlive the PermissionBubbleManager. If a bubble is visible when this
- // call is made, the request will be queued up and shown after the current
- // bubble closes. A request with message text identical to an outstanding
- // request will be merged with the outstanding request, and will have the same
- // callbacks called as the outstanding request.
- void AddRequest(PermissionBubbleRequest* request);
-
- // Cancels an outstanding request. This may have different effects depending
- // on what is going on with the bubble. If the request is pending, it will be
- // removed and never shown. If the request is showing, it will continue to be
- // shown, but the user's action won't be reported back to the request object.
- // In some circumstances, we can remove the request from the bubble, and may
- // do so. The request will have RequestFinished executed on it if it is found,
- // at which time the caller is free to delete the request.
- void CancelRequest(PermissionBubbleRequest* request);
-
- // Hides the bubble.
- void HideBubble();
-
- // Will show a permission bubble if there is a pending permission request on
- // the web contents that the PermissionBubbleManager belongs to.
- void DisplayPendingRequests();
-
- // Will reposition the bubble (may change parent if necessary).
- void UpdateAnchorPosition();
-
- // True if a permission bubble is currently visible.
- // TODO(hcarmona): Remove this as part of the bubble API work.
- bool IsBubbleVisible();
-
- // Get the native window of the bubble.
- // TODO(hcarmona): Remove this as part of the bubble API work.
- gfx::NativeWindow GetBubbleWindow();
-
- // For observing the status of the permission bubble manager.
- void AddObserver(Observer* observer);
- void RemoveObserver(Observer* observer);
-
- // Do NOT use this methods in production code. Use this methods in browser
- // tests that need to accept or deny permissions when requested in
- // JavaScript. Your test needs to set this appropriately, and then the bubble
- // will proceed as desired as soon as Show() is called.
- void set_auto_response_for_test(AutoResponseType response) {
- auto_response_for_test_ = response;
- }
-
- private:
- // TODO(felt): Update testing so that it doesn't involve a lot of friends.
- friend class GeolocationBrowserTest;
- friend class GeolocationPermissionContextTests;
- friend class MockPermissionBubbleFactory;
- friend class MockPermissionBubbleView;
- friend class PermissionBubbleManagerTest;
- friend class PermissionContextBaseTests;
- friend class content::WebContentsUserData<PermissionBubbleManager>;
- FRIEND_TEST_ALL_PREFIXES(DownloadTest, TestMultipleDownloadsBubble);
-
- explicit PermissionBubbleManager(content::WebContents* web_contents);
-
- // WebContentsObserver:
- void DidNavigateMainFrame(
- const content::LoadCommittedDetails& details,
- const content::FrameNavigateParams& params) override;
- void DocumentOnLoadCompletedInMainFrame() override;
- void DocumentLoadedInFrame(
- content::RenderFrameHost* render_frame_host) override;
- void WebContentsDestroyed() override;
-
- // PermissionBubbleView::Delegate:
- void ToggleAccept(int request_index, bool new_value) override;
- void Accept() override;
- void Deny() override;
- void Closing() override;
-
- // Posts a task which will allow the bubble to become visible if it is needed.
- void ScheduleShowBubble();
-
- // Shows the bubble if it is not already visible and there are pending
- // requests.
- void TriggerShowBubble();
-
- // Finalize the pending permissions request.
- void FinalizeBubble();
-
- // Cancel any pending requests. This is called if the WebContents
- // on which permissions calls are pending is destroyed or navigated away
- // from the requesting page.
- void CancelPendingQueues();
-
- // Searches |requests_|, |queued_requests_| and |queued_frame_requests_| - but
- // *not* |duplicate_requests_| - for a request matching |request|, and returns
- // the matching request, or |nullptr| if no match. Note that the matching
- // request may or may not be the same object as |request|.
- PermissionBubbleRequest* GetExistingRequest(PermissionBubbleRequest* request);
-
- // Returns true if |queue| contains a request which was generated by a user
- // gesture. Returns false otherwise.
- bool HasUserGestureRequest(
- const std::vector<PermissionBubbleRequest*>& queue);
-
- // Calls PermissionGranted on a request and all its duplicates.
- void PermissionGrantedIncludingDuplicates(PermissionBubbleRequest* request);
- // Calls PermissionDenied on a request and all its duplicates.
- void PermissionDeniedIncludingDuplicates(PermissionBubbleRequest* request);
- // Calls Cancelled on a request and all its duplicates.
- void CancelledIncludingDuplicates(PermissionBubbleRequest* request);
- // Calls RequestFinished on a request and all its duplicates.
- void RequestFinishedIncludingDuplicates(PermissionBubbleRequest* request);
-
- void NotifyBubbleAdded();
-
- void DoAutoResponseForTesting();
-
- // Factory to be used to create views when needed.
- PermissionBubbleView::Factory view_factory_;
-
- // The UI surface to be used to display the permissions requests.
- std::unique_ptr<PermissionBubbleView> view_;
-
- std::vector<PermissionBubbleRequest*> requests_;
- std::vector<PermissionBubbleRequest*> queued_requests_;
- std::vector<PermissionBubbleRequest*> queued_frame_requests_;
- // Maps from the first request of a kind to subsequent requests that were
- // duped against it.
- std::unordered_multimap<PermissionBubbleRequest*, PermissionBubbleRequest*>
- duplicate_requests_;
-
- // URL of the main frame in the WebContents to which this manager is attached.
- // TODO(gbillock): if there are iframes in the page, we need to deal with it.
- GURL request_url_;
- bool main_frame_has_fully_loaded_;
-
- // Whether each of the requests in |requests_| is accepted by the user.
- std::vector<bool> accept_states_;
-
- base::ObserverList<Observer> observer_list_;
- AutoResponseType auto_response_for_test_;
-
- base::WeakPtrFactory<PermissionBubbleManager> weak_factory_;
-};
-
-#endif // CHROME_BROWSER_UI_WEBSITE_SETTINGS_PERMISSION_BUBBLE_MANAGER_H_

Powered by Google App Engine
This is Rietveld 408576698