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

Side by Side Diff: chrome/browser/extensions/component_loader.cc

Issue 2197483004: [Extensions] rm unnecessary GetRawDataResource().as_string() to reduce string copy. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Devlin@ Created 4 years, 4 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) 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/extensions/component_loader.h" 5 #include "chrome/browser/extensions/component_loader.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 SCOPED_UMA_HISTOGRAM_TIMER("Extensions.LoadAllComponentTime"); 143 SCOPED_UMA_HISTOGRAM_TIMER("Extensions.LoadAllComponentTime");
144 144
145 for (RegisteredComponentExtensions::iterator it = 145 for (RegisteredComponentExtensions::iterator it =
146 component_extensions_.begin(); 146 component_extensions_.begin();
147 it != component_extensions_.end(); ++it) { 147 it != component_extensions_.end(); ++it) {
148 Load(*it); 148 Load(*it);
149 } 149 }
150 } 150 }
151 151
152 base::DictionaryValue* ComponentLoader::ParseManifest( 152 base::DictionaryValue* ComponentLoader::ParseManifest(
153 const std::string& manifest_contents) const { 153 base::StringPiece manifest_contents) const {
154 JSONStringValueDeserializer deserializer(manifest_contents); 154 JSONStringValueDeserializer deserializer(manifest_contents);
155 std::unique_ptr<base::Value> manifest = deserializer.Deserialize(NULL, NULL); 155 std::unique_ptr<base::Value> manifest = deserializer.Deserialize(NULL, NULL);
156 156
157 if (!manifest.get() || !manifest->IsType(base::Value::TYPE_DICTIONARY)) { 157 if (!manifest.get() || !manifest->IsType(base::Value::TYPE_DICTIONARY)) {
158 LOG(ERROR) << "Failed to parse extension manifest."; 158 LOG(ERROR) << "Failed to parse extension manifest.";
159 return NULL; 159 return NULL;
160 } 160 }
161 // Transfer ownership to the caller. 161 // Transfer ownership to the caller.
162 return static_cast<base::DictionaryValue*>(manifest.release()); 162 return static_cast<base::DictionaryValue*>(manifest.release());
163 } 163 }
164 164
165 void ComponentLoader::ClearAllRegistered() { 165 void ComponentLoader::ClearAllRegistered() {
166 for (RegisteredComponentExtensions::iterator it = 166 for (RegisteredComponentExtensions::iterator it =
167 component_extensions_.begin(); 167 component_extensions_.begin();
168 it != component_extensions_.end(); ++it) { 168 it != component_extensions_.end(); ++it) {
169 delete it->manifest; 169 delete it->manifest;
170 } 170 }
171 171
172 component_extensions_.clear(); 172 component_extensions_.clear();
173 } 173 }
174 174
175 std::string ComponentLoader::GetExtensionID( 175 std::string ComponentLoader::GetExtensionID(
176 int manifest_resource_id, 176 int manifest_resource_id,
177 const base::FilePath& root_directory) { 177 const base::FilePath& root_directory) {
178 std::string manifest_contents = ResourceBundle::GetSharedInstance(). 178 base::DictionaryValue* manifest =
179 GetRawDataResource(manifest_resource_id).as_string(); 179 ParseManifest(ResourceBundle::GetSharedInstance().GetRawDataResource(
180 base::DictionaryValue* manifest = ParseManifest(manifest_contents); 180 manifest_resource_id));
181 if (!manifest) 181 if (!manifest)
182 return std::string(); 182 return std::string();
183 183
184 ComponentExtensionInfo info(manifest, root_directory); 184 ComponentExtensionInfo info(manifest, root_directory);
185 return info.extension_id; 185 return info.extension_id;
186 } 186 }
187 187
188 std::string ComponentLoader::Add(int manifest_resource_id, 188 std::string ComponentLoader::Add(int manifest_resource_id,
189 const base::FilePath& root_directory) { 189 const base::FilePath& root_directory) {
190 if (!ignore_whitelist_for_testing_ && 190 if (!ignore_whitelist_for_testing_ &&
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 411
412 void ComponentLoader::AddWithNameAndDescription( 412 void ComponentLoader::AddWithNameAndDescription(
413 int manifest_resource_id, 413 int manifest_resource_id,
414 const base::FilePath& root_directory, 414 const base::FilePath& root_directory,
415 const std::string& name_string, 415 const std::string& name_string,
416 const std::string& description_string) { 416 const std::string& description_string) {
417 if (!ignore_whitelist_for_testing_ && 417 if (!ignore_whitelist_for_testing_ &&
418 !IsComponentExtensionWhitelisted(manifest_resource_id)) 418 !IsComponentExtensionWhitelisted(manifest_resource_id))
419 return; 419 return;
420 420
421 std::string manifest_contents = 421 base::StringPiece manifest_contents =
422 ResourceBundle::GetSharedInstance().GetRawDataResource( 422 ResourceBundle::GetSharedInstance().GetRawDataResource(
423 manifest_resource_id).as_string(); 423 manifest_resource_id);
424 424
425 // The Value is kept for the lifetime of the ComponentLoader. This is 425 // The Value is kept for the lifetime of the ComponentLoader. This is
426 // required in case LoadAll() is called again. 426 // required in case LoadAll() is called again.
427 base::DictionaryValue* manifest = ParseManifest(manifest_contents); 427 base::DictionaryValue* manifest = ParseManifest(manifest_contents);
428 428
429 if (manifest) { 429 if (manifest) {
430 manifest->SetString(manifest_keys::kName, name_string); 430 manifest->SetString(manifest_keys::kName, name_string);
431 manifest->SetString(manifest_keys::kDescription, description_string); 431 manifest->SetString(manifest_keys::kDescription, description_string);
432 Add(manifest, root_directory, true); 432 Add(manifest, root_directory, true);
433 } 433 }
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 manifest.release(), 718 manifest.release(),
719 root_directory, 719 root_directory,
720 false); 720 false);
721 CHECK_EQ(extension_id, actual_extension_id); 721 CHECK_EQ(extension_id, actual_extension_id);
722 if (!done_cb.is_null()) 722 if (!done_cb.is_null())
723 done_cb.Run(); 723 done_cb.Run();
724 } 724 }
725 #endif 725 #endif
726 726
727 } // namespace extensions 727 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/component_loader.h ('k') | chrome/browser/ui/webui/extensions/extension_icon_source.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698