summaryrefslogtreecommitdiffstats
path: root/content/public/common/url_utils.h
blob: 1d1f68d245b946d3d5153d18db943539315f1eb7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CONTENT_PUBLIC_COMMON_URL_UTILS_H_
#define CONTENT_PUBLIC_COMMON_URL_UTILS_H_

#include <stddef.h>         // For size_t

#include "build/build_config.h"
#include "content/common/content_export.h"

class GURL;

namespace content {

// Null terminated list of schemes that are savable. This function can be
// invoked on any thread.
CONTENT_EXPORT const char* const* GetSavableSchemes();

// Returns true if the url has a scheme for WebUI.  See also
// WebUIControllerFactory::UseWebUIForURL in the browser process.
CONTENT_EXPORT bool HasWebUIScheme(const GURL& url);

// Check whether we can do the saving page operation for the specified URL.
CONTENT_EXPORT bool IsSavableURL(const GURL& url);

#if defined(OS_ANDROID)
// Set a new max size for URL's that we are willing to accept in the browser
// process.
// Should not be used except by Android WebView for backwards compatibility.
// Should be called early in start up before forking child processes.
//
// This is for supporting legacy android apps, android webview needs to
// support loading long data urls. In chrome, the url length is limited to 2M to
// prevent renderer process DOS-ing the browser process. So only for android
// webview, increase the limit to 20M, which is a large enough value to satisfy
// legacy app compatibility requirements.
CONTENT_EXPORT void SetMaxURLChars(size_t max_chars);
#endif

// The maximum number of characters in the URL that we're willing to accept
// in the browser process. It is set low enough to avoid damage to the browser
// but high enough that a web site can abuse location.hash for a little storage.
// We have different values for "max accepted" and "max displayed" because
// a data: URI may be legitimately massive, but the full URI would kill all
// known operating systems if you dropped it into a UI control.
CONTENT_EXPORT size_t GetMaxURLChars();

}  // namespace content

#endif  // CONTENT_PUBLIC_COMMON_URL_UTILS_H_