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

Side by Side Diff: chrome/browser/icon_manager.cc

Issue 8068013: Add interface to CancelableRequest that allows use of base::Callback<>. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address brett's comments. Created 9 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
« no previous file with comments | « chrome/browser/icon_manager.h ('k') | chrome/browser/ui/cocoa/download/download_item_mac.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #include "chrome/browser/icon_manager.h" 5 #include "chrome/browser/icon_manager.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "third_party/skia/include/core/SkBitmap.h" 10 #include "third_party/skia/include/core/SkBitmap.h"
(...skipping 19 matching lines...) Expand all
30 if (it != icon_cache_.end()) 30 if (it != icon_cache_.end())
31 return it->second; 31 return it->second;
32 32
33 return NULL; 33 return NULL;
34 } 34 }
35 35
36 IconManager::Handle IconManager::LoadIcon( 36 IconManager::Handle IconManager::LoadIcon(
37 const FilePath& file_name, 37 const FilePath& file_name,
38 IconLoader::IconSize size, 38 IconLoader::IconSize size,
39 CancelableRequestConsumerBase* consumer, 39 CancelableRequestConsumerBase* consumer,
40 IconRequestCallback* callback) { 40 const IconRequestCallback& callback) {
41 IconGroupID group = GetGroupIDFromFilepath(file_name); 41 IconGroupID group = GetGroupIDFromFilepath(file_name);
42 IconRequest* request = new IconRequest(callback); 42 IconRequest* request = new IconRequest(callback);
43 AddRequest(request, consumer); 43 AddRequest(request, consumer);
44 44
45 IconLoader* loader = new IconLoader(group, size, this); 45 IconLoader* loader = new IconLoader(group, size, this);
46 loader->AddRef(); 46 loader->AddRef();
47 loader->Start(); 47 loader->Start();
48 ClientRequest client_request = { request, group, size }; 48 ClientRequest client_request = { request, group, size };
49 requests_[loader] = client_request; 49 requests_[loader] = client_request;
50 return request->handle(); 50 return request->handle();
(...skipping 25 matching lines...) Expand all
76 if (it != icon_cache_.end() && result && it->second) { 76 if (it != icon_cache_.end() && result && it->second) {
77 it->second->SwapRepresentations(result); 77 it->second->SwapRepresentations(result);
78 delete result; 78 delete result;
79 result = it->second; 79 result = it->second;
80 } else { 80 } else {
81 icon_cache_[key] = result; 81 icon_cache_[key] = result;
82 } 82 }
83 83
84 // Inform our client that the request has completed. 84 // Inform our client that the request has completed.
85 IconRequest* icon_request = client_request.request; 85 IconRequest* icon_request = client_request.request;
86 icon_request->ForwardResult(IconRequest::TupleType(icon_request->handle(), 86 icon_request->ForwardResult(icon_request->handle(), result);
87 result));
88 requests_.erase(rit); 87 requests_.erase(rit);
89 88
90 return true; // Indicates we took ownership of result. 89 return true; // Indicates we took ownership of result.
91 } 90 }
92 91
93 IconManager::CacheKey::CacheKey(const IconGroupID& group, 92 IconManager::CacheKey::CacheKey(const IconGroupID& group,
94 IconLoader::IconSize size) 93 IconLoader::IconSize size)
95 : group(group), 94 : group(group),
96 size(size) { 95 size(size) {
97 } 96 }
98 97
99 bool IconManager::CacheKey::operator<(const CacheKey &other) const { 98 bool IconManager::CacheKey::operator<(const CacheKey &other) const {
100 if (group != other.group) 99 if (group != other.group)
101 return group < other.group; 100 return group < other.group;
102 return size < other.size; 101 return size < other.size;
103 } 102 }
OLDNEW
« no previous file with comments | « chrome/browser/icon_manager.h ('k') | chrome/browser/ui/cocoa/download/download_item_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698