Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(333)

Side by Side Diff: chrome/browser/extensions/image_loading_tracker.h

Issue 11045030: Give Chrome Web Store app an icon in its manifest file. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef CHROME_BROWSER_EXTENSIONS_IMAGE_LOADING_TRACKER_H_ 5 #ifndef CHROME_BROWSER_EXTENSIONS_IMAGE_LOADING_TRACKER_H_
6 #define CHROME_BROWSER_EXTENSIONS_IMAGE_LOADING_TRACKER_H_ 6 #define CHROME_BROWSER_EXTENSIONS_IMAGE_LOADING_TRACKER_H_
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 ResizeCondition resize_method; 89 ResizeCondition resize_method;
90 90
91 // When |resize_method| is ALWAYS_RESIZE or when the loaded image is larger 91 // When |resize_method| is ALWAYS_RESIZE or when the loaded image is larger
92 // than |desired_size| it will be resized to these dimensions. 92 // than |desired_size| it will be resized to these dimensions.
93 gfx::Size desired_size; 93 gfx::Size desired_size;
94 94
95 // |scale_factor| is used to construct the loaded gfx::ImageSkia. 95 // |scale_factor| is used to construct the loaded gfx::ImageSkia.
96 ui::ScaleFactor scale_factor; 96 ui::ScaleFactor scale_factor;
97 }; 97 };
98 98
99 // Returns true if given extension id is a special component extension that
100 // has its resource bundled.
101 // TODO(xiyuan): Move this out of this class.
102 static bool IsSpecialBundledExtensionId(const std::string& extension_id);
103
104 explicit ImageLoadingTracker(Observer* observer); 99 explicit ImageLoadingTracker(Observer* observer);
105 virtual ~ImageLoadingTracker(); 100 virtual ~ImageLoadingTracker();
106 101
107 // Specify image resource to load. If the loaded image is larger than 102 // Specify image resource to load. If the loaded image is larger than
108 // |max_size| it will be resized to those dimensions. IMPORTANT NOTE: this 103 // |max_size| it will be resized to those dimensions. IMPORTANT NOTE: this
109 // function may call back your observer synchronously (ie before it returns) 104 // function may call back your observer synchronously (ie before it returns)
110 // if the image was found in the cache. 105 // if the image was found in the cache.
111 // Note this method loads a raw bitmap from the resource. All sizes given are 106 // Note this method loads a raw bitmap from the resource. All sizes given are
112 // assumed to be in pixels. 107 // assumed to be in pixels.
113 void LoadImage(const extensions::Extension* extension, 108 void LoadImage(const extensions::Extension* extension,
114 const ExtensionResource& resource, 109 const ExtensionResource& resource,
115 const gfx::Size& max_size, 110 const gfx::Size& max_size,
116 CacheParam cache); 111 CacheParam cache);
117 112
118 // Same as LoadImage() above except it loads multiple images from the same 113 // Same as LoadImage() above except it loads multiple images from the same
119 // extension. This is used to load multiple resolutions of the same image 114 // extension. This is used to load multiple resolutions of the same image
120 // type. 115 // type.
121 void LoadImages(const extensions::Extension* extension, 116 void LoadImages(const extensions::Extension* extension,
122 const std::vector<ImageRepresentation>& info_list, 117 const std::vector<ImageRepresentation>& info_list,
123 CacheParam cache); 118 CacheParam cache);
124 119
125 // Returns the ID used for the next image that is loaded. That is, the return 120 // Returns the ID used for the next image that is loaded. That is, the return
126 // value from this method corresponds to the int that is passed to 121 // value from this method corresponds to the int that is passed to
127 // OnImageLoaded() the next time LoadImage() is invoked. 122 // OnImageLoaded() the next time LoadImage() is invoked.
128 int next_id() const { return next_id_; } 123 int next_id() const { return next_id_; }
129 124
125 // Checks whether image is a component extension resource. Returns false
126 // if a given |resource| does not have a corresponding image in bundled
127 // resources. Otherwise fills |resource_id|.
128 static bool IsComponentExtensionResource(
129 const extensions::Extension* extension,
130 const FilePath& resource_path,
131 int* resource_id);
132
130 private: 133 private:
131 // Information for pending resource load operation for one or more image 134 // Information for pending resource load operation for one or more image
132 // representations. 135 // representations.
133 struct PendingLoadInfo { 136 struct PendingLoadInfo {
134 PendingLoadInfo(); 137 PendingLoadInfo();
135 ~PendingLoadInfo(); 138 ~PendingLoadInfo();
136 139
137 const extensions::Extension* extension; 140 const extensions::Extension* extension;
138 // This is cached separate from |extension| in case the extension is 141 // This is cached separate from |extension| in case the extension is
139 // unloaded. 142 // unloaded.
140 std::string extension_id; 143 std::string extension_id;
141 CacheParam cache; 144 CacheParam cache;
142 size_t pending_count; 145 size_t pending_count;
143 gfx::ImageSkia image_skia; 146 gfx::ImageSkia image_skia;
144 }; 147 };
145 148
146 // Maps an integer identifying a load request to a PendingLoadInfo. 149 // Maps an integer identifying a load request to a PendingLoadInfo.
147 typedef std::map<int, PendingLoadInfo> LoadMap; 150 typedef std::map<int, PendingLoadInfo> LoadMap;
148 151
149 class ImageLoader; 152 class ImageLoader;
150 153
151 // Called on the calling thread when the bitmap finishes loading. 154 // Called on the calling thread when the bitmap finishes loading.
152 // |bitmap| may be null if the image file failed to decode. 155 // |bitmap| may be null if the image file failed to decode.
153 void OnBitmapLoaded(const SkBitmap* bitmap, 156 void OnBitmapLoaded(const SkBitmap* bitmap,
154 const ImageRepresentation& image_info, 157 const ImageRepresentation& image_info,
155 const gfx::Size& original_size, 158 const gfx::Size& original_size,
156 int id, 159 int id,
157 bool should_cache); 160 bool should_cache);
158 161
159 // Checks whether image is a component extension resource. Returns false
160 // if a given |resource| does not have a corresponding image in bundled
161 // resources. Otherwise fills |resource_id|.
162 bool IsComponentExtensionResource(const extensions::Extension* extension,
163 const ExtensionResource& resource,
164 int& resource_id) const;
165
166 // content::NotificationObserver method. If an extension is uninstalled while 162 // content::NotificationObserver method. If an extension is uninstalled while
167 // we're waiting for the image we remove the entry from load_map_. 163 // we're waiting for the image we remove the entry from load_map_.
168 virtual void Observe(int type, 164 virtual void Observe(int type,
169 const content::NotificationSource& source, 165 const content::NotificationSource& source,
170 const content::NotificationDetails& details) OVERRIDE; 166 const content::NotificationDetails& details) OVERRIDE;
171 167
172 // The view that is waiting for the image to load. 168 // The view that is waiting for the image to load.
173 Observer* observer_; 169 Observer* observer_;
174 170
175 // ID to use for next image requested. This is an ever increasing integer. 171 // ID to use for next image requested. This is an ever increasing integer.
176 int next_id_; 172 int next_id_;
177 173
178 // The object responsible for loading the image on the File thread. 174 // The object responsible for loading the image on the File thread.
179 scoped_refptr<ImageLoader> loader_; 175 scoped_refptr<ImageLoader> loader_;
180 176
181 // Information for each LoadImage request is cached here. The integer 177 // Information for each LoadImage request is cached here. The integer
182 // identifies the id assigned to the request. 178 // identifies the id assigned to the request.
183 LoadMap load_map_; 179 LoadMap load_map_;
184 180
185 content::NotificationRegistrar registrar_; 181 content::NotificationRegistrar registrar_;
186 182
187 FRIEND_TEST_ALL_PREFIXES(ImageLoadingTrackerTest,
188 IsComponentExtensionResource);
189
190 DISALLOW_COPY_AND_ASSIGN(ImageLoadingTracker); 183 DISALLOW_COPY_AND_ASSIGN(ImageLoadingTracker);
191 }; 184 };
192 185
193 #endif // CHROME_BROWSER_EXTENSIONS_IMAGE_LOADING_TRACKER_H_ 186 #endif // CHROME_BROWSER_EXTENSIONS_IMAGE_LOADING_TRACKER_H_
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_protocols.cc ('k') | chrome/browser/extensions/image_loading_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698