Index: chrome/browser/infobars/infobar.h |
diff --git a/chrome/browser/infobars/infobar.h b/chrome/browser/infobars/infobar.h |
deleted file mode 100644 |
index 86d2b596c613b4c7203db292dfd18addb62800f6..0000000000000000000000000000000000000000 |
--- a/chrome/browser/infobars/infobar.h |
+++ /dev/null |
@@ -1,149 +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. |
- |
-#ifndef CHROME_BROWSER_INFOBARS_INFOBAR_H_ |
-#define CHROME_BROWSER_INFOBARS_INFOBAR_H_ |
- |
-#include <utility> |
- |
-#include "base/memory/scoped_ptr.h" |
-#include "chrome/browser/infobars/infobar_delegate.h" |
-#include "third_party/skia/include/core/SkColor.h" |
-#include "ui/gfx/animation/animation_delegate.h" |
-#include "ui/gfx/animation/slide_animation.h" |
-#include "ui/gfx/size.h" |
- |
-class InfoBarContainer; |
-class InfoBarManager; |
- |
-// InfoBar is a cross-platform base class for an infobar "view" (in the MVC |
-// sense), which owns a corresponding InfoBarDelegate "model". Typically, |
-// a caller will call XYZInfoBarDelegate::Create() and pass in the |
-// InfoBarManager for the relevant tab. This will create an XYZInfoBarDelegate, |
-// create a platform-specific subclass of InfoBar to own it, and then call |
-// InfoBarManager::AddInfoBar() to give it ownership of the infobar. |
-// During its life, the InfoBar may be shown and hidden as the owning tab is |
-// switched between the foreground and background. Eventually, InfoBarManager |
-// will instruct the InfoBar to close itself. At this point, the InfoBar will |
-// optionally animate closed; once it's no longer visible, it deletes itself, |
-// destroying the InfoBarDelegate in the process. |
-// |
-// Thus, InfoBarDelegate and InfoBar implementations can assume they share |
-// lifetimes, and not NULL-check each other; but if one needs to reach back into |
-// the owning InfoBarManager, it must check whether that's still possible. |
-class InfoBar : public gfx::AnimationDelegate { |
- public: |
- // These are the types passed as Details for infobar-related notifications. |
- typedef InfoBar AddedDetails; |
- typedef std::pair<InfoBar*, bool> RemovedDetails; |
- typedef std::pair<InfoBar*, InfoBar*> ReplacedDetails; |
- |
- // Platforms must define these. |
- static const int kDefaultBarTargetHeight; |
- static const int kSeparatorLineHeight; |
- static const int kDefaultArrowTargetHeight; |
- static const int kMaximumArrowTargetHeight; |
- // The half-width (see comments on |arrow_half_width_| below) scales to its |
- // default and maximum values proportionally to how the height scales to its. |
- static const int kDefaultArrowTargetHalfWidth; |
- static const int kMaximumArrowTargetHalfWidth; |
- |
- explicit InfoBar(scoped_ptr<InfoBarDelegate> delegate); |
- virtual ~InfoBar(); |
- |
- static SkColor GetTopColor(InfoBarDelegate::Type infobar_type); |
- static SkColor GetBottomColor(InfoBarDelegate::Type infobar_type); |
- |
- InfoBarManager* owner() { return owner_; } |
- InfoBarDelegate* delegate() { return delegate_.get(); } |
- const InfoBarDelegate* delegate() const { return delegate_.get(); } |
- void set_container(InfoBarContainer* container) { container_ = container; } |
- |
- // Sets |owner_|. This also calls StoreActiveEntryUniqueID() on |delegate_|. |
- // This must only be called once as there's no way to extract an infobar from |
- // its owner without deleting it, for reparenting in another tab. |
- void SetOwner(InfoBarManager* owner); |
- |
- // Makes the infobar visible. If |animate| is true, the infobar is then |
- // animated to full size. |
- void Show(bool animate); |
- |
- // Makes the infobar hidden. If |animate| is false, the infobar is |
- // immediately removed from the container, and, if now unowned, deleted. If |
- // |animate| is true, the infobar is animated to zero size, ultimately |
- // triggering a call to AnimationEnded(). |
- void Hide(bool animate); |
- |
- // Changes the target height of the arrow portion of the infobar. This has no |
- // effect once the infobar is animating closed. |
- void SetArrowTargetHeight(int height); |
- |
- // Notifies the infobar that it is no longer owned and should delete itself |
- // once it is invisible. |
- void CloseSoon(); |
- |
- // Forwards a close request to our owner. This is a no-op if we're already |
- // unowned. |
- void RemoveSelf(); |
- |
- // Changes the target height of the main ("bar") portion of the infobar. |
- void SetBarTargetHeight(int height); |
- |
- const gfx::SlideAnimation& animation() const { return animation_; } |
- int arrow_height() const { return arrow_height_; } |
- int arrow_target_height() const { return arrow_target_height_; } |
- int arrow_half_width() const { return arrow_half_width_; } |
- int total_height() const { return arrow_height_ + bar_height_; } |
- |
- protected: |
- // gfx::AnimationDelegate: |
- virtual void AnimationProgressed(const gfx::Animation* animation) OVERRIDE; |
- |
- const InfoBarContainer* container() const { return container_; } |
- InfoBarContainer* container() { return container_; } |
- gfx::SlideAnimation* animation() { return &animation_; } |
- int bar_height() const { return bar_height_; } |
- int bar_target_height() const { return bar_target_height_; } |
- |
- // Platforms may optionally override these if they need to do work during |
- // processing of the given calls. |
- virtual void PlatformSpecificSetOwner() {} |
- virtual void PlatformSpecificShow(bool animate) {} |
- virtual void PlatformSpecificHide(bool animate) {} |
- virtual void PlatformSpecificOnCloseSoon() {} |
- virtual void PlatformSpecificOnHeightsRecalculated() {} |
- |
- private: |
- // gfx::AnimationDelegate: |
- virtual void AnimationEnded(const gfx::Animation* animation) OVERRIDE; |
- |
- // Finds the new desired arrow and bar heights, and if they differ from the |
- // current ones, calls PlatformSpecificOnHeightRecalculated(). Informs our |
- // container our state has changed if either the heights have changed or |
- // |force_notify| is set. |
- void RecalculateHeights(bool force_notify); |
- |
- // Checks whether the infobar is unowned and done with all animations. If so, |
- // notifies the container that it should remove this infobar, and deletes |
- // itself. |
- void MaybeDelete(); |
- |
- InfoBarManager* owner_; |
- scoped_ptr<InfoBarDelegate> delegate_; |
- InfoBarContainer* container_; |
- gfx::SlideAnimation animation_; |
- |
- // The current and target heights of the arrow and bar portions, and half the |
- // current arrow width. (It's easier to work in half-widths as we draw the |
- // arrow as two halves on either side of a center point.) |
- int arrow_height_; // Includes both fill and top stroke. |
- int arrow_target_height_; |
- int arrow_half_width_; // Includes only fill. |
- int bar_height_; // Includes both fill and bottom separator. |
- int bar_target_height_; |
- |
- DISALLOW_COPY_AND_ASSIGN(InfoBar); |
-}; |
- |
-#endif // CHROME_BROWSER_INFOBARS_INFOBAR_H_ |