Index: chrome/renderer/resource_bundle_source_map.cc |
diff --git a/chrome/renderer/resource_bundle_source_map.cc b/chrome/renderer/resource_bundle_source_map.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2c06b7b318adfcee1ffaa8b70dabbe4fe7d73a89 |
--- /dev/null |
+++ b/chrome/renderer/resource_bundle_source_map.cc |
@@ -0,0 +1,40 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/renderer/resource_bundle_source_map.h" |
+ |
+#include "ui/base/resource/resource_bundle.h" |
+ |
+ResourceBundleSourceMap::ResourceBundleSourceMap( |
+ const ui::ResourceBundle* resource_bundle) |
+ : resource_bundle_(resource_bundle) { |
+} |
+ |
+ResourceBundleSourceMap::~ResourceBundleSourceMap() { |
+} |
+ |
+void ResourceBundleSourceMap::RegisterSource(const std::string& name, |
+ int resource_id) { |
+ resource_id_map_[name] = resource_id; |
+} |
+ |
+v8::Handle<v8::Value> ResourceBundleSourceMap::GetSource( |
+ const std::string& name) { |
+ if (!Contains(name)) |
+ return v8::Undefined(); |
+ int resource_id = resource_id_map_[name]; |
+ return ConvertString(resource_bundle_->GetRawDataResource(resource_id)); |
+} |
+ |
+bool ResourceBundleSourceMap::Contains(const std::string& name) { |
+ return resource_id_map_.count(name) > 0; |
+} |
+ |
+v8::Handle<v8::String> ResourceBundleSourceMap::ConvertString( |
+ const base::StringPiece& string) { |
+ // v8 takes ownership of the StaticV8ExternalAsciiStringResource (see |
+ // v8::String::NewExternal()). |
+ return v8::String::NewExternal( |
+ new StaticV8ExternalAsciiStringResource(string)); |
+} |