| // Copyright (c) 2010 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/status_icons/status_tray.h" |
| |
| #include <algorithm> |
| |
| #include "base/stl_util-inl.h" |
| #include "chrome/browser/status_icons/status_icon.h" |
| |
| StatusTray::StatusTray() { |
| } |
| |
| StatusTray::~StatusTray() { |
| RemoveAllIcons(); |
| } |
| |
| void StatusTray::RemoveAllIcons() { |
| // Walk any active status icons and delete them. |
| STLDeleteContainerPointers(status_icons_.begin(), status_icons_.end()); |
| status_icons_.clear(); |
| } |
| |
| StatusIcon* StatusTray::CreateStatusIcon() { |
| StatusIcon* icon = CreatePlatformStatusIcon(); |
| if (icon) |
| status_icons_.push_back(icon); |
| return icon; |
| } |
| |
| void StatusTray::RemoveStatusIcon(StatusIcon* icon) { |
| StatusIconList::iterator iter = std::find( |
| status_icons_.begin(), status_icons_.end(), icon); |
| if (iter != status_icons_.end()) { |
| // Free the StatusIcon from the list. |
| delete *iter; |
| status_icons_.erase(iter); |
| } |
| } |