OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 // ICU integration functions. | 5 // ICU integration functions. |
6 | 6 |
7 #include <stdlib.h> | 7 #include <stdlib.h> |
8 #include <string.h> | 8 #include <string.h> |
9 | 9 |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
11 #include "base/logging.h" | 11 #include "base/logging.h" |
12 #include "third_party/icu/source/common/unicode/ucnv.h" | 12 #include "third_party/icu/source/common/unicode/ucnv.h" |
13 #include "third_party/icu/source/common/unicode/ucnv_cb.h" | 13 #include "third_party/icu/source/common/unicode/ucnv_cb.h" |
14 #include "third_party/icu/source/common/unicode/uidna.h" | 14 #include "third_party/icu/source/common/unicode/uidna.h" |
| 15 #include "third_party/icu/source/common/unicode/utypes.h" |
15 #include "url/url_canon_icu.h" | 16 #include "url/url_canon_icu.h" |
16 #include "url/url_canon_internal.h" // for _itoa_s | 17 #include "url/url_canon_internal.h" // for _itoa_s |
17 | 18 |
18 namespace url { | 19 namespace url { |
19 | 20 |
20 namespace { | 21 namespace { |
21 | 22 |
22 // Called when converting a character that can not be represented, this will | 23 // Called when converting a character that can not be represented, this will |
23 // append an escaped version of the numerical character reference for that code | 24 // append an escaped version of the numerical character reference for that code |
24 // point. It is of the form "Ӓ" and we will escape the non-digits to | 25 // point. It is of the form "Ӓ" and we will escape the non-digits to |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 // http://goo.gl/3XBhqw ). | 94 // http://goo.gl/3XBhqw ). |
94 // See http://http://unicode.org/reports/tr46/ and references therein | 95 // See http://http://unicode.org/reports/tr46/ and references therein |
95 // for more details. | 96 // for more details. |
96 struct UIDNAWrapper { | 97 struct UIDNAWrapper { |
97 UIDNAWrapper() { | 98 UIDNAWrapper() { |
98 UErrorCode err = U_ZERO_ERROR; | 99 UErrorCode err = U_ZERO_ERROR; |
99 // TODO(jungshik): Change options as different parties (browsers, | 100 // TODO(jungshik): Change options as different parties (browsers, |
100 // registrars, search engines) converge toward a consensus. | 101 // registrars, search engines) converge toward a consensus. |
101 value = uidna_openUTS46(UIDNA_CHECK_BIDI, &err); | 102 value = uidna_openUTS46(UIDNA_CHECK_BIDI, &err); |
102 if (U_FAILURE(err)) { | 103 if (U_FAILURE(err)) { |
103 CHECK(false) << "failed to open UTS46 data with error: " << err; | 104 CHECK(false) << "failed to open UTS46 data with error: " |
| 105 << u_errorName(err); |
104 value = NULL; | 106 value = NULL; |
105 } | 107 } |
106 } | 108 } |
107 | 109 |
108 UIDNA* value; | 110 UIDNA* value; |
109 }; | 111 }; |
110 | 112 |
111 } // namespace | 113 } // namespace |
112 | 114 |
113 ICUCharsetConverter::ICUCharsetConverter(UConverter* converter) | 115 ICUCharsetConverter::ICUCharsetConverter(UConverter* converter) |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
180 // if necessary. | 182 // if necessary. |
181 if (err != U_BUFFER_OVERFLOW_ERROR || info.errors != 0) | 183 if (err != U_BUFFER_OVERFLOW_ERROR || info.errors != 0) |
182 return false; // Unknown error, give up. | 184 return false; // Unknown error, give up. |
183 | 185 |
184 // Not enough room in our buffer, expand. | 186 // Not enough room in our buffer, expand. |
185 output->Resize(output_length); | 187 output->Resize(output_length); |
186 } | 188 } |
187 } | 189 } |
188 | 190 |
189 } // namespace url | 191 } // namespace url |
OLD | NEW |