Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/content_settings/content_setting_bubble_cocoa.h " | 5 #import "chrome/browser/ui/cocoa/content_settings/content_setting_bubble_cocoa.h " |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 #include "base/macros.h" | 11 #include "base/macros.h" |
| 12 #include "base/memory/ptr_util.h" | 12 #include "base/memory/ptr_util.h" |
| 13 #include "base/strings/sys_string_conversions.h" | 13 #include "base/strings/sys_string_conversions.h" |
| 14 #include "base/strings/utf_string_conversions.h" | 14 #include "base/strings/utf_string_conversions.h" |
| 15 #include "chrome/browser/plugins/plugin_finder.h" | 15 #include "chrome/browser/plugins/plugin_finder.h" |
| 16 #include "chrome/browser/plugins/plugin_metadata.h" | 16 #include "chrome/browser/plugins/plugin_metadata.h" |
| 17 #import "chrome/browser/ui/cocoa/info_bubble_view.h" | 17 #import "chrome/browser/ui/cocoa/info_bubble_view.h" |
| 18 #import "chrome/browser/ui/cocoa/info_bubble_window.h" | |
|
shivanisha
2017/05/03 18:10:35
removed this unused include
| |
| 18 #import "chrome/browser/ui/cocoa/l10n_util.h" | 19 #import "chrome/browser/ui/cocoa/l10n_util.h" |
| 20 #import "chrome/browser/ui/cocoa/location_bar/content_setting_decoration.h" | |
| 21 #import "chrome/browser/ui/cocoa/subresource_filter/subresource_filter_bubble_co ntroller.h" | |
| 19 #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h" | 22 #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h" |
| 20 #include "chrome/browser/ui/content_settings/content_setting_media_menu_model.h" | 23 #include "chrome/browser/ui/content_settings/content_setting_media_menu_model.h" |
| 21 #import "chrome/browser/ui/cocoa/location_bar/content_setting_decoration.h" | |
| 22 #include "chrome/grit/generated_resources.h" | 24 #include "chrome/grit/generated_resources.h" |
| 23 #include "components/content_settings/core/browser/host_content_settings_map.h" | 25 #include "components/content_settings/core/browser/host_content_settings_map.h" |
| 24 #include "content/public/browser/navigation_handle.h" | 26 #include "content/public/browser/navigation_handle.h" |
| 25 #include "content/public/browser/plugin_service.h" | 27 #include "content/public/browser/plugin_service.h" |
| 26 #include "content/public/browser/web_contents_observer.h" | 28 #include "content/public/browser/web_contents_observer.h" |
| 27 #include "skia/ext/skia_utils_mac.h" | 29 #include "skia/ext/skia_utils_mac.h" |
| 28 #import "third_party/google_toolbox_for_mac/src/AppKit/GTMUILocalizerAndLayoutTw eaker.h" | 30 #import "third_party/google_toolbox_for_mac/src/AppKit/GTMUILocalizerAndLayoutTw eaker.h" |
| 29 #import "ui/base/cocoa/controls/hyperlink_button_cell.h" | 31 #import "ui/base/cocoa/controls/hyperlink_button_cell.h" |
| 32 #import "ui/base/cocoa/window_size_constants.h" | |
|
Robert Sesek
2017/05/02 21:51:47
Unused
shivanisha
2017/05/03 18:10:35
removed
| |
| 30 #include "ui/base/l10n/l10n_util.h" | 33 #include "ui/base/l10n/l10n_util.h" |
| 31 | 34 |
| 32 using content::PluginService; | 35 using content::PluginService; |
| 33 | 36 |
| 34 namespace { | 37 namespace { |
| 35 | 38 |
| 36 // Height of one link in the popup list. | 39 // Height of one link in the popup list. |
| 37 const int kLinkHeight = 16; | 40 const int kLinkHeight = 16; |
| 38 | 41 |
| 39 // Space between two popup links. | 42 // Space between two popup links. |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 198 // close up shop. | 201 // close up shop. |
| 199 [controller_ closeBubble:nil]; | 202 [controller_ closeBubble:nil]; |
| 200 } | 203 } |
| 201 | 204 |
| 202 private: | 205 private: |
| 203 ContentSettingBubbleController* controller_; // weak | 206 ContentSettingBubbleController* controller_; // weak |
| 204 | 207 |
| 205 DISALLOW_COPY_AND_ASSIGN(ContentSettingBubbleWebContentsObserverBridge); | 208 DISALLOW_COPY_AND_ASSIGN(ContentSettingBubbleWebContentsObserverBridge); |
| 206 }; | 209 }; |
| 207 | 210 |
| 208 @interface ContentSettingBubbleController(Private) | 211 @interface ContentSettingBubbleController (Protected) |
| 209 - (id)initWithModel:(ContentSettingBubbleModel*)settingsBubbleModel | 212 - (id)initWithModel:(ContentSettingBubbleModel*)settingsBubbleModel |
| 210 webContents:(content::WebContents*)webContents | 213 webContents:(content::WebContents*)webContents |
| 211 parentWindow:(NSWindow*)parentWindow | 214 parentWindow:(NSWindow*)parentWindow |
| 212 decoration:(ContentSettingDecoration*)decoration | 215 decoration:(ContentSettingDecoration*)decoration |
| 213 anchoredAt:(NSPoint)anchoredAt; | 216 anchoredAt:(NSPoint)anchoredAt; |
| 214 - (NSString*)getNibPathForModel:(ContentSettingBubbleModel*)model; | 217 + (NSString*)getNibPathForModel:(ContentSettingBubbleModel*)model; |
| 218 + (ContentSettingBubbleController*)getControllerForModel: | |
| 219 (ContentSettingBubbleModel*)model; | |
| 215 - (NSButton*)hyperlinkButtonWithFrame:(NSRect)frame | 220 - (NSButton*)hyperlinkButtonWithFrame:(NSRect)frame |
| 216 title:(NSString*)title | 221 title:(NSString*)title |
| 217 icon:(NSImage*)icon | 222 icon:(NSImage*)icon |
| 218 referenceFrame:(NSRect)referenceFrame; | 223 referenceFrame:(NSRect)referenceFrame; |
| 219 - (void)initializeBlockedPluginsList; | 224 - (void)initializeBlockedPluginsList; |
| 220 - (void)initializeTitle; | 225 - (void)initializeTitle; |
| 221 - (void)initializeMessage; | 226 - (void)initializeMessage; |
| 227 - (void)initalizeManageCheckbox; | |
| 222 - (void)initializeRadioGroup; | 228 - (void)initializeRadioGroup; |
| 223 - (void)initializeItemList; | 229 - (void)initializeItemList; |
| 224 - (void)initializeGeoLists; | 230 - (void)initializeGeoLists; |
| 225 - (void)initializeMediaMenus; | 231 - (void)initializeMediaMenus; |
| 226 - (void)initializeMIDISysExLists; | 232 - (void)initializeMIDISysExLists; |
| 227 - (void)sizeToFitLoadButton; | 233 - (void)sizeToFitLoadButton; |
| 228 - (void)initManageDoneButtons; | |
| 229 - (void)removeInfoButton; | 234 - (void)removeInfoButton; |
| 230 - (void)popupLinkClicked:(id)sender; | 235 - (void)popupLinkClicked:(id)sender; |
| 231 - (void)clearGeolocationForCurrentHost:(id)sender; | 236 - (void)clearGeolocationForCurrentHost:(id)sender; |
| 232 - (void)clearMIDISysExForCurrentHost:(id)sender; | 237 - (void)clearMIDISysExForCurrentHost:(id)sender; |
| 233 @end | 238 @end |
| 234 | 239 |
| 235 @implementation ContentSettingBubbleController | 240 @implementation ContentSettingBubbleController |
| 236 | 241 |
| 237 + (ContentSettingBubbleController*) | 242 + (ContentSettingBubbleController*) |
| 238 showForModel:(ContentSettingBubbleModel*)contentSettingBubbleModel | 243 showForModel:(ContentSettingBubbleModel*)contentSettingBubbleModel |
| 239 webContents:(content::WebContents*)webContents | 244 webContents:(content::WebContents*)webContents |
| 240 parentWindow:(NSWindow*)parentWindow | 245 parentWindow:(NSWindow*)parentWindow |
| 241 decoration:(ContentSettingDecoration*)decoration | 246 decoration:(ContentSettingDecoration*)decoration |
| 242 anchoredAt:(NSPoint)anchor { | 247 anchoredAt:(NSPoint)anchor { |
| 243 // Autoreleases itself on bubble close. | 248 ContentSettingBubbleController* controller = |
| 244 return [[ContentSettingBubbleController alloc] | 249 [self getControllerForModel:contentSettingBubbleModel]; |
| 245 initWithModel:contentSettingBubbleModel | 250 |
| 246 webContents:webContents | 251 DCHECK(controller); |
| 247 parentWindow:parentWindow | 252 |
| 248 decoration:decoration | 253 return [controller initWithModel:contentSettingBubbleModel |
| 249 anchoredAt:anchor]; | 254 webContents:webContents |
| 255 parentWindow:parentWindow | |
| 256 decoration:decoration | |
| 257 anchoredAt:anchor]; | |
| 250 } | 258 } |
| 251 | 259 |
| 252 struct ContentTypeToNibPath { | 260 struct ContentTypeToNibPath { |
| 253 ContentSettingsType type; | 261 ContentSettingsType type; |
| 254 NSString* path; | 262 NSString* path; |
| 255 }; | 263 }; |
| 256 | 264 |
| 257 const ContentTypeToNibPath kNibPaths[] = { | 265 const ContentTypeToNibPath kNibPaths[] = { |
| 258 {CONTENT_SETTINGS_TYPE_COOKIES, @"ContentBlockedCookies"}, | 266 {CONTENT_SETTINGS_TYPE_COOKIES, @"ContentBlockedCookies"}, |
| 259 {CONTENT_SETTINGS_TYPE_IMAGES, @"ContentBlockedSimple"}, | 267 {CONTENT_SETTINGS_TYPE_IMAGES, @"ContentBlockedSimple"}, |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 271 webContents:(content::WebContents*)webContents | 279 webContents:(content::WebContents*)webContents |
| 272 parentWindow:(NSWindow*)parentWindow | 280 parentWindow:(NSWindow*)parentWindow |
| 273 decoration:(ContentSettingDecoration*)decoration | 281 decoration:(ContentSettingDecoration*)decoration |
| 274 anchoredAt:(NSPoint)anchoredAt { | 282 anchoredAt:(NSPoint)anchoredAt { |
| 275 // This method takes ownership of |contentSettingBubbleModel| in all cases. | 283 // This method takes ownership of |contentSettingBubbleModel| in all cases. |
| 276 std::unique_ptr<ContentSettingBubbleModel> model(contentSettingBubbleModel); | 284 std::unique_ptr<ContentSettingBubbleModel> model(contentSettingBubbleModel); |
| 277 DCHECK(model.get()); | 285 DCHECK(model.get()); |
| 278 observerBridge_.reset( | 286 observerBridge_.reset( |
| 279 new ContentSettingBubbleWebContentsObserverBridge(webContents, self)); | 287 new ContentSettingBubbleWebContentsObserverBridge(webContents, self)); |
| 280 | 288 |
| 281 NSString* nibPath = [self getNibPathForModel:model.get()]; | 289 NSString* nibPath = |
| 290 [ContentSettingBubbleController getNibPathForModel:model.get()]; | |
| 282 | 291 |
| 283 DCHECK_NE(0u, [nibPath length]); | 292 DCHECK_NE(0u, [nibPath length]); |
| 284 | 293 |
| 285 if ((self = [super initWithWindowNibPath:nibPath | 294 if ((self = [super initWithWindowNibPath:nibPath |
| 286 parentWindow:parentWindow | 295 parentWindow:parentWindow |
| 287 anchoredAt:anchoredAt])) { | 296 anchoredAt:anchoredAt])) { |
| 288 contentSettingBubbleModel_ = std::move(model); | 297 contentSettingBubbleModel_ = std::move(model); |
| 289 decoration_ = decoration; | 298 decoration_ = decoration; |
| 290 [self showWindow:nil]; | 299 [self showWindow:nil]; |
| 291 } | 300 } |
| 292 return self; | 301 return self; |
| 293 } | 302 } |
| 294 | 303 |
| 295 - (NSString*)getNibPathForModel:(ContentSettingBubbleModel*)model { | 304 - (id)initWithModel:(ContentSettingBubbleModel*)contentSettingBubbleModel |
| 305 webContents:(content::WebContents*)webContents | |
| 306 window:(NSWindow*)window | |
| 307 parentWindow:(NSWindow*)parentWindow | |
| 308 decoration:(ContentSettingDecoration*)decoration | |
| 309 anchoredAt:(NSPoint)anchoredAt { | |
| 310 // This method takes ownership of |contentSettingBubbleModel| in all cases. | |
| 311 std::unique_ptr<ContentSettingBubbleModel> model(contentSettingBubbleModel); | |
| 312 DCHECK(model.get()); | |
| 313 observerBridge_.reset( | |
| 314 new ContentSettingBubbleWebContentsObserverBridge(webContents, self)); | |
| 315 | |
| 316 contentSettingBubbleModel_ = std::move(model); | |
| 317 | |
| 318 if ((self = [super initWithWindow:window | |
| 319 parentWindow:parentWindow | |
| 320 anchoredAt:anchoredAt])) { | |
| 321 decoration_ = decoration; | |
| 322 [self showWindow:nil]; | |
| 323 NSRect newWindowFrame = | |
| 324 [window frameRectForContentRect:NSMakeRect(196, 376, 316, 134)]; | |
|
Robert Sesek
2017/05/02 21:51:47
Why is this done here?
shivanisha
2017/05/03 18:10:35
Ah, remnant of earlier patch. Thanks, removed.
| |
| 325 | |
| 326 [window setFrame:newWindowFrame | |
| 327 display:YES | |
| 328 animate:[[self window] isVisible]]; | |
| 329 } | |
| 330 return self; | |
| 331 } | |
| 332 | |
| 333 + (NSString*)getNibPathForModel:(ContentSettingBubbleModel*)model { | |
| 296 NSString* nibPath = @""; | 334 NSString* nibPath = @""; |
| 297 | 335 |
| 298 ContentSettingSimpleBubbleModel* simple_bubble = model->AsSimpleBubbleModel(); | 336 ContentSettingSimpleBubbleModel* simple_bubble = model->AsSimpleBubbleModel(); |
| 299 if (simple_bubble) { | 337 if (simple_bubble) { |
| 300 ContentSettingsType settingsType = simple_bubble->content_type(); | 338 ContentSettingsType settingsType = simple_bubble->content_type(); |
| 301 | 339 |
| 302 for (const ContentTypeToNibPath& type_to_path : kNibPaths) { | 340 for (const ContentTypeToNibPath& type_to_path : kNibPaths) { |
| 303 if (settingsType == type_to_path.type) { | 341 if (settingsType == type_to_path.type) { |
| 304 nibPath = type_to_path.path; | 342 nibPath = type_to_path.path; |
| 305 break; | 343 break; |
| 306 } | 344 } |
| 307 } | 345 } |
| 308 } | 346 } |
| 309 | 347 |
| 310 if (model->AsMediaStreamBubbleModel()) | 348 if (model->AsMediaStreamBubbleModel()) |
| 311 nibPath = @"ContentBlockedMedia"; | 349 nibPath = @"ContentBlockedMedia"; |
| 312 | 350 |
| 313 if (model->AsSubresourceFilterBubbleModel()) | |
| 314 nibPath = @"ContentSubresourceFilter"; | |
| 315 | |
| 316 if (model->AsDownloadsBubbleModel()) | 351 if (model->AsDownloadsBubbleModel()) |
| 317 nibPath = @"ContentBlockedDownloads"; | 352 nibPath = @"ContentBlockedDownloads"; |
| 318 return nibPath; | 353 return nibPath; |
| 319 } | 354 } |
| 320 | 355 |
| 356 + (ContentSettingBubbleController*)getControllerForModel: | |
|
Robert Sesek
2017/05/02 21:51:47
naming: call this allocControllerForModel: to make
shivanisha
2017/05/03 18:10:35
done
| |
| 357 (ContentSettingBubbleModel*)model { | |
| 358 // Check if the view is expressed in xib file or not. | |
| 359 NSString* nibPath = [self getNibPathForModel:model]; | |
| 360 | |
| 361 // Autoreleases itself on bubble close. | |
| 362 | |
| 363 if ([nibPath length] > 0u) | |
| 364 return [ContentSettingBubbleController alloc]; | |
| 365 | |
| 366 if (model->AsSubresourceFilterBubbleModel()) | |
| 367 return [SubresourceFilterBubbleController alloc]; | |
| 368 | |
| 369 return nil; | |
| 370 } | |
| 371 | |
| 321 - (void)initializeTitle { | 372 - (void)initializeTitle { |
| 322 if (!titleLabel_) | 373 if (!titleLabel_) |
| 323 return; | 374 return; |
| 324 | 375 |
| 325 NSString* label = base::SysUTF16ToNSString( | 376 NSString* label = base::SysUTF16ToNSString( |
| 326 contentSettingBubbleModel_->bubble_content().title); | 377 contentSettingBubbleModel_->bubble_content().title); |
| 327 [titleLabel_ setStringValue:label]; | 378 [titleLabel_ setStringValue:label]; |
| 328 | 379 |
| 329 // Layout title post-localization. | 380 // Layout title post-localization. |
| 330 CGFloat deltaY = [GTMUILocalizerAndLayoutTweaker | 381 CGFloat deltaY = [GTMUILocalizerAndLayoutTweaker |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 348 CGFloat deltaY = [GTMUILocalizerAndLayoutTweaker | 399 CGFloat deltaY = [GTMUILocalizerAndLayoutTweaker |
| 349 sizeToFitFixedWidthTextField:messageLabel_]; | 400 sizeToFitFixedWidthTextField:messageLabel_]; |
| 350 NSRect windowFrame = [[self window] frame]; | 401 NSRect windowFrame = [[self window] frame]; |
| 351 windowFrame.size.height += deltaY; | 402 windowFrame.size.height += deltaY; |
| 352 [[self window] setFrame:windowFrame display:NO]; | 403 [[self window] setFrame:windowFrame display:NO]; |
| 353 NSRect messageFrame = [messageLabel_ frame]; | 404 NSRect messageFrame = [messageLabel_ frame]; |
| 354 messageFrame.origin.y -= deltaY; | 405 messageFrame.origin.y -= deltaY; |
| 355 [messageLabel_ setFrame:messageFrame]; | 406 [messageLabel_ setFrame:messageFrame]; |
| 356 } | 407 } |
| 357 | 408 |
| 409 - (void)initalizeManageCheckbox { | |
|
Robert Sesek
2017/05/02 21:51:47
spelling: initialize
shivanisha
2017/05/03 18:10:35
done. Also moved this to the subclass
| |
| 410 if (!manageCheckbox_) | |
| 411 return; | |
| 412 | |
| 413 NSString* label = base::SysUTF16ToNSString( | |
| 414 contentSettingBubbleModel_->bubble_content().manage_text); | |
| 415 [manageCheckbox_ setTitle:label]; | |
| 416 | |
| 417 CGFloat deltaY = | |
| 418 [GTMUILocalizerAndLayoutTweaker sizeToFitView:manageCheckbox_].height; | |
| 419 NSRect windowFrame = [[self window] frame]; | |
| 420 windowFrame.size.height += deltaY; | |
| 421 [[self window] setFrame:windowFrame display:NO]; | |
| 422 NSRect manageCheckboxFrame = [manageCheckbox_ frame]; | |
| 423 manageCheckboxFrame.origin.y -= deltaY; | |
| 424 [manageCheckbox_ setFrame:manageCheckboxFrame]; | |
| 425 } | |
| 426 | |
| 358 - (void)initializeRadioGroup { | 427 - (void)initializeRadioGroup { |
| 359 // NOTE! Tags in the xib files must match the order of the radio buttons | 428 // NOTE! Tags in the xib files must match the order of the radio buttons |
| 360 // passed in the radio_group and be 1-based, not 0-based. | 429 // passed in the radio_group and be 1-based, not 0-based. |
| 361 const ContentSettingBubbleModel::BubbleContent& bubble_content = | 430 const ContentSettingBubbleModel::BubbleContent& bubble_content = |
| 362 contentSettingBubbleModel_->bubble_content(); | 431 contentSettingBubbleModel_->bubble_content(); |
| 363 const ContentSettingBubbleModel::RadioGroup& radio_group = | 432 const ContentSettingBubbleModel::RadioGroup& radio_group = |
| 364 bubble_content.radio_group; | 433 bubble_content.radio_group; |
| 365 | 434 |
| 366 // Xcode 5.1 Interface Builder doesn't allow a font property to be set for | 435 // Xcode 5.1 Interface Builder doesn't allow a font property to be set for |
| 367 // NSMatrix. The implementation of GTMUILocalizerAndLayoutTweaker assumes that | 436 // NSMatrix. The implementation of GTMUILocalizerAndLayoutTweaker assumes that |
| (...skipping 394 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 762 2 * NSMinX([loadButton_ frame]); | 831 2 * NSMinX([loadButton_ frame]); |
| 763 if (NSWidth(windowFrame) < widthNeeded) { | 832 if (NSWidth(windowFrame) < widthNeeded) { |
| 764 windowFrame.size.width = widthNeeded; | 833 windowFrame.size.width = widthNeeded; |
| 765 [[self window] setFrame:windowFrame display:NO]; | 834 [[self window] setFrame:windowFrame display:NO]; |
| 766 } | 835 } |
| 767 } | 836 } |
| 768 | 837 |
| 769 - (void)initManageDoneButtons { | 838 - (void)initManageDoneButtons { |
| 770 const ContentSettingBubbleModel::BubbleContent& content = | 839 const ContentSettingBubbleModel::BubbleContent& content = |
| 771 contentSettingBubbleModel_->bubble_content(); | 840 contentSettingBubbleModel_->bubble_content(); |
| 772 [manageButton_ setTitle:base::SysUTF16ToNSString(content.manage_text)]; | 841 |
| 773 [GTMUILocalizerAndLayoutTweaker sizeToFitView:[manageButton_ superview]]; | 842 CGFloat requiredWidthForManageButton = 0.0; |
| 843 if (manageButton_) { | |
| 844 [manageButton_ setTitle:base::SysUTF16ToNSString(content.manage_text)]; | |
| 845 [GTMUILocalizerAndLayoutTweaker sizeToFitView:[manageButton_ superview]]; | |
| 846 requiredWidthForManageButton = | |
| 847 NSMaxX([manageButton_ frame]) + kManageDonePadding; | |
| 848 } | |
| 849 | |
| 850 if (!manageButton_ && !doneButton_) | |
| 851 return; | |
| 852 | |
| 853 NSString* doneLabel = base::SysUTF16ToNSString(content.done_button_text); | |
| 854 if ([doneLabel length] > 0u) | |
| 855 [doneButton_ setTitle:doneLabel]; | |
| 774 | 856 |
| 775 CGFloat actualWidth = NSWidth([[[self window] contentView] frame]); | 857 CGFloat actualWidth = NSWidth([[[self window] contentView] frame]); |
| 776 CGFloat requiredWidth = NSMaxX([manageButton_ frame]) + kManageDonePadding + | 858 CGFloat requiredWidth = requiredWidthForManageButton + |
| 777 NSWidth([[doneButton_ superview] frame]) - NSMinX([doneButton_ frame]); | 859 NSWidth([[doneButton_ superview] frame]) - |
| 860 NSMinX([doneButton_ frame]); | |
| 778 if (requiredWidth <= actualWidth || !doneButton_ || !manageButton_) | 861 if (requiredWidth <= actualWidth || !doneButton_ || !manageButton_) |
| 779 return; | 862 return; |
| 780 | 863 |
| 781 // Resize window, autoresizing takes care of the rest. | 864 // Resize window, autoresizing takes care of the rest. |
| 782 NSSize size = NSMakeSize(requiredWidth - actualWidth, 0); | 865 NSSize size = NSMakeSize(requiredWidth - actualWidth, 0); |
| 783 size = [[[self window] contentView] convertSize:size toView:nil]; | 866 size = [[[self window] contentView] convertSize:size toView:nil]; |
| 784 NSRect frame = [[self window] frame]; | 867 NSRect frame = [[self window] frame]; |
| 785 frame.origin.x -= size.width; | 868 frame.origin.x -= size.width; |
| 786 frame.size.width += size.width; | 869 frame.size.width += size.width; |
| 787 [[self window] setFrame:frame display:NO]; | 870 [[self window] setFrame:frame display:NO]; |
| 788 } | 871 } |
| 789 | 872 |
| 790 - (void)awakeFromNib { | 873 - (void)awakeFromNib { |
| 791 [super awakeFromNib]; | 874 [super awakeFromNib]; |
| 792 | 875 |
| 793 ContentSettingSimpleBubbleModel* simple_bubble = | 876 ContentSettingSimpleBubbleModel* simple_bubble = |
| 794 contentSettingBubbleModel_->AsSimpleBubbleModel(); | 877 contentSettingBubbleModel_->AsSimpleBubbleModel(); |
| 795 | 878 |
| 796 [[self bubble] setArrowLocation:info_bubble::kTopTrailing]; | 879 [[self bubble] setArrowLocation:info_bubble::kTopTrailing]; |
| 797 | 880 |
| 798 // Adapt window size to bottom buttons. Do this before all other layouting. | 881 // Adapt window size to bottom buttons. Do this before all other layouting. |
| 799 if ((simple_bubble && !simple_bubble->bubble_content().manage_text.empty()) || | 882 if ((simple_bubble && !simple_bubble->bubble_content().manage_text.empty()) || |
| 800 contentSettingBubbleModel_->AsDownloadsBubbleModel()) | 883 contentSettingBubbleModel_->AsDownloadsBubbleModel() || |
| 884 contentSettingBubbleModel_->AsSubresourceFilterBubbleModel()) | |
|
Robert Sesek
2017/05/02 21:51:47
nit: add braces since the condition is multi-line
shivanisha
2017/05/03 18:10:35
done
| |
| 801 [self initManageDoneButtons]; | 885 [self initManageDoneButtons]; |
| 802 | 886 |
| 803 [self initializeTitle]; | 887 [self initializeTitle]; |
| 804 [self initializeMessage]; | 888 [self initializeMessage]; |
| 889 [self initalizeManageCheckbox]; | |
| 805 | 890 |
| 806 // Note that the per-content-type methods and |initializeRadioGroup| below | 891 // Note that the per-content-type methods and |initializeRadioGroup| below |
| 807 // must be kept in the correct order, as they make interdependent adjustments | 892 // must be kept in the correct order, as they make interdependent adjustments |
| 808 // of the bubble's height. | 893 // of the bubble's height. |
| 809 if (simple_bubble && | 894 if (simple_bubble && |
| 810 simple_bubble->content_type() == CONTENT_SETTINGS_TYPE_PLUGINS) { | 895 simple_bubble->content_type() == CONTENT_SETTINGS_TYPE_PLUGINS) { |
| 811 if (!simple_bubble->bubble_content().custom_link.empty()) | 896 if (!simple_bubble->bubble_content().custom_link.empty()) |
| 812 [self sizeToFitLoadButton]; | 897 [self sizeToFitLoadButton]; |
| 813 | 898 |
| 814 [self initializeBlockedPluginsList]; | 899 [self initializeBlockedPluginsList]; |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 895 | 980 |
| 896 - (IBAction)manageBlocking:(id)sender { | 981 - (IBAction)manageBlocking:(id)sender { |
| 897 contentSettingBubbleModel_->OnManageLinkClicked(); | 982 contentSettingBubbleModel_->OnManageLinkClicked(); |
| 898 } | 983 } |
| 899 | 984 |
| 900 - (IBAction)closeBubble:(id)sender { | 985 - (IBAction)closeBubble:(id)sender { |
| 901 contentSettingBubbleModel_->OnDoneClicked(); | 986 contentSettingBubbleModel_->OnDoneClicked(); |
| 902 [self close]; | 987 [self close]; |
| 903 } | 988 } |
| 904 | 989 |
| 990 - (IBAction)manageCheckboxChecked:(id)sender { | |
| 991 bool is_checked = [sender state] == NSOnState; | |
|
Robert Sesek
2017/05/02 21:51:47
naming: isChecked (use camelCase in ObjC methods)
shivanisha
2017/05/03 18:10:35
done
| |
| 992 contentSettingBubbleModel_->OnManageCheckboxChecked(is_checked); | |
| 993 } | |
| 994 | |
| 905 - (IBAction)mediaMenuChanged:(id)sender { | 995 - (IBAction)mediaMenuChanged:(id)sender { |
| 906 NSPopUpButton* button = static_cast<NSPopUpButton*>(sender); | 996 NSPopUpButton* button = static_cast<NSPopUpButton*>(sender); |
| 907 auto it = mediaMenus_.find(sender); | 997 auto it = mediaMenus_.find(sender); |
| 908 DCHECK(it != mediaMenus_.end()); | 998 DCHECK(it != mediaMenus_.end()); |
| 909 NSInteger index = [[button selectedItem] tag]; | 999 NSInteger index = [[button selectedItem] tag]; |
| 910 | 1000 |
| 911 SetTitleForPopUpButton( | 1001 SetTitleForPopUpButton( |
| 912 button, base::SysUTF16ToNSString(it->second->model->GetLabelAt(index))); | 1002 button, base::SysUTF16ToNSString(it->second->model->GetLabelAt(index))); |
| 913 | 1003 |
| 914 it->second->model->ExecuteCommand(index, 0); | 1004 it->second->model->ExecuteCommand(index, 0); |
| 915 } | 1005 } |
| 916 | 1006 |
| 917 - (content_setting_bubble::MediaMenuPartsMap*)mediaMenus { | 1007 - (content_setting_bubble::MediaMenuPartsMap*)mediaMenus { |
| 918 return &mediaMenus_; | 1008 return &mediaMenus_; |
| 919 } | 1009 } |
| 920 | 1010 |
| 921 - (LocationBarDecoration*)decorationForBubble { | 1011 - (LocationBarDecoration*)decorationForBubble { |
| 922 return decoration_; | 1012 return decoration_; |
| 923 } | 1013 } |
| 924 | 1014 |
| 925 @end // ContentSettingBubbleController | 1015 @end // ContentSettingBubbleController |
| OLD | NEW |