| OLD | NEW |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project 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 #include "src/uri.h" | 5 #include "src/uri.h" |
| 6 | 6 |
| 7 #include "src/char-predicates-inl.h" | 7 #include "src/char-predicates-inl.h" |
| 8 #include "src/handles.h" | 8 #include "src/handles.h" |
| 9 #include "src/isolate-inl.h" | 9 #include "src/isolate-inl.h" |
| 10 #include "src/list.h" | 10 #include "src/list.h" |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 uint8_t y = (cc2 >> 6) & 0xF; | 82 uint8_t y = (cc2 >> 6) & 0xF; |
| 83 uint8_t z = cc2 & 63; | 83 uint8_t z = cc2 & 63; |
| 84 AddHexEncodedToBuffer((u >> 2) + 240, buffer); | 84 AddHexEncodedToBuffer((u >> 2) + 240, buffer); |
| 85 AddHexEncodedToBuffer((((u & 3) << 4) | w) + 128, buffer); | 85 AddHexEncodedToBuffer((((u & 3) << 4) | w) + 128, buffer); |
| 86 AddHexEncodedToBuffer(((x << 4) | y) + 128, buffer); | 86 AddHexEncodedToBuffer(((x << 4) | y) + 128, buffer); |
| 87 AddHexEncodedToBuffer(z + 128, buffer); | 87 AddHexEncodedToBuffer(z + 128, buffer); |
| 88 } | 88 } |
| 89 | 89 |
| 90 } // anonymous namespace | 90 } // anonymous namespace |
| 91 | 91 |
| 92 Object* Uri::Encode(Isolate* isolate, Handle<String> uri, bool is_uri) { | 92 MaybeHandle<String> Uri::Encode(Isolate* isolate, Handle<String> uri, |
| 93 bool is_uri) { |
| 93 uri = String::Flatten(uri); | 94 uri = String::Flatten(uri); |
| 94 int uri_length = uri->length(); | 95 int uri_length = uri->length(); |
| 95 List<uint8_t> buffer(uri_length); | 96 List<uint8_t> buffer(uri_length); |
| 96 | 97 |
| 97 { | 98 { |
| 98 DisallowHeapAllocation no_gc; | 99 DisallowHeapAllocation no_gc; |
| 99 String::FlatContent uri_content = uri->GetFlatContent(); | 100 String::FlatContent uri_content = uri->GetFlatContent(); |
| 100 | 101 |
| 101 for (int k = 0; k < uri_length; k++) { | 102 for (int k = 0; k < uri_length; k++) { |
| 102 uc16 cc1 = uri_content.Get(k); | 103 uc16 cc1 = uri_content.Get(k); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 113 if (IsUnescapePredicateInUriComponent(cc1) || | 114 if (IsUnescapePredicateInUriComponent(cc1) || |
| 114 (is_uri && IsUriSeparator(cc1))) { | 115 (is_uri && IsUriSeparator(cc1))) { |
| 115 buffer.Add(cc1); | 116 buffer.Add(cc1); |
| 116 } else { | 117 } else { |
| 117 EncodeSingle(cc1, &buffer); | 118 EncodeSingle(cc1, &buffer); |
| 118 } | 119 } |
| 119 continue; | 120 continue; |
| 120 } | 121 } |
| 121 | 122 |
| 122 AllowHeapAllocation allocate_error_and_return; | 123 AllowHeapAllocation allocate_error_and_return; |
| 123 THROW_NEW_ERROR_RETURN_FAILURE(isolate, NewURIError()); | 124 THROW_NEW_ERROR(isolate, NewURIError(), String); |
| 124 } | 125 } |
| 125 } | 126 } |
| 126 | 127 |
| 127 Handle<String> result; | 128 return isolate->factory()->NewStringFromOneByte(buffer.ToConstVector()); |
| 128 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( | |
| 129 isolate, result, | |
| 130 isolate->factory()->NewStringFromOneByte(buffer.ToConstVector())); | |
| 131 return *result; | |
| 132 } | 129 } |
| 133 | 130 |
| 134 } // namespace internal | 131 } // namespace internal |
| 135 } // namespace v8 | 132 } // namespace v8 |
| OLD | NEW |