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