1bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch// Copyright 2016 the V8 project authors. All rights reserved. 2bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch// found in the LICENSE file. 4bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch 5bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch#ifndef V8_URI_H_ 6bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch#define V8_URI_H_ 7bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch 8bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch#include "src/allocation.h" 9bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch#include "src/objects.h" 10bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch 11bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochnamespace v8 { 12bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochnamespace internal { 13bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch 14bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdochclass Uri : public AllStatic { 15bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch public: 1613e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch // ES6 section 18.2.6.2 decodeURI (encodedURI) 1713e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch static MaybeHandle<String> DecodeUri(Isolate* isolate, Handle<String> uri) { 1813e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch return Decode(isolate, uri, true); 1913e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch } 2013e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch 2113e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch // ES6 section 18.2.6.3 decodeURIComponent (encodedURIComponent) 2213e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch static MaybeHandle<String> DecodeUriComponent(Isolate* isolate, 2313e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch Handle<String> component) { 2413e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch return Decode(isolate, component, false); 2513e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch } 2613e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch 2713e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch // ES6 section 18.2.6.4 encodeURI (uri) 2813e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch static MaybeHandle<String> EncodeUri(Isolate* isolate, Handle<String> uri) { 29bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch return Encode(isolate, uri, true); 30bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch } 31bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch 3213e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch // ES6 section 18.2.6.5 encodeURIComponenet (uriComponent) 3313e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch static MaybeHandle<String> EncodeUriComponent(Isolate* isolate, 3413e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch Handle<String> component) { 35bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch return Encode(isolate, component, false); 36bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch } 37bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch 3813e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch // ES6 section B.2.1.1 escape (string) 3913e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch static MaybeHandle<String> Escape(Isolate* isolate, Handle<String> string); 4013e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch 4113e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch // ES6 section B.2.1.2 unescape (string) 4213e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch static MaybeHandle<String> Unescape(Isolate* isolate, Handle<String> string); 43bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch 44bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch private: 4513e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch static MaybeHandle<String> Decode(Isolate* isolate, Handle<String> uri, 4613e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch bool is_uri); 4713e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch static MaybeHandle<String> Encode(Isolate* isolate, Handle<String> uri, 4813e2dadd00298019ed862f2b2fc5068bba730bcfBen Murdoch bool is_uri); 49bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch}; 50bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch 51bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch} // namespace internal 52bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch} // namespace v8 53bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch 54bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8Ben Murdoch#endif // V8_URI_H_ 55