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

Side by Side Diff: chrome/browser/ui/cocoa/website_settings/website_settings_bubble_controller.h

Issue 2741933003: Move Cocoa Page Info UI code to its own folder. (Closed)
Patch Set: Fixin' more unit tests BUILD paths (does mass_rename.py just not pick those up? => crbug.com/701529) Created 3 years, 9 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 2014 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_UI_COCOA_WEBSITE_SETTINGS_WEBSITE_SETTINGS_BUBBLE_CONTROL LER_H_
6 #define CHROME_BROWSER_UI_COCOA_WEBSITE_SETTINGS_WEBSITE_SETTINGS_BUBBLE_CONTROL LER_H_
7
8 #import <Cocoa/Cocoa.h>
9
10 #include <memory>
11
12 #include "base/mac/scoped_nsobject.h"
13 #include "base/macros.h"
14 #import "chrome/browser/ui/cocoa/omnibox_decoration_bubble_controller.h"
15 #include "chrome/browser/ui/page_info/website_settings_ui.h"
16 #include "content/public/browser/web_contents_observer.h"
17
18 class WebsiteSettingsUIBridge;
19
20 namespace content {
21 class WebContents;
22 }
23
24 namespace net {
25 class X509Certificate;
26 }
27
28 namespace security_state {
29 struct SecurityInfo;
30 } // namespace security_state
31
32 // This NSWindowController subclass manages the InfoBubbleWindow and view that
33 // are displayed when the user clicks the favicon or security lock icon.
34 //
35 // TODO(palmer): Normalize all WebsiteSettings*, SiteSettings*, PageInfo*, et c.
36 // to OriginInfo*.
37 @interface WebsiteSettingsBubbleController : OmniboxDecorationBubbleController {
38 @private
39 content::WebContents* webContents_;
40
41 base::scoped_nsobject<NSView> contentView_;
42
43 // The main content view for the Permissions tab.
44 NSView* securitySectionView_;
45
46 // Displays the short security summary for the page
47 // (private/not private/etc.).
48 NSTextField* securitySummaryField_;
49
50 // Displays a longer explanation of the page's security state, and how the
51 // user should treat it.
52 NSTextField* securityDetailsField_;
53
54 // The link button for opening a Chrome Help Center page explaining connection
55 // security.
56 NSButton* connectionHelpButton_;
57
58 // URL of the page for which the bubble is shown.
59 GURL url_;
60
61 // Displays a paragraph to accompany the reset decisions button, explaining
62 // that the user has made a decision to trust an invalid security certificate
63 // for the current site.
64 // This field only shows when there is an acrive certificate exception.
65 NSTextField* resetDecisionsField_;
66
67 // The link button for revoking certificate decisions.
68 // This link only shows when there is an acrive certificate exception.
69 NSButton* resetDecisionsButton_;
70
71 // The server certificate from the identity info. This should always be
72 // non-null on a cryptographic connection, and null otherwise.
73 scoped_refptr<net::X509Certificate> certificate_;
74
75 // Separator line.
76 NSView* separatorAfterSecuritySection_;
77
78 // Container for the site settings section.
79 NSView* siteSettingsSectionView_;
80
81 // Container for cookies info in the site settings section.
82 NSView* cookiesView_;
83
84 // Container for permission info in the site settings section.
85 NSView* permissionsView_;
86
87 // Whether the permissionView_ shows anything.
88 BOOL permissionsPresent_;
89
90 // The link button for showing site settings.
91 NSButton* siteSettingsButton_;
92
93 // The UI translates user actions to specific events and forwards them to the
94 // |presenter_|. The |presenter_| handles these events and updates the UI.
95 std::unique_ptr<WebsiteSettings> presenter_;
96
97 // Bridge which implements the WebsiteSettingsUI interface and forwards
98 // methods on to this class.
99 std::unique_ptr<WebsiteSettingsUIBridge> bridge_;
100 }
101
102 // Designated initializer. The controller will release itself when the bubble
103 // is closed. |parentWindow| cannot be nil. |webContents| may be nil for
104 // testing purposes.
105 - (id)initWithParentWindow:(NSWindow*)parentWindow
106 websiteSettingsUIBridge:(WebsiteSettingsUIBridge*)bridge
107 webContents:(content::WebContents*)webContents
108 url:(const GURL&)url;
109
110 // Return the default width of the window. It may be wider to fit the content.
111 // This may be overriden by a subclass for testing purposes.
112 - (CGFloat)defaultWindowWidth;
113
114 @end
115
116 // Provides a bridge between the WebSettingsUI C++ interface and the Cocoa
117 // implementation in WebsiteSettingsBubbleController.
118 class WebsiteSettingsUIBridge : public content::WebContentsObserver,
119 public WebsiteSettingsUI {
120 public:
121 explicit WebsiteSettingsUIBridge(content::WebContents* web_contents);
122 ~WebsiteSettingsUIBridge() override;
123
124 // Creates a |WebsiteSettingsBubbleController| and displays the UI. |parent|
125 // is the currently active window. |profile| points to the currently active
126 // profile. |web_contents| points to the WebContents that wraps the currently
127 // active tab. |virtual_url| is the virtual GURL of the currently active
128 // tab. |security_info| is the |security_state::SecurityInfo| of the
129 // connection to the website in the currently active tab.
130 static void Show(gfx::NativeWindow parent,
131 Profile* profile,
132 content::WebContents* web_contents,
133 const GURL& virtual_url,
134 const security_state::SecurityInfo& security_info);
135
136 void set_bubble_controller(
137 WebsiteSettingsBubbleController* bubble_controller);
138
139 // WebContentsObserver implementation.
140 void RenderFrameDeleted(content::RenderFrameHost* render_frame_host) override;
141
142 // WebsiteSettingsUI implementations.
143 void SetCookieInfo(const CookieInfoList& cookie_info_list) override;
144 void SetPermissionInfo(const PermissionInfoList& permission_info_list,
145 ChosenObjectInfoList chosen_object_info_list) override;
146 void SetIdentityInfo(const IdentityInfo& identity_info) override;
147
148 private:
149 // The WebContents the bubble UI is attached to.
150 content::WebContents* web_contents_;
151
152 // The Cocoa controller for the bubble UI.
153 WebsiteSettingsBubbleController* bubble_controller_;
154
155 DISALLOW_COPY_AND_ASSIGN(WebsiteSettingsUIBridge);
156 };
157
158 #endif // CHROME_BROWSER_UI_COCOA_WEBSITE_SETTINGS_WEBSITE_SETTINGS_BUBBLE_CONT ROLLER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698