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

Side by Side Diff: chrome/browser/permissions/permission_infobar_request.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 unified diff | Download patch
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_PERMISSIONS_PERMISSION_INFOBAR_REQUEST_H_
6 #define CHROME_BROWSER_PERMISSIONS_PERMISSION_INFOBAR_REQUEST_H_
7
8 #include "base/callback.h"
9 #include "base/memory/weak_ptr.h"
10 #include "components/content_settings/core/common/content_settings.h"
11 #include "url/gurl.h"
12
13 class InfoBarService;
14 class Profile;
15
16 namespace content {
17 class WebContents;
18 } // namespace content
19
20 namespace infobars {
21 class InfoBar;
22 } // namespace infobars
23
24 // Represents a permission request which will be displayed using an InfoBar.
25 class PermissionInfoBarRequest {
26 public:
27 PermissionInfoBarRequest(
28 int request_id,
29 const GURL& requesting_origin,
30 const GURL& embedding_origin,
31 const base::Closure& callback);
32 ~PermissionInfoBarRequest();
33
34 // Adds a permisison type which should be associated with this request.
35 /// This function can be called as many times as the caller wants until
36 // |ShowInfobar| is called. After this point this function should NOT be
37 // called.
38 void AddPermission(
39 const ContentSettingsType type,
40 const base::Callback<void(bool, ContentSetting)>& callback);
41
42 // Shows the relavent infobar for this request in the specified web contents.
43 // Called after all permissions have been added to the request with
44 // |AddPermission|.
45 bool ShowInfobar(content::WebContents* web_contents);
46
47 // Used to cancel the request without user action.
48 void Cancel();
49
50 int request_id() const { return request_id_; }
51
52 private:
53 friend class PermissionContextBaseTests;
54 using PermissionDecidedCallback = base::Callback<void(bool, ContentSetting)>;
55 class PermissionRequest {
56 public:
57 PermissionRequest(ContentSettingsType type,
58 const PermissionDecidedCallback& callback);
59 ~PermissionRequest();
60
61 ContentSettingsType type() const { return type_; }
62 const PermissionDecidedCallback& callback() const {
63 return callback_;
64 }
65
66 private:
67 ContentSettingsType type_;
68 PermissionDecidedCallback callback_;
69 };
70
71 // Used to accept or dismiss the request in tests.
72 void AcceptForTests();
73 void ClosingForTests();
74
75 // Called when this request is dismissed without user action.
76 void OnCancel();
77
78 // Callback function which is called when the user responds to a single
79 // permission infobar.
80 void OnPermissionSet(bool update_content_setting,
81 bool allowed);
82
83 // Callback function which is called when the user responds to a coalesced
84 // permission infobar.
85 void OnPermissionsSet(bool update_content_setting,
86 const std::vector<ContentSetting>& allowed);
87
88 // Removes any permissions from this request for which there is no need to
89 // prompt the user.
90 void PruneAnsweredPermissions(Profile* profile);
91
92 // Creates the single permission infobar for the PermissionRequest
93 // specified.
94 void CreateInfoBar(InfoBarService* infobar_service,
95 const PermissionRequest& request,
96 const std::string& display_languages,
97 const base::Callback<void(bool, bool)>& callback);
98
99 // Owned by InfoBarService.
100 infobars::InfoBar* infobar_;
101
102 int request_id_;
103 GURL requesting_origin_;
104 GURL embedding_origin_;
105 base::Closure callback_;
106 std::vector<PermissionRequest> requests_;
107
108 base::WeakPtrFactory<PermissionInfoBarRequest> weak_factory_;
109
110 DISALLOW_COPY_AND_ASSIGN(PermissionInfoBarRequest);
111 };
112
113 #endif // CHROME_BROWSER_PERMISSIONS_PERMISSION_INFOBAR_REQUEST_H_
OLDNEW
« no previous file with comments | « chrome/browser/permissions/permission_infobar_manager.cc ('k') | chrome/browser/permissions/permission_infobar_request.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698