1 // Copyright 2017 The Chromium 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 #include "chrome/browser/chromeos/arc/fileapi/chrome_content_provider_url_util.h" 6 7 #include <string> 8 9 #include "base/strings/string_util.h" 10 #include "net/base/escape.h" 11 12 namespace arc { 13 14 namespace { 15 16 constexpr char kChromeContentProviderUrl[] = 17 "content://org.chromium.arc.chromecontentprovider/"; 18 19 } // namespace 20 EncodeToChromeContentProviderUrl(const GURL & url)21GURL EncodeToChromeContentProviderUrl(const GURL& url) { 22 const std::string escaped = 23 net::EscapeQueryParamValue(url.spec(), false /* use_plus */); 24 return GURL(kChromeContentProviderUrl).Resolve(escaped); 25 } 26 DecodeFromChromeContentProviderUrl(const GURL & chrome_content_provider_url)27GURL DecodeFromChromeContentProviderUrl( 28 const GURL& chrome_content_provider_url) { 29 const std::string spec = chrome_content_provider_url.spec(); 30 if (!base::StartsWith(spec, kChromeContentProviderUrl, 31 base::CompareCase::SENSITIVE)) 32 return GURL(); 33 const std::string escaped = spec.substr(strlen(kChromeContentProviderUrl)); 34 return GURL(net::UnescapeBinaryURLComponent(escaped)); 35 } 36 37 } // namespace arc 38