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

Side by Side Diff: chrome/browser/ui/webui/fileicon_source.cc

Issue 291733004: Reduce the use of ui::ScaleFactor in webui/favicon (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 #include "chrome/browser/ui/webui/fileicon_source.h" 5 #include "chrome/browser/ui/webui/fileicon_source.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 IconLoader::IconSize SizeStringToIconSize(const std::string& size_string) { 55 IconLoader::IconSize SizeStringToIconSize(const std::string& size_string) {
56 if (size_string == "small") return IconLoader::SMALL; 56 if (size_string == "small") return IconLoader::SMALL;
57 if (size_string == "large") return IconLoader::LARGE; 57 if (size_string == "large") return IconLoader::LARGE;
58 // We default to NORMAL if we don't recognize the size_string. Including 58 // We default to NORMAL if we don't recognize the size_string. Including
59 // size_string=="normal". 59 // size_string=="normal".
60 return IconLoader::NORMAL; 60 return IconLoader::NORMAL;
61 } 61 }
62 62
63 // Simple parser for data on the query. 63 // Simple parser for data on the query.
64 void ParseQueryParams(const std::string& query, 64 void ParseQueryParams(const std::string& query,
65 ui::ScaleFactor* scale_factor, 65 float* scale_factor,
66 IconLoader::IconSize* icon_size) { 66 IconLoader::IconSize* icon_size) {
67 typedef std::pair<std::string, std::string> KVPair; 67 typedef std::pair<std::string, std::string> KVPair;
68 std::vector<KVPair> parameters; 68 std::vector<KVPair> parameters;
69 if (icon_size) 69 if (icon_size)
70 *icon_size = IconLoader::NORMAL; 70 *icon_size = IconLoader::NORMAL;
71 if (scale_factor) 71 if (scale_factor)
72 *scale_factor = ui::SCALE_FACTOR_100P; 72 *scale_factor = 1.0f;
73 base::SplitStringIntoKeyValuePairs(query, '=', '&', &parameters); 73 base::SplitStringIntoKeyValuePairs(query, '=', '&', &parameters);
74 for (std::vector<KVPair>::const_iterator iter = parameters.begin(); 74 for (std::vector<KVPair>::const_iterator iter = parameters.begin();
75 iter != parameters.end(); ++iter) { 75 iter != parameters.end(); ++iter) {
76 if (icon_size && iter->first == kIconSize) 76 if (icon_size && iter->first == kIconSize)
77 *icon_size = SizeStringToIconSize(iter->second); 77 *icon_size = SizeStringToIconSize(iter->second);
78 else if (scale_factor && iter->first == kScaleFactor) 78 else if (scale_factor && iter->first == kScaleFactor)
79 webui::ParseScaleFactor(iter->second, scale_factor); 79 webui::ParseScaleFactor(iter->second, scale_factor);
80 } 80 }
81 } 81 }
82 82
83 } // namespace 83 } // namespace
84 84
85 FileIconSource::IconRequestDetails::IconRequestDetails() { 85 FileIconSource::IconRequestDetails::IconRequestDetails() {
pkotwicz 2014/05/20 03:31:19 The constructor should default initialize here
oshima 2014/05/20 18:23:28 Done.
86 } 86 }
87 87
88 FileIconSource::IconRequestDetails::~IconRequestDetails() { 88 FileIconSource::IconRequestDetails::~IconRequestDetails() {
89 } 89 }
90 90
91 FileIconSource::FileIconSource() {} 91 FileIconSource::FileIconSource() {}
92 92
93 FileIconSource::~FileIconSource() {} 93 FileIconSource::~FileIconSource() {}
94 94
95 void FileIconSource::FetchFileIcon( 95 void FileIconSource::FetchFileIcon(
96 const base::FilePath& path, 96 const base::FilePath& path,
97 ui::ScaleFactor scale_factor, 97 float scale_factor,
98 IconLoader::IconSize icon_size, 98 IconLoader::IconSize icon_size,
99 const content::URLDataSource::GotDataCallback& callback) { 99 const content::URLDataSource::GotDataCallback& callback) {
100 IconManager* im = g_browser_process->icon_manager(); 100 IconManager* im = g_browser_process->icon_manager();
101 gfx::Image* icon = im->LookupIconFromFilepath(path, icon_size); 101 gfx::Image* icon = im->LookupIconFromFilepath(path, icon_size);
102 102
103 if (icon) { 103 if (icon) {
104 scoped_refptr<base::RefCountedBytes> icon_data(new base::RefCountedBytes); 104 scoped_refptr<base::RefCountedBytes> icon_data(new base::RefCountedBytes);
105 gfx::PNGCodec::EncodeBGRASkBitmap( 105 gfx::PNGCodec::EncodeBGRASkBitmap(
106 icon->ToImageSkia()->GetRepresentation( 106 icon->ToImageSkia()
107 ui::GetImageScale(scale_factor)).sk_bitmap(), 107 ->GetRepresentation(scale_factor)
pkotwicz 2014/05/20 03:31:19 Nit: no new line. (Similar to how the code is stru
oshima 2014/05/20 18:23:28 Done.
108 false, &icon_data->data()); 108 .sk_bitmap(),
109 false,
110 &icon_data->data());
109 111
110 callback.Run(icon_data.get()); 112 callback.Run(icon_data.get());
111 } else { 113 } else {
112 // Attach the ChromeURLDataManager request ID to the history request. 114 // Attach the ChromeURLDataManager request ID to the history request.
113 IconRequestDetails details; 115 IconRequestDetails details;
114 details.callback = callback; 116 details.callback = callback;
115 details.scale_factor = scale_factor; 117 details.scale_factor = scale_factor;
116 118
117 // Icon was not in cache, go fetch it slowly. 119 // Icon was not in cache, go fetch it slowly.
118 im->LoadIcon(path, 120 im->LoadIcon(path,
119 icon_size, 121 icon_size,
120 base::Bind(&FileIconSource::OnFileIconDataAvailable, 122 base::Bind(&FileIconSource::OnFileIconDataAvailable,
121 base::Unretained(this), details), 123 base::Unretained(this), details),
122 &cancelable_task_tracker_); 124 &cancelable_task_tracker_);
123 } 125 }
124 } 126 }
125 127
126 std::string FileIconSource::GetSource() const { 128 std::string FileIconSource::GetSource() const {
127 return kFileIconPath; 129 return kFileIconPath;
128 } 130 }
129 131
130 void FileIconSource::StartDataRequest( 132 void FileIconSource::StartDataRequest(
131 const std::string& url_path, 133 const std::string& url_path,
132 int render_process_id, 134 int render_process_id,
133 int render_frame_id, 135 int render_frame_id,
134 const content::URLDataSource::GotDataCallback& callback) { 136 const content::URLDataSource::GotDataCallback& callback) {
135 std::string query; 137 std::string query;
136 base::FilePath file_path; 138 base::FilePath file_path;
137 ui::ScaleFactor scale_factor;
138 IconLoader::IconSize icon_size; 139 IconLoader::IconSize icon_size;
140 float scale_factor;
pkotwicz 2014/05/20 03:31:19 Nit: default initialize
oshima 2014/05/20 18:23:28 Done.
139 GetFilePathAndQuery(url_path, &file_path, &query); 141 GetFilePathAndQuery(url_path, &file_path, &query);
140 ParseQueryParams(query, &scale_factor, &icon_size); 142 ParseQueryParams(query, &scale_factor, &icon_size);
141 FetchFileIcon(file_path, scale_factor, icon_size, callback); 143 FetchFileIcon(file_path, scale_factor, icon_size, callback);
142 } 144 }
143 145
144 std::string FileIconSource::GetMimeType(const std::string&) const { 146 std::string FileIconSource::GetMimeType(const std::string&) const {
145 // Rely on image decoder inferring the correct type. 147 // Rely on image decoder inferring the correct type.
146 return std::string(); 148 return std::string();
147 } 149 }
148 150
149 void FileIconSource::OnFileIconDataAvailable(const IconRequestDetails& details, 151 void FileIconSource::OnFileIconDataAvailable(const IconRequestDetails& details,
150 gfx::Image* icon) { 152 gfx::Image* icon) {
151 if (icon) { 153 if (icon) {
152 scoped_refptr<base::RefCountedBytes> icon_data(new base::RefCountedBytes); 154 scoped_refptr<base::RefCountedBytes> icon_data(new base::RefCountedBytes);
153 gfx::PNGCodec::EncodeBGRASkBitmap( 155 gfx::PNGCodec::EncodeBGRASkBitmap(
154 icon->ToImageSkia()->GetRepresentation( 156 icon->ToImageSkia()->GetRepresentation(
155 ui::GetImageScale(details.scale_factor)).sk_bitmap(), 157 details.scale_factor).sk_bitmap(),
156 false, 158 false,
157 &icon_data->data()); 159 &icon_data->data());
158 160
159 details.callback.Run(icon_data.get()); 161 details.callback.Run(icon_data.get());
160 } else { 162 } else {
161 // TODO(glen): send a dummy icon. 163 // TODO(glen): send a dummy icon.
162 details.callback.Run(NULL); 164 details.callback.Run(NULL);
163 } 165 }
164 } 166 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698