Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (C) 2013 Google Inc. | 1 // Copyright (C) 2013 Google Inc. |
| 2 // | 2 // |
| 3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
| 5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
| 6 // | 6 // |
| 7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
| 8 // | 8 // |
| 9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
| 10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 25 #include "grit.h" | 25 #include "grit.h" |
| 26 #include "messages.h" | 26 #include "messages.h" |
| 27 #include "region_data_constants.h" | 27 #include "region_data_constants.h" |
| 28 #include "rule.h" | 28 #include "rule.h" |
| 29 | 29 |
| 30 namespace i18n { | 30 namespace i18n { |
| 31 namespace addressinput { | 31 namespace addressinput { |
| 32 | 32 |
| 33 namespace { | 33 namespace { |
| 34 | 34 |
| 35 // Parses the default region data into the static Rule object and returns a | |
| 36 // constant reference to this object. Cannot return a copy of the object, | |
| 37 // because Rule objects are not copyable. | |
| 38 const Rule& InitDefaultRule() { | |
| 39 static Rule rule; | |
| 40 rule.ParseSerializedRule(RegionDataConstants::GetDefaultRegionData()); | |
| 41 return rule; | |
|
please use gerrit instead
2013/12/16 23:41:38
(This code is moved into Rule.cc.)
You mentioned
| |
| 42 } | |
| 43 | |
| 44 // Returns the constant reference to the Rule object from InitDefaultRule(). The | |
| 45 // static object is in InitDefaultRule(), but this function maintains a constant | |
| 46 // static reference to it. The constant static reference avoids re-parsing the | |
| 47 // default region data. | |
| 48 const Rule& GetDefaultRule() { | |
| 49 static const Rule& kDefaultRule(InitDefaultRule()); | |
| 50 return kDefaultRule; | |
| 51 } | |
| 52 | |
| 53 int GetMessageIdForField(AddressField field, | 35 int GetMessageIdForField(AddressField field, |
| 54 int admin_area_name_message_id, | 36 int admin_area_name_message_id, |
| 55 int postal_code_name_message_id) { | 37 int postal_code_name_message_id) { |
| 56 switch (field) { | 38 switch (field) { |
| 57 case COUNTRY: | 39 case COUNTRY: |
| 58 return IDS_LIBADDRESSINPUT_I18N_COUNTRY_LABEL; | 40 return IDS_LIBADDRESSINPUT_I18N_COUNTRY_LABEL; |
| 59 case ADMIN_AREA: | 41 case ADMIN_AREA: |
| 60 return admin_area_name_message_id; | 42 return admin_area_name_message_id; |
| 61 case LOCALITY: | 43 case LOCALITY: |
| 62 return IDS_LIBADDRESSINPUT_I18N_LOCALITY_LABEL; | 44 return IDS_LIBADDRESSINPUT_I18N_LOCALITY_LABEL; |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 87 const std::vector<std::string>& GetRegionCodes() { | 69 const std::vector<std::string>& GetRegionCodes() { |
| 88 return RegionDataConstants::GetRegionCodes(); | 70 return RegionDataConstants::GetRegionCodes(); |
| 89 } | 71 } |
| 90 | 72 |
| 91 std::vector<AddressUiComponent> BuildComponents( | 73 std::vector<AddressUiComponent> BuildComponents( |
| 92 const std::string& region_code, | 74 const std::string& region_code, |
| 93 const Localization& localization) { | 75 const Localization& localization) { |
| 94 std::vector<AddressUiComponent> result; | 76 std::vector<AddressUiComponent> result; |
| 95 | 77 |
| 96 Rule rule; | 78 Rule rule; |
| 97 rule.CopyFrom(GetDefaultRule()); | 79 rule.CopyFrom(Rule::GetDefault()); |
| 98 if (!rule.ParseSerializedRule( | 80 if (!rule.ParseSerializedRule( |
| 99 RegionDataConstants::GetRegionData(region_code))) { | 81 RegionDataConstants::GetRegionData(region_code))) { |
| 100 return result; | 82 return result; |
| 101 } | 83 } |
| 102 | 84 |
| 103 bool previous_field_is_newline = true; | 85 bool previous_field_is_newline = true; |
| 104 bool next_field_is_newline = true; | 86 bool next_field_is_newline = true; |
| 105 for (std::vector<AddressField>::const_iterator field_it = | 87 for (std::vector<AddressField>::const_iterator field_it = |
| 106 rule.GetFormat().begin(); | 88 rule.GetFormat().begin(); |
| 107 field_it != rule.GetFormat().end(); ++field_it) { | 89 field_it != rule.GetFormat().end(); ++field_it) { |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 122 GetMessageIdForField(*field_it, rule.GetAdminAreaNameMessageId(), | 104 GetMessageIdForField(*field_it, rule.GetAdminAreaNameMessageId(), |
| 123 rule.GetPostalCodeNameMessageId())); | 105 rule.GetPostalCodeNameMessageId())); |
| 124 result.push_back(component); | 106 result.push_back(component); |
| 125 } | 107 } |
| 126 | 108 |
| 127 return result; | 109 return result; |
| 128 } | 110 } |
| 129 | 111 |
| 130 } // namespace addressinput | 112 } // namespace addressinput |
| 131 } // namespace i18n | 113 } // namespace i18n |
| OLD | NEW |