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

Unified Diff: chrome/browser/ui/cocoa/tabs/media_indicator_view.mm

Issue 688523002: [Cocoa] Tab audio mute control, behind a switch (off by default). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Prevent TabStripController from unconditionally causing creation of MediaIndicatorButton. Created 6 years, 2 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/tabs/media_indicator_view.mm
diff --git a/chrome/browser/ui/cocoa/tabs/media_indicator_view.mm b/chrome/browser/ui/cocoa/tabs/media_indicator_view.mm
deleted file mode 100644
index e3e71cdbcb1d09675e34b21602bb938ffe22a097..0000000000000000000000000000000000000000
--- a/chrome/browser/ui/cocoa/tabs/media_indicator_view.mm
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright 2013 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.
-
-#import "chrome/browser/ui/cocoa/tabs/media_indicator_view.h"
-
-#include "ui/gfx/animation/animation.h"
-#include "ui/gfx/animation/animation_delegate.h"
-#include "ui/gfx/image/image.h"
-
-class MediaIndicatorViewAnimationDelegate : public gfx::AnimationDelegate {
- public:
- MediaIndicatorViewAnimationDelegate(NSView* view,
- TabMediaState* mediaState,
- TabMediaState* animatingMediaState)
- : view_(view), mediaState_(mediaState),
- animatingMediaState_(animatingMediaState),
- doneCallbackObject_(nil), doneCallbackSelector_(nil) {}
- ~MediaIndicatorViewAnimationDelegate() override {}
-
- void SetAnimationDoneCallback(id anObject, SEL selector) {
- doneCallbackObject_ = anObject;
- doneCallbackSelector_ = selector;
- }
-
- void AnimationEnded(const gfx::Animation* animation) override {
- *animatingMediaState_ = *mediaState_;
- [view_ setNeedsDisplay:YES];
- [doneCallbackObject_ performSelector:doneCallbackSelector_];
- }
- void AnimationProgressed(const gfx::Animation* animation) override {
- [view_ setNeedsDisplay:YES];
- }
- void AnimationCanceled(const gfx::Animation* animation) override {
- AnimationEnded(animation);
- }
-
- private:
- NSView* const view_;
- TabMediaState* const mediaState_;
- TabMediaState* const animatingMediaState_;
-
- id doneCallbackObject_;
- SEL doneCallbackSelector_;
-};
-
-@implementation MediaIndicatorView
-
-@synthesize mediaState = mediaState_;
-@synthesize animatingMediaState = animatingMediaState_;
-
-- (id)init {
- if ((self = [super initWithFrame:NSZeroRect])) {
- mediaState_ = animatingMediaState_ = TAB_MEDIA_STATE_NONE;
- delegate_.reset(new MediaIndicatorViewAnimationDelegate(
- self, &mediaState_, &animatingMediaState_));
- }
- return self;
-}
-
-- (void)updateIndicator:(TabMediaState)mediaState {
- if (mediaState == mediaState_)
- return;
-
- mediaState_ = mediaState;
- animation_.reset();
-
- // Prepare this view if the new TabMediaState is an active one.
- if (mediaState_ != TAB_MEDIA_STATE_NONE) {
- animatingMediaState_ = mediaState_;
- NSImage* const image =
- chrome::GetTabMediaIndicatorImage(mediaState_).ToNSImage();
- NSRect frame = [self frame];
- frame.size = [image size];
- [self setFrame:frame];
- [self setImage:image];
- }
-
- // If the animation delegate is missing, that means animations were disabled
- // for testing; so, go directly to animating completion state.
- if (!delegate_) {
- animatingMediaState_ = mediaState_;
- return;
- }
-
- animation_ = chrome::CreateTabMediaIndicatorFadeAnimation(mediaState_);
- animation_->set_delegate(delegate_.get());
- animation_->Start();
-}
-
-- (void)setAnimationDoneCallbackObject:(id)anObject withSelector:(SEL)selector {
- if (delegate_)
- delegate_->SetAnimationDoneCallback(anObject, selector);
-}
-
-- (void)drawRect:(NSRect)rect {
- if (!animation_)
- return;
-
- double opaqueness = animation_->GetCurrentValue();
- if (mediaState_ == TAB_MEDIA_STATE_NONE)
- opaqueness = 1.0 - opaqueness; // Fading out, not in.
-
- [[self image] drawInRect:[self bounds]
- fromRect:NSZeroRect
- operation:NSCompositeSourceOver
- fraction:opaqueness];
-}
-
-- (void)disableAnimations {
- delegate_.reset();
-}
-
-@end

Powered by Google App Engine
This is Rietveld 408576698