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

Unified Diff: chrome/browser/ui/cocoa/notifications/balloon_controller.mm

Issue 231213003: notification balloons: Remove views and cocoa implementations of BalloonCollection. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/notifications/balloon_controller.mm
diff --git a/chrome/browser/ui/cocoa/notifications/balloon_controller.mm b/chrome/browser/ui/cocoa/notifications/balloon_controller.mm
deleted file mode 100644
index fb481cd56c46c6c6f368b9015d839f3b500c4ded..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/cocoa/notifications/balloon_controller.mm
+++ /dev/null
@@ -1,224 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome/browser/ui/cocoa/notifications/balloon_controller.h"
-
-#include "base/mac/bundle_locations.h"
-#include "base/mac/mac_util.h"
-#include "base/strings/utf_string_conversions.h"
-#include "chrome/browser/notifications/balloon.h"
-#include "chrome/browser/notifications/desktop_notification_service.h"
-#include "chrome/browser/notifications/desktop_notification_service_factory.h"
-#include "chrome/browser/notifications/notification.h"
-#include "chrome/browser/notifications/notification_options_menu_model.h"
-#include "chrome/browser/profiles/profile.h"
-#import "chrome/browser/ui/cocoa/notifications/balloon_view.h"
-#include "chrome/browser/ui/cocoa/notifications/balloon_view_host_mac.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/web_contents.h"
-#include "grit/generated_resources.h"
-#include "grit/theme_resources.h"
-#import "ui/base/cocoa/hover_image_button.h"
-#import "ui/base/cocoa/menu_controller.h"
-#include "ui/base/l10n/l10n_util.h"
-#include "ui/base/resource/resource_bundle.h"
-
-namespace {
-
-// Margin, in pixels, between the notification frame and the contents
-// of the notification.
-const int kTopMargin = 1;
-const int kBottomMargin = 2;
-const int kLeftMargin = 2;
-const int kRightMargin = 2;
-
-} // namespace
-
-@interface BalloonController (Private)
-- (void)updateTrackingRect;
-@end
-
-@implementation BalloonController
-
-- (id)initWithBalloon:(Balloon*)balloon {
- NSString* nibpath =
- [base::mac::FrameworkBundle() pathForResource:@"Notification"
- ofType:@"nib"];
- if ((self = [super initWithWindowNibPath:nibpath owner:self])) {
- balloon_ = balloon;
- [self initializeHost];
- menuModel_.reset(new NotificationOptionsMenuModel(balloon));
- menuController_.reset([[MenuController alloc] initWithModel:menuModel_.get()
- useWithPopUpButtonCell:NO]);
- }
- return self;
-}
-
-- (void)awakeFromNib {
- DCHECK([self window]);
- DCHECK_EQ(self, [[self window] delegate]);
-
- ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
- [optionsButton_ setDefaultImage:
- rb.GetNativeImageNamed(IDR_BALLOON_WRENCH).ToNSImage()];
- [optionsButton_ setHoverImage:
- rb.GetNativeImageNamed(IDR_BALLOON_WRENCH_H).ToNSImage()];
- [optionsButton_ setPressedImage:
- rb.GetNativeImageNamed(IDR_BALLOON_WRENCH_P).ToNSImage()];
- [[optionsButton_ cell] setHighlightsBy:NSNoCellMask];
-
- NSString* sourceLabelText = l10n_util::GetNSStringF(
- IDS_NOTIFICATION_BALLOON_SOURCE_LABEL,
- balloon_->notification().display_source());
- [originLabel_ setStringValue:sourceLabelText];
-
- // This condition is false in unit tests which have no RVH.
- if (htmlContents_.get()) {
- gfx::NativeView contents = htmlContents_->native_view();
- [contents setFrame:NSMakeRect(kLeftMargin, kTopMargin, 0, 0)];
- [[htmlContainer_ superview] addSubview:contents
- positioned:NSWindowBelow
- relativeTo:nil];
- }
-
- // Use the standard close button for a utility window.
- closeButton_ = [NSWindow standardWindowButton:NSWindowCloseButton
- forStyleMask:NSUtilityWindowMask];
- NSRect frame = [closeButton_ frame];
- [closeButton_ setFrame:NSMakeRect(6, 1, frame.size.width, frame.size.height)];
- [closeButton_ setTarget:self];
- [closeButton_ setAction:@selector(closeButtonPressed:)];
- [shelf_ addSubview:closeButton_];
- [self updateTrackingRect];
-
- // Set the initial position without animating (the balloon should not
- // yet be visible).
- DCHECK(![[self window] isVisible]);
- NSRect balloon_frame = NSMakeRect(balloon_->GetPosition().x(),
- balloon_->GetPosition().y(),
- [self desiredTotalWidth],
- [self desiredTotalHeight]);
- [[self window] setFrame:balloon_frame
- display:NO];
-}
-
-- (void)updateTrackingRect {
- if (closeButtonTrackingTag_)
- [shelf_ removeTrackingRect:closeButtonTrackingTag_];
-
- closeButtonTrackingTag_ = [shelf_ addTrackingRect:[closeButton_ frame]
- owner:self
- userData:nil
- assumeInside:NO];
-}
-
-- (void) mouseEntered:(NSEvent*)event {
- [[closeButton_ cell] setHighlighted:YES];
-}
-
-- (void) mouseExited:(NSEvent*)event {
- [[closeButton_ cell] setHighlighted:NO];
-}
-
-- (void)closeBalloonNow:(bool)byUser {
- if (!balloon_)
- return;
- [self close];
- if (htmlContents_.get())
- htmlContents_->Shutdown();
- if (balloon_)
- balloon_->OnClose(byUser);
- balloon_ = NULL;
-}
-
-- (IBAction)optionsButtonPressed:(id)sender {
- optionMenuIsActive_ = YES;
- [NSMenu popUpContextMenu:[menuController_ menu]
- withEvent:[NSApp currentEvent]
- forView:optionsButton_];
- optionMenuIsActive_ = NO;
- if (delayedClose_)
- [self closeBalloonNow: false]; // always by script.
-}
-
-- (IBAction)permissionRevoked:(id)sender {
- DesktopNotificationService* service =
- DesktopNotificationServiceFactory::GetForProfile(balloon_->profile());
- service->DenyPermission(balloon_->notification().origin_url());
-}
-
-- (IBAction)closeButtonPressed:(id)sender {
- [self closeBalloon:YES];
- [self close];
-}
-
-- (void)close {
- if (closeButtonTrackingTag_)
- [shelf_ removeTrackingRect:closeButtonTrackingTag_];
-
- [super close];
-}
-
-- (void)closeBalloon:(bool)byUser {
- // Keep alive while user is interacting with popup menu.
- // Otherwise the script can close the notification and underlying balloon
- // will be destroyed while user select a menu command.
- if (!byUser && optionMenuIsActive_) {
- delayedClose_ = YES;
- return;
- }
- [self closeBalloonNow: byUser];
-}
-
-- (void)updateContents {
- DCHECK(htmlContents_.get()) << "BalloonView::Update called before Show";
- if (htmlContents_->web_contents()) {
- htmlContents_->web_contents()->GetController().LoadURL(
- balloon_->notification().content_url(), content::Referrer(),
- content::PAGE_TRANSITION_LINK, std::string());
- }
-}
-
-- (void)repositionToBalloon {
- DCHECK(balloon_);
- int x = balloon_->GetPosition().x();
- int y = balloon_->GetPosition().y();
- int w = [self desiredTotalWidth];
- int h = [self desiredTotalHeight];
-
- [[self window] setFrame:NSMakeRect(x, y, w, h)
- display:YES];
- if (htmlContents_.get())
- htmlContents_->UpdateActualSize(balloon_->content_size());
-}
-
-// Returns the total width the view should be to accommodate the balloon.
-- (int)desiredTotalWidth {
- return (balloon_ ? balloon_->content_size().width() : 0) +
- kLeftMargin + kRightMargin;
-}
-
-// Returns the total height the view should be to accommodate the balloon.
-- (int)desiredTotalHeight {
- return (balloon_ ? balloon_->content_size().height() : 0) +
- kTopMargin + kBottomMargin + [shelf_ frame].size.height;
-}
-
-// Returns the BalloonHost {
-- (BalloonViewHost*) getHost {
- return htmlContents_.get();
-}
-
-// Initializes the renderer host showing the HTML contents.
-- (void)initializeHost {
- htmlContents_.reset(new BalloonViewHost(balloon_));
- htmlContents_->Init();
-}
-
-// NSWindowDelegate notification.
-- (void)windowWillClose:(NSNotification*)notif {
- [self autorelease];
-}
-
-@end

Powered by Google App Engine
This is Rietveld 408576698