Prevent chrome://net-internals/#export from flickering
[chromium-blink-merge.git] / chrome / browser / extensions / app_icon_loader_impl.h
blob4ed16357a24addf5512fd707f34c7160011d3b03
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_
8 #include <map>
9 #include <string>
11 #include "chrome/browser/extensions/app_icon_loader.h"
12 #include "extensions/browser/extension_icon_image.h"
14 class Profile;
16 namespace extensions {
17 class Extension;
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 {
23 public:
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;
36 private:
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);
42 Profile* profile_;
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_;
50 const int icon_size_;
52 DISALLOW_COPY_AND_ASSIGN(AppIconLoaderImpl);
55 } // namespace extensions
57 #endif // CHROME_BROWSER_EXTENSIONS_APP_ICON_LOADER_IMPL_H_