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

Side by Side Diff: chrome/browser/dom_ui/dom_ui_theme_source.cc

Issue 288005: First fix to minimize copying of image data. (Closed)
Patch Set: Modify gyp Created 11 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
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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/dom_ui/dom_ui_theme_source.h" 5 #include "chrome/browser/dom_ui/dom_ui_theme_source.h"
6 6
7 #include "app/l10n_util.h" 7 #include "app/l10n_util.h"
8 #include "app/resource_bundle.h" 8 #include "app/resource_bundle.h"
9 #include "app/theme_provider.h" 9 #include "app/theme_provider.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 std::string uncached_path = StripQueryParams(path); 83 std::string uncached_path = StripQueryParams(path);
84 84
85 if (uncached_path == kNewTabCSSPath || 85 if (uncached_path == kNewTabCSSPath ||
86 uncached_path == kNewIncognitoTabCSSPath) { 86 uncached_path == kNewIncognitoTabCSSPath) {
87 return "text/css"; 87 return "text/css";
88 } 88 }
89 89
90 return "image/png"; 90 return "image/png";
91 } 91 }
92 92
93 void DOMUIThemeSource::SendResponse(int request_id, RefCountedBytes* data) { 93 void DOMUIThemeSource::SendResponse(int request_id, RefCountedMemory* data) {
94 ChromeURLDataManager::DataSource::SendResponse(request_id, data); 94 ChromeURLDataManager::DataSource::SendResponse(request_id, data);
95 } 95 }
96 96
97 MessageLoop* DOMUIThemeSource::MessageLoopForRequestPath( 97 MessageLoop* DOMUIThemeSource::MessageLoopForRequestPath(
98 const std::string& path) const { 98 const std::string& path) const {
99 std::string uncached_path = StripQueryParams(path); 99 std::string uncached_path = StripQueryParams(path);
100 100
101 if (uncached_path == kNewTabCSSPath || 101 if (uncached_path == kNewTabCSSPath ||
102 uncached_path == kNewIncognitoTabCSSPath) { 102 uncached_path == kNewIncognitoTabCSSPath) {
103 // All of the operations that need to be on the UI thread for these 103 // All of the operations that need to be on the UI thread for these
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 std::copy(css_string.begin(), css_string.end(), css_bytes->data.begin()); 241 std::copy(css_string.begin(), css_string.end(), css_bytes->data.begin());
242 242
243 // Send. 243 // Send.
244 SendResponse(request_id, css_bytes); 244 SendResponse(request_id, css_bytes);
245 } 245 }
246 246
247 void DOMUIThemeSource::SendThemeBitmap(int request_id, int resource_id) { 247 void DOMUIThemeSource::SendThemeBitmap(int request_id, int resource_id) {
248 ThemeProvider* tp = profile_->GetThemeProvider(); 248 ThemeProvider* tp = profile_->GetThemeProvider();
249 DCHECK(tp); 249 DCHECK(tp);
250 250
251 std::vector<unsigned char> png_bytes; 251 scoped_refptr<RefCountedMemory> image_data(tp->GetRawData(resource_id));
252 if (tp->GetRawData(resource_id, &png_bytes)) { 252 SendResponse(request_id, image_data);
253 scoped_refptr<RefCountedBytes> image_data =
254 new RefCountedBytes(png_bytes);
255 SendResponse(request_id, image_data);
256 } else {
257 SendResponse(request_id, NULL);
258 }
259 } 253 }
260 254
261 std::string DOMUIThemeSource::GetNewTabBackgroundCSS(bool bar_attached) { 255 std::string DOMUIThemeSource::GetNewTabBackgroundCSS(bool bar_attached) {
262 int alignment; 256 int alignment;
263 profile_->GetThemeProvider()->GetDisplayProperty( 257 profile_->GetThemeProvider()->GetDisplayProperty(
264 BrowserThemeProvider::NTP_BACKGROUND_ALIGNMENT, &alignment); 258 BrowserThemeProvider::NTP_BACKGROUND_ALIGNMENT, &alignment);
265 259
266 // TODO(glen): This is a quick workaround to hide the notused.png image when 260 // TODO(glen): This is a quick workaround to hide the notused.png image when
267 // no image is provided - we don't have time right now to figure out why 261 // no image is provided - we don't have time right now to figure out why
268 // this is painting as white. 262 // this is painting as white.
(...skipping 27 matching lines...) Expand all
296 return BrowserThemeProvider::AlignmentToString(alignment); 290 return BrowserThemeProvider::AlignmentToString(alignment);
297 } 291 }
298 292
299 std::string DOMUIThemeSource::GetNewTabBackgroundTilingCSS() { 293 std::string DOMUIThemeSource::GetNewTabBackgroundTilingCSS() {
300 int repeat_mode; 294 int repeat_mode;
301 profile_->GetThemeProvider()->GetDisplayProperty( 295 profile_->GetThemeProvider()->GetDisplayProperty(
302 BrowserThemeProvider::NTP_BACKGROUND_TILING, &repeat_mode); 296 BrowserThemeProvider::NTP_BACKGROUND_TILING, &repeat_mode);
303 return BrowserThemeProvider::TilingToString(repeat_mode); 297 return BrowserThemeProvider::TilingToString(repeat_mode);
304 } 298 }
305 299
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698