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

Side by Side Diff: chrome/browser/ui/cocoa/infobars/infobar_container_controller.mm

Issue 7461134: [Mac] Unspoofable infobars v3. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Rohit Created 9 years, 4 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #include "base/logging.h" 5 #include "base/logging.h"
6 #include "base/mac/mac_util.h" 6 #include "base/mac/mac_util.h"
7 #include "chrome/browser/tab_contents/confirm_infobar_delegate.h" 7 #include "chrome/browser/tab_contents/confirm_infobar_delegate.h"
8 #include "chrome/browser/tab_contents/infobar.h" 8 #include "chrome/browser/tab_contents/infobar.h"
9 #import "chrome/browser/ui/cocoa/animatable_view.h" 9 #import "chrome/browser/ui/cocoa/animatable_view.h"
10 #import "chrome/browser/ui/cocoa/infobars/infobar_container_controller.h" 10 #import "chrome/browser/ui/cocoa/infobars/infobar_container_controller.h"
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 151
152 - (void)tabDetachedWithContents:(TabContentsWrapper*)contents { 152 - (void)tabDetachedWithContents:(TabContentsWrapper*)contents {
153 if (currentTabContents_ == contents) 153 if (currentTabContents_ == contents)
154 [self changeTabContents:NULL]; 154 [self changeTabContents:NULL];
155 } 155 }
156 156
157 - (NSUInteger)infobarCount { 157 - (NSUInteger)infobarCount {
158 return [infobarControllers_ count] - [closingInfoBars_ count]; 158 return [infobarControllers_ count] - [closingInfoBars_ count];
159 } 159 }
160 160
161 - (CGFloat)antiSpoofHeight { 161 - (CGFloat)overlappingTipHeight {
162 return 0; 162 return [self infobarCount] ? infobars::kTipHeight : 0;
163 } 163 }
164 164
165 - (void)resizeView:(NSView*)view newHeight:(CGFloat)height { 165 - (void)resizeView:(NSView*)view newHeight:(CGFloat)height {
166 NSRect frame = [view frame]; 166 NSRect frame = [view frame];
167 frame.size.height = height; 167 frame.size.height = height;
168 [view setFrame:frame]; 168 [view setFrame:frame];
169 [self positionInfoBarsAndRedraw]; 169 [self positionInfoBarsAndRedraw];
170 } 170 }
171 171
172 - (void)setAnimationInProgress:(BOOL)inProgress { 172 - (void)setAnimationInProgress:(BOOL)inProgress {
173 if ([resizeDelegate_ respondsToSelector:@selector(setAnimationInProgress:)]) 173 if ([resizeDelegate_ respondsToSelector:@selector(setAnimationInProgress:)])
174 [resizeDelegate_ setAnimationInProgress:inProgress]; 174 [resizeDelegate_ setAnimationInProgress:inProgress];
175 } 175 }
176 176
177 @end 177 @end
178 178
179 @implementation InfoBarContainerController (PrivateMethods) 179 @implementation InfoBarContainerController (PrivateMethods)
180 180
181 - (CGFloat)desiredHeight { 181 - (CGFloat)desiredHeight {
182 CGFloat height = 0; 182 CGFloat height = 0;
183
183 for (InfoBarController* controller in infobarControllers_.get()) 184 for (InfoBarController* controller in infobarControllers_.get())
rohitrao (ping after 24h) 2011/08/05 14:24:12 Add a comment reminding us that NSHeight(eachInfob
Robert Sesek 2011/08/05 15:10:40 Done.
184 height += NSHeight([[controller view] frame]); 185 height += NSHeight([[controller view] frame]) - infobars::kTipHeight;
186
187 // If there's any infobars, add a little extra room for the tip of the first
rohitrao (ping after 24h) 2011/08/05 14:24:12 s/there's/there are/
Robert Sesek 2011/08/05 15:10:40 Done.
188 // infobar.
189 if (height)
190 height += infobars::kTipHeight;
191
185 return height; 192 return height;
186 } 193 }
187 194
188 - (void)addInfoBar:(InfoBar*)infobar animate:(BOOL)animate { 195 - (void)addInfoBar:(InfoBar*)infobar animate:(BOOL)animate {
189 InfoBarController* controller = infobar->controller(); 196 InfoBarController* controller = infobar->controller();
190 [controller setContainerController:self]; 197 [controller setContainerController:self];
191 [[controller animatableView] setResizeDelegate:self]; 198 [[controller animatableView] setResizeDelegate:self];
192 [[self view] addSubview:[controller view]]; 199 [[self view] addSubview:[controller view]];
193 [infobarControllers_ addObject:[controller autorelease]]; 200 [infobarControllers_ addObject:[controller autorelease]];
194 201
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 // the others below. 243 // the others below.
237 for (InfoBarController* controller in 244 for (InfoBarController* controller in
238 [infobarControllers_ reverseObjectEnumerator]) { 245 [infobarControllers_ reverseObjectEnumerator]) {
239 NSView* view = [controller view]; 246 NSView* view = [controller view];
240 NSRect frame = [view frame]; 247 NSRect frame = [view frame];
241 frame.origin.x = NSMinX(containerBounds); 248 frame.origin.x = NSMinX(containerBounds);
242 frame.origin.y = minY; 249 frame.origin.y = minY;
243 frame.size.width = NSWidth(containerBounds); 250 frame.size.width = NSWidth(containerBounds);
244 [view setFrame:frame]; 251 [view setFrame:frame];
245 252
246 minY += NSHeight(frame); 253 minY += NSHeight(frame) - infobars::kTipHeight;
247 } 254 }
248 255
249 [resizeDelegate_ resizeView:[self view] newHeight:[self desiredHeight]]; 256 [resizeDelegate_ resizeView:[self view] newHeight:[self desiredHeight]];
250 } 257 }
251 258
252 @end 259 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698