1 // Copyright (c) 2013 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 "chrome/browser/android/resource_mapper.h" 6 7 #include <map> 8 9 #include "base/lazy_instance.h" 10 #include "base/logging.h" 11 #include "grit/theme_resources.h" 12 13 namespace { 14 15 typedef std::map<int, int> ResourceMap; 16 base::LazyInstance<ResourceMap>::Leaky g_id_map = LAZY_INSTANCE_INITIALIZER; 17 18 } // namespace 19 20 const int ResourceMapper::kMissingId = -1; 21 22 int ResourceMapper::MapFromChromiumId(int resource_id) { 23 if (g_id_map.Get().empty()) { 24 ConstructMap(); 25 } 26 27 ResourceMap::iterator iterator = g_id_map.Get().find(resource_id); 28 if (iterator != g_id_map.Get().end()) { 29 return iterator->second; 30 } 31 32 // The resource couldn't be found. 33 NOTREACHED(); 34 return kMissingId; 35 } 36 37 void ResourceMapper::ConstructMap() { 38 DCHECK(g_id_map.Get().empty()); 39 int next_id = 0; 40 41 #define DEFINE_RESOURCE_ID(c_id,java_id) g_id_map.Get()[c_id] = next_id++; 42 #include "chrome/browser/android/resource_id.h" 43 #undef DEFINE_RESOURCE_ID 44 } 45