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

Side by Side Diff: app/resource_bundle_win.cc

Issue 348033: Remove themes/default.dll and merge the resources into chrome.dll. (Closed)
Patch Set: update comments Created 11 years, 1 month 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
« no previous file with comments | « app/resource_bundle_mac.mm ('k') | app/test_suite.h » ('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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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 "app/resource_bundle.h" 5 #include "app/resource_bundle.h"
6 6
7 #include <atlbase.h> 7 #include <atlbase.h>
8 8
9 #include "app/app_paths.h" 9 #include "app/app_paths.h"
10 #include "app/gfx/font.h" 10 #include "app/gfx/font.h"
(...skipping 18 matching lines...) Expand all
29 29
30 } // end anonymous namespace 30 } // end anonymous namespace
31 31
32 ResourceBundle::~ResourceBundle() { 32 ResourceBundle::~ResourceBundle() {
33 FreeImages(); 33 FreeImages();
34 34
35 if (locale_resources_data_) { 35 if (locale_resources_data_) {
36 BOOL rv = FreeLibrary(locale_resources_data_); 36 BOOL rv = FreeLibrary(locale_resources_data_);
37 DCHECK(rv); 37 DCHECK(rv);
38 } 38 }
39 if (theme_data_) {
40 BOOL rv = FreeLibrary(theme_data_);
41 DCHECK(rv);
42 }
43 } 39 }
44 40
45 void ResourceBundle::LoadResources(const std::wstring& pref_locale) { 41 void ResourceBundle::LoadResources(const std::wstring& pref_locale) {
46 // As a convenience, set resources_data_ to the current module. 42 // As a convenience, set resources_data_ to the current module.
47 resources_data_ = _AtlBaseModule.GetModuleInstance(); 43 resources_data_ = _AtlBaseModule.GetModuleInstance();
48 44
49 DCHECK(NULL == locale_resources_data_) << "locale dll already loaded"; 45 DCHECK(NULL == locale_resources_data_) << "locale dll already loaded";
50 const FilePath& locale_path = GetLocaleFilePath(pref_locale); 46 const FilePath& locale_path = GetLocaleFilePath(pref_locale);
51 if (locale_path.value().empty()) { 47 if (locale_path.value().empty()) {
52 // It's possible that there are no locale dlls found, in which case we just 48 // It's possible that there are no locale dlls found, in which case we just
(...skipping 13 matching lines...) Expand all
66 FilePath locale_path; 62 FilePath locale_path;
67 PathService::Get(app::DIR_LOCALES, &locale_path); 63 PathService::Get(app::DIR_LOCALES, &locale_path);
68 64
69 const std::string app_locale = l10n_util::GetApplicationLocale(pref_locale); 65 const std::string app_locale = l10n_util::GetApplicationLocale(pref_locale);
70 if (app_locale.empty()) 66 if (app_locale.empty())
71 return FilePath(); 67 return FilePath();
72 68
73 return locale_path.AppendASCII(app_locale + ".dll"); 69 return locale_path.AppendASCII(app_locale + ".dll");
74 } 70 }
75 71
76 void ResourceBundle::LoadThemeResources() {
77 DCHECK(NULL == theme_data_) << "theme dll already loaded";
78 FilePath theme_data_path;
79 PathService::Get(app::DIR_THEMES, &theme_data_path);
80 theme_data_path = theme_data_path.AppendASCII("default.dll");
81
82 // The dll should only have resources, not executable code.
83 theme_data_ = LoadLibraryEx(theme_data_path.value().c_str(), NULL,
84 GetDataDllLoadFlags());
85 DCHECK(theme_data_ != NULL) << "unable to load " << theme_data_path.value();
86 }
87
88 // static 72 // static
89 RefCountedStaticMemory* ResourceBundle::LoadResourceBytes( 73 RefCountedStaticMemory* ResourceBundle::LoadResourceBytes(
90 DataHandle module, int resource_id) { 74 DataHandle module, int resource_id) {
91 void* data_ptr; 75 void* data_ptr;
92 size_t data_size; 76 size_t data_size;
93 if (base::GetDataResourceFromModule(module, resource_id, &data_ptr, 77 if (base::GetDataResourceFromModule(module, resource_id, &data_ptr,
94 &data_size)) { 78 &data_size)) {
95 return new RefCountedStaticMemory( 79 return new RefCountedStaticMemory(
96 reinterpret_cast<const unsigned char*>(data_ptr), data_size); 80 reinterpret_cast<const unsigned char*>(data_ptr), data_size);
97 } else { 81 } else {
98 return NULL; 82 return NULL;
99 } 83 }
100 } 84 }
101 85
102 HICON ResourceBundle::LoadThemeIcon(int icon_id) { 86 HICON ResourceBundle::LoadThemeIcon(int icon_id) {
103 return ::LoadIcon(theme_data_, MAKEINTRESOURCE(icon_id)); 87 return ::LoadIcon(resources_data_, MAKEINTRESOURCE(icon_id));
104 } 88 }
105 89
106 base::StringPiece ResourceBundle::GetRawDataResource(int resource_id) { 90 base::StringPiece ResourceBundle::GetRawDataResource(int resource_id) {
107 void* data_ptr; 91 void* data_ptr;
108 size_t data_size; 92 size_t data_size;
109 if (base::GetDataResourceFromModule(_AtlBaseModule.GetModuleInstance(), 93 if (base::GetDataResourceFromModule(_AtlBaseModule.GetModuleInstance(),
110 resource_id, 94 resource_id,
111 &data_ptr, 95 &data_ptr,
112 &data_size)) { 96 &data_size)) {
113 return base::StringPiece(static_cast<const char*>(data_ptr), data_size); 97 return base::StringPiece(static_cast<const char*>(data_ptr), data_size);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 message_id); 133 message_id);
150 if (!image) { 134 if (!image) {
151 StackTrace().PrintBacktrace(); // See http://crbug.com/21925. 135 StackTrace().PrintBacktrace(); // See http://crbug.com/21925.
152 NOTREACHED() << "unable to find resource: " << message_id; 136 NOTREACHED() << "unable to find resource: " << message_id;
153 return std::wstring(); 137 return std::wstring();
154 } 138 }
155 } 139 }
156 // Copy into a string16 and return. 140 // Copy into a string16 and return.
157 return string16(image->achString, image->nLength); 141 return string16(image->achString, image->nLength);
158 } 142 }
OLDNEW
« no previous file with comments | « app/resource_bundle_mac.mm ('k') | app/test_suite.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698