• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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