| Index: chrome/browser/cocoa/content_blocked_bubble_controller.mm
|
| diff --git a/chrome/browser/cocoa/content_blocked_bubble_controller.mm b/chrome/browser/cocoa/content_blocked_bubble_controller.mm
|
| index e18370fdfff2d566fe58e52b0a3d791d8112cd2f..a30b3361c67dcbe45f4c0d3597d39407197fe9d0 100644
|
| --- a/chrome/browser/cocoa/content_blocked_bubble_controller.mm
|
| +++ b/chrome/browser/cocoa/content_blocked_bubble_controller.mm
|
| @@ -6,17 +6,14 @@
|
|
|
| #include "app/l10n_util.h"
|
| #include "base/logging.h"
|
| -#include "base/mac_util.h"
|
| -#include "base/string_util.h"
|
| #include "base/sys_string_conversions.h"
|
| #include "chrome/browser/blocked_popup_container.h"
|
| #import "chrome/browser/cocoa/content_settings_dialog_controller.h"
|
| #import "chrome/browser/cocoa/hyperlink_button_cell.h"
|
| #import "chrome/browser/cocoa/info_bubble_view.h"
|
| +#import "chrome/browser/cocoa/l10n_util.h"
|
| #include "chrome/browser/content_setting_bubble_model.h"
|
| #include "chrome/browser/host_content_settings_map.h"
|
| -#include "chrome/common/notification_service.h"
|
| -#include "chrome/common/notification_type.h"
|
| #include "grit/generated_resources.h"
|
| #include "skia/ext/skia_utils_mac.h"
|
| #import "third_party/GTM/AppKit/GTMUILocalizerAndLayoutTweaker.h"
|
| @@ -56,17 +53,6 @@ const int kGeoHostPadding = 4;
|
| // Minimal padding between "Manage" and "Done" buttons.
|
| const int kManageDonePadding = 8;
|
|
|
| -// Like |ReplaceStringPlaceholders(const string16&, const string16&, size_t*)|,
|
| -// but for a NSString formatString.
|
| -NSString* ReplaceNSStringPlaceholders(NSString* formatString,
|
| - const string16& a,
|
| - size_t* offset) {
|
| - return base::SysUTF16ToNSString(
|
| - ReplaceStringPlaceholders(base::SysNSStringToUTF16(formatString),
|
| - a,
|
| - offset));
|
| -}
|
| -
|
| void SetControlSize(NSControl* control, NSControlSize controlSize) {
|
| CGFloat fontSize = [NSFont systemFontSizeForControlSize:controlSize];
|
| NSCell* cell = [control cell];
|
| @@ -136,20 +122,11 @@ NSTextField* LabelWithFrame(NSString* text, const NSRect& frame) {
|
| nibPaths_requires_an_entry_for_every_setting_type);
|
| const int settingsType = model->content_type();
|
| DCHECK_LT(settingsType, CONTENT_SETTINGS_NUM_TYPES);
|
| - NSString* nibPath =
|
| - [mac_util::MainAppBundle() pathForResource:nibPaths[settingsType]
|
| - ofType:@"nib"];
|
| - if ((self = [super initWithWindowNibPath:nibPath owner:self])) {
|
| - parentWindow_ = parentWindow;
|
| - anchor_ = anchoredAt;
|
| + if ((self = [super initWithWindowNibPath:nibPaths[settingsType]
|
| + parentWindow:parentWindow
|
| + anchoredAt:anchoredAt])) {
|
| contentSettingBubbleModel_.reset(model.release());
|
| -
|
| - // Watch to see if the parent window closes, and if so, close this one.
|
| - NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
|
| - [center addObserver:self
|
| - selector:@selector(parentWindowWillClose:)
|
| - name:NSWindowWillCloseNotification
|
| - object:parentWindow_];
|
| + [self showWindow:nil];
|
| }
|
| return self;
|
| }
|
| @@ -184,7 +161,7 @@ NSTextField* LabelWithFrame(NSString* text, const NSRect& frame) {
|
|
|
| // Copy |host_| into radio group label.
|
| NSCell* radioCell = [allowBlockRadioGroup_ cellWithTag:kAllowTag];
|
| - [radioCell setTitle:ReplaceNSStringPlaceholders(
|
| + [radioCell setTitle:cocoa_l10n_util::ReplaceNSStringPlaceholders(
|
| [radioCell title], UTF8ToUTF16(radioGroup.url.host()), NULL)];
|
|
|
| // Layout radio group labels post-localization.
|
| @@ -218,7 +195,7 @@ NSTextField* LabelWithFrame(NSString* text, const NSRect& frame) {
|
|
|
| // If the link text is too long, clamp it.
|
| [button sizeToFit];
|
| - int maxWidth = NSWidth([bubble_ frame]) - 2 * NSMinX(referenceFrame);
|
| + int maxWidth = NSWidth([[self bubble] frame]) - 2 * NSMinX(referenceFrame);
|
| NSRect buttonFrame = [button frame];
|
| if (NSWidth(buttonFrame) > maxWidth) {
|
| buttonFrame.size.width = maxWidth;
|
| @@ -276,7 +253,7 @@ NSTextField* LabelWithFrame(NSString* text, const NSRect& frame) {
|
| title:base::SysUTF8ToNSString(title)
|
| icon:image
|
| referenceFrame:radioFrame];
|
| - [bubble_ addSubview:button];
|
| + [[self bubble] addSubview:button];
|
| popupLinks_[button] = row;
|
| }
|
| }
|
| @@ -379,11 +356,8 @@ NSTextField* LabelWithFrame(NSString* text, const NSRect& frame) {
|
| }
|
|
|
| - (void)awakeFromNib {
|
| - DCHECK([self window]);
|
| - DCHECK_EQ(self, [[self window] delegate]);
|
| -
|
| - [bubble_ setBubbleType:info_bubble::kWhiteInfoBubble];
|
| - [bubble_ setArrowLocation:info_bubble::kTopRight];
|
| + [[self bubble] setBubbleType:info_bubble::kWhiteInfoBubble];
|
| + [[self bubble] setArrowLocation:info_bubble::kTopRight];
|
|
|
| // Adapt window size to bottom buttons. Do this before all other layouting.
|
| [self sizeToFitManageDoneButtons];
|
| @@ -400,73 +374,6 @@ NSTextField* LabelWithFrame(NSString* text, const NSRect& frame) {
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| -// Bubble-management related stuff
|
| -
|
| -// TODO(thakis): All that junk below should be in some superclass that all the
|
| -// bubble controllers (bookmark bubble, extension installed bubble, page/browser
|
| -// action bubble, content blocked bubble) derive from -- http://crbug.com/36366
|
| -
|
| -- (void)dealloc {
|
| - [[NSNotificationCenter defaultCenter] removeObserver:self];
|
| - [super dealloc];
|
| -}
|
| -
|
| -- (void)parentWindowWillClose:(NSNotification*)notification {
|
| - [self close];
|
| -}
|
| -
|
| -- (void)windowWillClose:(NSNotification*)notification {
|
| - // We caught a close so we don't need to watch for the parent closing.
|
| - [[NSNotificationCenter defaultCenter] removeObserver:self];
|
| - [self autorelease];
|
| -}
|
| -
|
| -// We want this to be a child of a browser window. addChildWindow:
|
| -// (called from this function) will bring the window on-screen;
|
| -// unfortunately, [NSWindowController showWindow:] will also bring it
|
| -// on-screen (but will cause unexpected changes to the window's
|
| -// position). We cannot have an addChildWindow: and a subsequent
|
| -// showWindow:. Thus, we have our own version.
|
| -- (void)showWindow:(id)sender {
|
| - NSWindow* window = [self window]; // completes nib load
|
| -
|
| - NSPoint origin = anchor_;
|
| - NSSize offsets = NSMakeSize(info_bubble::kBubbleArrowXOffset +
|
| - info_bubble::kBubbleArrowWidth / 2.0, 0);
|
| - offsets = [[parentWindow_ contentView] convertSize:offsets toView:nil];
|
| - origin.x -= NSWidth([window frame]) - offsets.width;
|
| - origin.y -= NSHeight([window frame]);
|
| - [window setFrameOrigin:origin];
|
| - [parentWindow_ addChildWindow:window ordered:NSWindowAbove];
|
| - [window makeKeyAndOrderFront:self];
|
| -}
|
| -
|
| -- (void)close {
|
| - [parentWindow_ removeChildWindow:[self window]];
|
| - [super close];
|
| -}
|
| -
|
| -// The controller is the delegate of the window so it receives did resign key
|
| -// notifications. When key is resigned mirror Windows behavior and close the
|
| -// window.
|
| -- (void)windowDidResignKey:(NSNotification*)notification {
|
| - NSWindow* window = [self window];
|
| - DCHECK_EQ([notification object], window);
|
| - if ([window isVisible]) {
|
| - // If the window isn't visible, it is already closed, and this notification
|
| - // has been sent as part of the closing operation, so no need to close.
|
| - [self close];
|
| - }
|
| -}
|
| -
|
| -// By implementing this, ESC causes the window to go away.
|
| -- (IBAction)cancel:(id)sender {
|
| - // This is not a "real" cancel as potential changes to the radio group are not
|
| - // undone. That's ok.
|
| - [self close];
|
| -}
|
| -
|
| -///////////////////////////////////////////////////////////////////////////////
|
| // Actual application logic
|
|
|
| - (IBAction)allowBlockToggled:(id)sender {
|
|
|