Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import "chrome/browser/ui/cocoa/page_info/page_info_bubble_controller.h" | 5 #import "chrome/browser/ui/cocoa/page_info/page_info_bubble_controller.h" |
| 6 | 6 |
| 7 #import <AppKit/AppKit.h> | 7 #import <AppKit/AppKit.h> |
| 8 | 8 |
| 9 #include <cmath> | 9 #include <cmath> |
| 10 | 10 |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 105 | 105 |
| 106 // Padding between the window frame and content for the internal page bubble. | 106 // Padding between the window frame and content for the internal page bubble. |
| 107 const CGFloat kInternalPageFramePadding = 10; | 107 const CGFloat kInternalPageFramePadding = 10; |
| 108 | 108 |
| 109 // Spacing between the image and text for internal pages. | 109 // Spacing between the image and text for internal pages. |
| 110 const CGFloat kInternalPageImageSpacing = 10; | 110 const CGFloat kInternalPageImageSpacing = 10; |
| 111 | 111 |
| 112 // ----------------------------------------------------------------------------- | 112 // ----------------------------------------------------------------------------- |
| 113 | 113 |
| 114 // NOTE: This assumes that there will never be more than one page info | 114 // NOTE: This assumes that there will never be more than one page info |
| 115 // popup shown, and that the one that is shown is associated with the current | 115 // bubbl shown, and that the one that is shown is associated with the current |
|
msw
2017/04/05 19:27:20
nit: bubble
| |
| 116 // window. This matches the behaviour in views: see PageInfoPopupView. | 116 // window. This matches the behaviour in Views: see PageInfoBubbleView. |
| 117 bool g_is_popup_showing = false; | 117 bool g_is_bubble_showing = false; |
| 118 | 118 |
| 119 // Takes in the parent window, which should be a BrowserWindow, and gets the | 119 // Takes in the parent window, which should be a BrowserWindow, and gets the |
| 120 // proper anchor point for the bubble. The returned point is in screen | 120 // proper anchor point for the bubble. The returned point is in screen |
| 121 // coordinates. | 121 // coordinates. |
| 122 NSPoint AnchorPointForWindow(NSWindow* parent) { | 122 NSPoint AnchorPointForWindow(NSWindow* parent) { |
| 123 BrowserWindowController* controller = [parent windowController]; | 123 BrowserWindowController* controller = [parent windowController]; |
| 124 NSPoint origin = NSZeroPoint; | 124 NSPoint origin = NSZeroPoint; |
| 125 if ([controller isKindOfClass:[BrowserWindowController class]]) { | 125 if ([controller isKindOfClass:[BrowserWindowController class]]) { |
| 126 LocationBarViewMac* location_bar = [controller locationBarBridge]; | 126 LocationBarViewMac* location_bar = [controller locationBarBridge]; |
| 127 if (location_bar) { | 127 if (location_bar) { |
| (...skipping 988 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1116 controlOrigin.y)]; | 1116 controlOrigin.y)]; |
| 1117 [self performLayout]; | 1117 [self performLayout]; |
| 1118 } | 1118 } |
| 1119 | 1119 |
| 1120 @end | 1120 @end |
| 1121 | 1121 |
| 1122 PageInfoUIBridge::PageInfoUIBridge(content::WebContents* web_contents) | 1122 PageInfoUIBridge::PageInfoUIBridge(content::WebContents* web_contents) |
| 1123 : content::WebContentsObserver(web_contents), | 1123 : content::WebContentsObserver(web_contents), |
| 1124 web_contents_(web_contents), | 1124 web_contents_(web_contents), |
| 1125 bubble_controller_(nil) { | 1125 bubble_controller_(nil) { |
| 1126 DCHECK(!g_is_popup_showing); | 1126 DCHECK(!g_is_bubble_showing); |
| 1127 g_is_popup_showing = true; | 1127 g_is_bubble_showing = true; |
| 1128 } | 1128 } |
| 1129 | 1129 |
| 1130 PageInfoUIBridge::~PageInfoUIBridge() { | 1130 PageInfoUIBridge::~PageInfoUIBridge() { |
| 1131 DCHECK(g_is_popup_showing); | 1131 DCHECK(g_is_bubble_showing); |
| 1132 g_is_popup_showing = false; | 1132 g_is_bubble_showing = false; |
| 1133 } | 1133 } |
| 1134 | 1134 |
| 1135 void PageInfoUIBridge::set_bubble_controller( | 1135 void PageInfoUIBridge::set_bubble_controller( |
| 1136 PageInfoBubbleController* controller) { | 1136 PageInfoBubbleController* controller) { |
| 1137 bubble_controller_ = controller; | 1137 bubble_controller_ = controller; |
| 1138 } | 1138 } |
| 1139 | 1139 |
| 1140 void PageInfoUIBridge::Show(gfx::NativeWindow parent, | 1140 void PageInfoUIBridge::Show(gfx::NativeWindow parent, |
| 1141 Profile* profile, | 1141 Profile* profile, |
| 1142 content::WebContents* web_contents, | 1142 content::WebContents* web_contents, |
| 1143 const GURL& virtual_url, | 1143 const GURL& virtual_url, |
| 1144 const security_state::SecurityInfo& security_info) { | 1144 const security_state::SecurityInfo& security_info) { |
| 1145 if (ui::MaterialDesignController::IsSecondaryUiMaterial()) { | 1145 if (ui::MaterialDesignController::IsSecondaryUiMaterial()) { |
| 1146 chrome::ShowPageInfoBubbleViewsAtPoint( | 1146 chrome::ShowPageInfoBubbleViewsAtPoint( |
| 1147 gfx::ScreenPointFromNSPoint(AnchorPointForWindow(parent)), profile, | 1147 gfx::ScreenPointFromNSPoint(AnchorPointForWindow(parent)), profile, |
| 1148 web_contents, virtual_url, security_info); | 1148 web_contents, virtual_url, security_info); |
| 1149 return; | 1149 return; |
| 1150 } | 1150 } |
| 1151 | 1151 |
| 1152 // Don't show the popup if it's already being shown. Since this method is | 1152 // Don't show the popup if it's already being shown. Since this method is |
|
msw
2017/04/05 19:27:20
nit: s/popup/bubble/
| |
| 1153 // called each time the location icon is clicked, each click toggles the popup | 1153 // called each time the location icon is clicked, each click toggles the popup |
|
msw
2017/04/05 19:27:20
nit: s/popup/bubble/
| |
| 1154 // in and out. | 1154 // in and out. |
| 1155 if (g_is_popup_showing) | 1155 if (g_is_bubble_showing) |
| 1156 return; | 1156 return; |
| 1157 | 1157 |
| 1158 // Create the bridge. This will be owned by the bubble controller. | 1158 // Create the bridge. This will be owned by the bubble controller. |
| 1159 PageInfoUIBridge* bridge = new PageInfoUIBridge(web_contents); | 1159 PageInfoUIBridge* bridge = new PageInfoUIBridge(web_contents); |
| 1160 | 1160 |
| 1161 // Create the bubble controller. It will dealloc itself when it closes, | 1161 // Create the bubble controller. It will dealloc itself when it closes, |
| 1162 // resetting |g_is_popup_showing|. | 1162 // resetting |g_is_bubble_showing|. |
| 1163 PageInfoBubbleController* bubble_controller = | 1163 PageInfoBubbleController* bubble_controller = |
| 1164 [[PageInfoBubbleController alloc] initWithParentWindow:parent | 1164 [[PageInfoBubbleController alloc] initWithParentWindow:parent |
| 1165 pageInfoUIBridge:bridge | 1165 pageInfoUIBridge:bridge |
| 1166 webContents:web_contents | 1166 webContents:web_contents |
| 1167 url:virtual_url]; | 1167 url:virtual_url]; |
| 1168 | 1168 |
| 1169 if (!IsInternalURL(virtual_url)) { | 1169 if (!IsInternalURL(virtual_url)) { |
| 1170 // Initialize the presenter, which holds the model and controls the UI. | 1170 // Initialize the presenter, which holds the model and controls the UI. |
| 1171 // This is also owned by the bubble controller. | 1171 // This is also owned by the bubble controller. |
| 1172 PageInfo* presenter = | 1172 PageInfo* presenter = |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 1194 void PageInfoUIBridge::SetCookieInfo(const CookieInfoList& cookie_info_list) { | 1194 void PageInfoUIBridge::SetCookieInfo(const CookieInfoList& cookie_info_list) { |
| 1195 [bubble_controller_ setCookieInfo:cookie_info_list]; | 1195 [bubble_controller_ setCookieInfo:cookie_info_list]; |
| 1196 } | 1196 } |
| 1197 | 1197 |
| 1198 void PageInfoUIBridge::SetPermissionInfo( | 1198 void PageInfoUIBridge::SetPermissionInfo( |
| 1199 const PermissionInfoList& permission_info_list, | 1199 const PermissionInfoList& permission_info_list, |
| 1200 ChosenObjectInfoList chosen_object_info_list) { | 1200 ChosenObjectInfoList chosen_object_info_list) { |
| 1201 [bubble_controller_ setPermissionInfo:permission_info_list | 1201 [bubble_controller_ setPermissionInfo:permission_info_list |
| 1202 andChosenObjects:std::move(chosen_object_info_list)]; | 1202 andChosenObjects:std::move(chosen_object_info_list)]; |
| 1203 } | 1203 } |
| OLD | NEW |