1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_EXTENSIONS_APP_ICON_LOADER_IMPL_H_
6 #define CHROME_BROWSER_EXTENSIONS_APP_ICON_LOADER_IMPL_H_
11 #include "chrome/browser/extensions/app_icon_loader.h"
12 #include "extensions/browser/extension_icon_image.h"
16 namespace extensions
{
19 // Default implementation of ash::AppIconLoader that interacts with the
20 // ExtensionService and ImageLoader to load images.
21 class AppIconLoaderImpl
: public AppIconLoader
,
22 public extensions::IconImage::Observer
{
24 AppIconLoaderImpl(Profile
* profile
, int icon_size
,
25 AppIconLoader::Delegate
* delegate
);
26 ~AppIconLoaderImpl() override
;
28 // AppIconLoader overrides:
29 void FetchImage(const std::string
& id
) override
;
30 void ClearImage(const std::string
& id
) override
;
31 void UpdateImage(const std::string
& id
) override
;
33 // extensions::IconImage::Observer overrides:
34 void OnExtensionIconImageChanged(extensions::IconImage
* image
) override
;
37 typedef std::map
<extensions::IconImage
*, std::string
> ImageToExtensionIDMap
;
39 // Builds image for given |id| and |icon|.
40 void BuildImage(const std::string
& id
, const gfx::ImageSkia
& icon
);
44 // The delegate object which receives the icon images. No ownership.
45 AppIconLoader::Delegate
* delegate_
;
47 // Maps from IconImage pointer to the extension id.
48 ImageToExtensionIDMap map_
;
52 DISALLOW_COPY_AND_ASSIGN(AppIconLoaderImpl
);
55 } // namespace extensions
57 #endif // CHROME_BROWSER_EXTENSIONS_APP_ICON_LOADER_IMPL_H_