| Index: chrome/browser/infobars/infobar.cc
|
| diff --git a/chrome/browser/infobars/infobar.cc b/chrome/browser/infobars/infobar.cc
|
| deleted file mode 100644
|
| index 15f04c8be5e3438afc11e7c472d3280381b10b6b..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/infobars/infobar.cc
|
| +++ /dev/null
|
| @@ -1,175 +0,0 @@
|
| -// Copyright (c) 2011 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/infobars/infobar.h"
|
| -
|
| -#include <cmath>
|
| -
|
| -#include "base/logging.h"
|
| -#include "build/build_config.h"
|
| -#include "chrome/browser/infobars/infobar_container.h"
|
| -#include "chrome/browser/infobars/infobar_manager.h"
|
| -#include "ui/gfx/animation/slide_animation.h"
|
| -
|
| -InfoBar::InfoBar(scoped_ptr<InfoBarDelegate> delegate)
|
| - : owner_(NULL),
|
| - delegate_(delegate.Pass()),
|
| - container_(NULL),
|
| - animation_(this),
|
| - arrow_height_(0),
|
| - arrow_target_height_(kDefaultArrowTargetHeight),
|
| - arrow_half_width_(0),
|
| - bar_height_(0),
|
| - bar_target_height_(kDefaultBarTargetHeight) {
|
| - DCHECK(delegate_ != NULL);
|
| - animation_.SetTweenType(gfx::Tween::LINEAR);
|
| - delegate_->set_infobar(this);
|
| -}
|
| -
|
| -InfoBar::~InfoBar() {
|
| - DCHECK(!owner_);
|
| -}
|
| -
|
| -// static
|
| -SkColor InfoBar::GetTopColor(InfoBarDelegate::Type infobar_type) {
|
| - static const SkColor kWarningBackgroundColorTop =
|
| - SkColorSetRGB(255, 242, 183); // Yellow
|
| - static const SkColor kPageActionBackgroundColorTop =
|
| - SkColorSetRGB(237, 237, 237); // Gray
|
| - return (infobar_type == InfoBarDelegate::WARNING_TYPE) ?
|
| - kWarningBackgroundColorTop : kPageActionBackgroundColorTop;
|
| -}
|
| -
|
| -// static
|
| -SkColor InfoBar::GetBottomColor(InfoBarDelegate::Type infobar_type) {
|
| - static const SkColor kWarningBackgroundColorBottom =
|
| - SkColorSetRGB(250, 230, 145); // Yellow
|
| - static const SkColor kPageActionBackgroundColorBottom =
|
| - SkColorSetRGB(217, 217, 217); // Gray
|
| - return (infobar_type == InfoBarDelegate::WARNING_TYPE) ?
|
| - kWarningBackgroundColorBottom : kPageActionBackgroundColorBottom;
|
| -}
|
| -
|
| -void InfoBar::SetOwner(InfoBarManager* owner) {
|
| - DCHECK(!owner_);
|
| - owner_ = owner;
|
| - delegate_->StoreActiveEntryUniqueID();
|
| - PlatformSpecificSetOwner();
|
| -}
|
| -
|
| -void InfoBar::Show(bool animate) {
|
| - PlatformSpecificShow(animate);
|
| - if (animate) {
|
| - animation_.Show();
|
| - } else {
|
| - animation_.Reset(1.0);
|
| - RecalculateHeights(true);
|
| - }
|
| -}
|
| -
|
| -void InfoBar::Hide(bool animate) {
|
| - PlatformSpecificHide(animate);
|
| - if (animate) {
|
| - animation_.Hide();
|
| - } else {
|
| - animation_.Reset(0.0);
|
| - // We want to remove ourselves from the container immediately even if we
|
| - // still have an owner, which MaybeDelete() won't do.
|
| - DCHECK(container_);
|
| - container_->RemoveInfoBar(this);
|
| - MaybeDelete(); // Necessary if the infobar was already closing.
|
| - }
|
| -}
|
| -
|
| -void InfoBar::SetArrowTargetHeight(int height) {
|
| - DCHECK_LE(height, kMaximumArrowTargetHeight);
|
| - // Once the closing animation starts, we ignore further requests to change the
|
| - // target height.
|
| - if ((arrow_target_height_ != height) && !animation_.IsClosing()) {
|
| - arrow_target_height_ = height;
|
| - RecalculateHeights(false);
|
| - }
|
| -}
|
| -
|
| -void InfoBar::CloseSoon() {
|
| - owner_ = NULL;
|
| - PlatformSpecificOnCloseSoon();
|
| - MaybeDelete();
|
| -}
|
| -
|
| -void InfoBar::RemoveSelf() {
|
| - if (owner_)
|
| - owner_->RemoveInfoBar(this);
|
| -}
|
| -
|
| -void InfoBar::SetBarTargetHeight(int height) {
|
| - if (bar_target_height_ != height) {
|
| - bar_target_height_ = height;
|
| - RecalculateHeights(false);
|
| - }
|
| -}
|
| -
|
| -void InfoBar::AnimationProgressed(const gfx::Animation* animation) {
|
| - RecalculateHeights(false);
|
| -}
|
| -
|
| -void InfoBar::AnimationEnded(const gfx::Animation* animation) {
|
| - // When the animation ends, we must ensure the container is notified even if
|
| - // the heights haven't changed, lest it never get an "animation finished"
|
| - // notification. (If the browser doesn't get this notification, it will not
|
| - // bother to re-layout the content area for the new infobar size.)
|
| - RecalculateHeights(true);
|
| - MaybeDelete();
|
| -}
|
| -
|
| -void InfoBar::RecalculateHeights(bool force_notify) {
|
| - int old_arrow_height = arrow_height_;
|
| - int old_bar_height = bar_height_;
|
| -
|
| - // Find the desired arrow height/half-width. The arrow area is
|
| - // |arrow_height_| * |arrow_half_width_|. When the bar is opening or closing,
|
| - // scaling each of these with the square root of the animation value causes a
|
| - // linear animation of the area, which matches the perception of the animation
|
| - // of the bar portion.
|
| - double scale_factor = sqrt(animation_.GetCurrentValue());
|
| - arrow_height_ = static_cast<int>(arrow_target_height_ * scale_factor);
|
| - if (animation_.is_animating()) {
|
| - arrow_half_width_ = static_cast<int>(std::min(arrow_target_height_,
|
| - kMaximumArrowTargetHalfWidth) * scale_factor);
|
| - } else {
|
| - // When the infobar is not animating (i.e. fully open), we set the
|
| - // half-width to be proportionally the same distance between its default and
|
| - // maximum values as the height is between its.
|
| - arrow_half_width_ = kDefaultArrowTargetHalfWidth +
|
| - ((kMaximumArrowTargetHalfWidth - kDefaultArrowTargetHalfWidth) *
|
| - ((arrow_height_ - kDefaultArrowTargetHeight) /
|
| - (kMaximumArrowTargetHeight - kDefaultArrowTargetHeight)));
|
| - }
|
| - // Add pixels for the stroke, if the arrow is to be visible at all. Without
|
| - // this, changing the arrow height from 0 to kSeparatorLineHeight would
|
| - // produce no visible effect, because the stroke would paint atop the divider
|
| - // line above the infobar.
|
| - if (arrow_height_)
|
| - arrow_height_ += kSeparatorLineHeight;
|
| -
|
| - bar_height_ = animation_.CurrentValueBetween(0, bar_target_height_);
|
| -
|
| - // Don't re-layout if nothing has changed, e.g. because the animation step was
|
| - // not large enough to actually change the heights by at least a pixel.
|
| - bool heights_differ =
|
| - (old_arrow_height != arrow_height_) || (old_bar_height != bar_height_);
|
| - if (heights_differ)
|
| - PlatformSpecificOnHeightsRecalculated();
|
| -
|
| - if (container_ && (heights_differ || force_notify))
|
| - container_->OnInfoBarStateChanged(animation_.is_animating());
|
| -}
|
| -
|
| -void InfoBar::MaybeDelete() {
|
| - if (!owner_ && (animation_.GetCurrentValue() == 0.0)) {
|
| - if (container_)
|
| - container_->RemoveInfoBar(this);
|
| - delete this;
|
| - }
|
| -}
|
|
|