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 3 // found in the LICENSE file. 4 5 #ifndef V8_URI_H_ 6 #define V8_URI_H_ 7 8 #include "src/allocation.h" 9 #include "src/maybe-handles.h" 10 #include "src/objects.h" 11 12 namespace v8 { 13 namespace internal { 14 15 class Uri : public AllStatic { 16 public: 17 // ES6 section 18.2.6.2 decodeURI (encodedURI) DecodeUri(Isolate * isolate,Handle<String> uri)18 static MaybeHandle<String> DecodeUri(Isolate* isolate, Handle<String> uri) { 19 return Decode(isolate, uri, true); 20 } 21 22 // ES6 section 18.2.6.3 decodeURIComponent (encodedURIComponent) DecodeUriComponent(Isolate * isolate,Handle<String> component)23 static MaybeHandle<String> DecodeUriComponent(Isolate* isolate, 24 Handle<String> component) { 25 return Decode(isolate, component, false); 26 } 27 28 // ES6 section 18.2.6.4 encodeURI (uri) EncodeUri(Isolate * isolate,Handle<String> uri)29 static MaybeHandle<String> EncodeUri(Isolate* isolate, Handle<String> uri) { 30 return Encode(isolate, uri, true); 31 } 32 33 // ES6 section 18.2.6.5 encodeURIComponenet (uriComponent) EncodeUriComponent(Isolate * isolate,Handle<String> component)34 static MaybeHandle<String> EncodeUriComponent(Isolate* isolate, 35 Handle<String> component) { 36 return Encode(isolate, component, false); 37 } 38 39 // ES6 section B.2.1.1 escape (string) 40 static MaybeHandle<String> Escape(Isolate* isolate, Handle<String> string); 41 42 // ES6 section B.2.1.2 unescape (string) 43 static MaybeHandle<String> Unescape(Isolate* isolate, Handle<String> string); 44 45 private: 46 static MaybeHandle<String> Decode(Isolate* isolate, Handle<String> uri, 47 bool is_uri); 48 static MaybeHandle<String> Encode(Isolate* isolate, Handle<String> uri, 49 bool is_uri); 50 }; 51 52 } // namespace internal 53 } // namespace v8 54 55 #endif // V8_URI_H_ 56