Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(129)

Unified Diff: components/url_fixer/url_fixer.h

Issue 1260033005: Revert of Move net::FormatUrl and friends outside of //net and into //components (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/url_fixer/OWNERS ('k') | components/url_fixer/url_fixer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/url_fixer/url_fixer.h
diff --git a/components/url_fixer/url_fixer.h b/components/url_fixer/url_fixer.h
new file mode 100644
index 0000000000000000000000000000000000000000..baf14c69b95c1b1874c433b31126578b798d60ac
--- /dev/null
+++ b/components/url_fixer/url_fixer.h
@@ -0,0 +1,87 @@
+// Copyright (c) 2011 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 COMPONENTS_URL_FIXER_URL_FIXER_H_
+#define COMPONENTS_URL_FIXER_URL_FIXER_H_
+
+#include <string>
+
+#include "base/strings/string16.h"
+#include "url/gurl.h"
+
+namespace base {
+class FilePath;
+}
+
+namespace url {
+struct Component;
+struct Parsed;
+}
+
+// This object is designed to convert various types of input into URLs that we
+// know are valid. For example, user typing in the URL bar or command line
+// options. This is NOT the place for converting between different types of URLs
+// or parsing them, see net_util.h for that.
+namespace url_fixer {
+
+// Segments the given text string into parts of a URL. This is most useful for
+// schemes such as http, https, and ftp where |SegmentURL| will find many
+// segments. Currently does not segment "file" schemes.
+// Returns the canonicalized scheme, or the empty string when |text| is only
+// whitespace.
+std::string SegmentURL(const std::string& text, url::Parsed* parts);
+base::string16 SegmentURL(const base::string16& text, url::Parsed* parts);
+
+// Converts |text| to a fixed-up URL and returns it. Attempts to make some
+// "smart" adjustments to obviously-invalid input where possible.
+// |text| may be an absolute path to a file, which will get converted to a
+// "file:" URL.
+//
+// The result will be a "more" valid URL than the input. It may still not be
+// valid, so check the return value's validity or use possibly_invalid_spec().
+//
+// Schemes "about" and "chrome" are normalized to "chrome://", with slashes.
+// "about:blank" is unaltered, as Webkit allows frames to access about:blank.
+// Additionally, if a chrome URL does not have a valid host, as in "about:", the
+// returned URL will have the host "version", as in "chrome://version".
+//
+// If |desired_tld| is non-empty, it represents the TLD the user wishes to
+// append in the case of an incomplete domain. We check that this is not a file
+// path and there does not appear to be a valid TLD already, then append
+// |desired_tld| to the domain and prepend "www." (unless it, or a scheme, are
+// already present.) This TLD should not have a leading '.' (use "com" instead
+// of ".com").
+GURL FixupURL(const std::string& text, const std::string& desired_tld);
+
+// Converts |text| to a fixed-up URL, allowing it to be a relative path on the
+// local filesystem. Begin searching in |base_dir|; if empty, use the current
+// working directory. If this resolves to a file on disk, convert it to a
+// "file:" URL in |fixed_up_url|; otherwise, fall back to the behavior of
+// FixupURL().
+//
+// For "regular" input, even if it is possibly a file with a full path, you
+// should use FixupURL() directly. This function should only be used when
+// relative path handling is desired, as for command line processing.
+GURL FixupRelativeFile(const base::FilePath& base_dir,
+ const base::FilePath& text);
+
+// Offsets the beginning index of |part| by |offset|, which is allowed to be
+// negative. In some cases, the desired component does not exist at the given
+// offset. For example, when converting from "http://foo" to "foo", the scheme
+// component no longer exists. In such a case, the beginning index is set to 0.
+// Does nothing if |part| is invalid.
+void OffsetComponent(int offset, url::Component* part);
+
+// Returns true if |scheme1| is equivalent to |scheme2|.
+// Generally this is true if the two schemes are actually identical, but it's
+// also true when one scheme is "about" and the other "chrome".
+bool IsEquivalentScheme(const std::string& scheme1, const std::string& scheme2);
+
+// For paths like ~, we use $HOME for the current user's home directory.
+// For tests, we allow our idea of $HOME to be overriden by this variable.
+extern const char* home_directory_override;
+
+} // namespace url_fixer
+
+#endif // COMPONENTS_URL_FIXER_URL_FIXER_H_
« no previous file with comments | « components/url_fixer/OWNERS ('k') | components/url_fixer/url_fixer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698