Index: chrome/browser/web_app_icon_manager.cc |
=================================================================== |
--- chrome/browser/web_app_icon_manager.cc (revision 9030) |
+++ chrome/browser/web_app_icon_manager.cc (working copy) |
@@ -1,115 +0,0 @@ |
-// Copyright (c) 2006-2008 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/web_app_icon_manager.h" |
- |
-#include "chrome/app/chrome_dll_resource.h" |
-#include "chrome/app/theme/theme_resources.h" |
-#include "chrome/browser/tab_contents/web_contents.h" |
-#include "chrome/common/gfx/icon_util.h" |
-#include "skia/include/SkBitmap.h" |
- |
-// Returns the default icon for the window. |
-static HICON GetDefaultIcon() { |
- HMODULE chrome_dll = GetModuleHandle(L"chrome.dll"); |
- return ::LoadIcon(chrome_dll, MAKEINTRESOURCE(IDR_MAINFRAME)); |
-} |
- |
-// Updates the icon of the window from the specified SkBitmap. If the image |
-// is empty, the default icon is used. If icon is non-null it is updated to |
-// reflect the new icon (unless the default is used). |
-static void UpdateIcon(HWND hwnd, |
- const SkBitmap& image, |
- int icon_type, |
- HICON* icon) { |
- if (icon) { |
- if (*icon) |
- DestroyIcon(*icon); |
- *icon = NULL; |
- } |
- |
- HICON icon_to_set; |
- if (image.width() > 0) { |
- icon_to_set = IconUtil::CreateHICONFromSkBitmap(image); |
- if (icon) |
- *icon = icon_to_set; |
- } else { |
- icon_to_set = GetDefaultIcon(); |
- } |
- ::SendMessage(hwnd, WM_SETICON, icon_type, |
- reinterpret_cast<LPARAM>(icon_to_set)); |
-} |
- |
-WebAppIconManager::WebAppIconManager(HWND parent) |
- : hwnd_(parent), small_icon_(NULL), big_icon_(NULL), enabled_(true) { |
-} |
- |
-WebAppIconManager::~WebAppIconManager() { |
- if (small_icon_) |
- DestroyIcon(small_icon_); |
- |
- if (big_icon_) |
- DestroyIcon(big_icon_); |
- |
- if (app_.get()) |
- app_->RemoveObserver(this); |
-} |
- |
-void WebAppIconManager::SetContents(TabContents* contents) { |
- WebApp* new_app = NULL; |
- if (contents && contents->AsWebContents()) |
- new_app = contents->AsWebContents()->web_app(); |
- |
- if (new_app == app_.get()) |
- return; |
- |
- if (app_.get()) |
- app_->RemoveObserver(this); |
- app_ = new_app; |
- if (app_.get()) { |
- app_->AddObserver(this); |
- UpdateIconsFromApp(); |
- } else if (enabled_) { |
- UpdateIcon(hwnd_, SkBitmap(), ICON_SMALL, NULL); |
- UpdateIcon(hwnd_, SkBitmap(), ICON_BIG, NULL); |
- } |
-} |
- |
-void WebAppIconManager::SetUpdatesEnabled(bool enabled) { |
- if (enabled == enabled_) |
- return; |
- |
- enabled_ = enabled; |
- if (enabled_) |
- UpdateIconsFromApp(); |
-} |
- |
-void WebAppIconManager::WebAppImagesChanged(WebApp* web_app) { |
- UpdateIconsFromApp(); |
-} |
- |
-void WebAppIconManager::UpdateIconsFromApp() { |
- if (!enabled_) |
- return; |
- |
- SkBitmap small_image; |
- SkBitmap big_image; |
- if (app_.get() && !app_->GetImages().empty()) { |
- const WebApp::Images& images = app_->GetImages(); |
- WebApp::Images::const_iterator smallest = images.begin(); |
- WebApp::Images::const_iterator biggest = images.begin(); |
- for (WebApp::Images::const_iterator i = images.begin() + 1; |
- i != images.end(); ++i) { |
- if (i->width() > biggest->width()) |
- biggest = i; |
- else if (i->width() > 0 && i->width() < smallest->width()) |
- smallest = i; |
- } |
- small_image = *smallest; |
- big_image = *biggest; |
- } |
- UpdateIcon(hwnd_, small_image, ICON_SMALL, &small_icon_); |
- UpdateIcon(hwnd_, big_image, ICON_BIG, &big_icon_); |
-} |
- |