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
12namespace v8 {
13namespace internal {
14
15class Uri : public AllStatic {
16 public:
17 // ES6 section 18.2.6.2 decodeURI (encodedURI)
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)
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)
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)
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