1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "extensions/renderer/resource_bundle_source_map.h" 6 7#include "ui/base/resource/resource_bundle.h" 8 9namespace extensions { 10 11ResourceBundleSourceMap::ResourceBundleSourceMap( 12 const ui::ResourceBundle* resource_bundle) 13 : resource_bundle_(resource_bundle) { 14} 15 16ResourceBundleSourceMap::~ResourceBundleSourceMap() { 17} 18 19void ResourceBundleSourceMap::RegisterSource(const std::string& name, 20 int resource_id) { 21 resource_id_map_[name] = resource_id; 22} 23 24v8::Handle<v8::Value> ResourceBundleSourceMap::GetSource( 25 v8::Isolate* isolate, 26 const std::string& name) { 27 if (!Contains(name)) 28 return v8::Undefined(isolate); 29 int resource_id = resource_id_map_[name]; 30 return ConvertString(isolate, 31 resource_bundle_->GetRawDataResource(resource_id)); 32} 33 34bool ResourceBundleSourceMap::Contains(const std::string& name) { 35 return !!resource_id_map_.count(name); 36} 37 38v8::Handle<v8::String> ResourceBundleSourceMap::ConvertString( 39 v8::Isolate* isolate, 40 const base::StringPiece& string) { 41 // v8 takes ownership of the StaticV8ExternalAsciiStringResource (see 42 // v8::String::NewExternal()). 43 return v8::String::NewExternal( 44 isolate, new StaticV8ExternalAsciiStringResource(string)); 45} 46 47} // namespace extensions 48