[email protected] | ebc9b66 | 2014-01-30 03:37:33 | [diff] [blame] | 1 | // Copyright 2014 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 | // This file defines utility functions for eliding URLs. |
| 6 | |
| 7 | #ifndef CHROME_BROWSER_UI_ELIDE_URL_H_ |
| 8 | #define CHROME_BROWSER_UI_ELIDE_URL_H_ |
| 9 | |
| 10 | #include <string> |
| 11 | |
| 12 | #include "base/strings/string16.h" |
| 13 | |
| 14 | class GURL; |
| 15 | |
| 16 | namespace gfx { |
| 17 | class FontList; |
| 18 | } |
| 19 | |
| 20 | // This function takes a GURL object and elides it. It returns a string |
| 21 | // which composed of parts from subdomain, domain, path, filename and query. |
| 22 | // A "..." is added automatically at the end if the elided string is bigger |
| 23 | // than the |available_pixel_width|. For |available_pixel_width| == 0, a |
| 24 | // formatted, but un-elided, string is returned. |languages| is a comma |
| 25 | // separated list of ISO 639 language codes and is used to determine what |
| 26 | // characters are understood by a user. It should come from |
| 27 | // |prefs::kAcceptLanguages|. |
| 28 | // |
| 29 | // Note: in RTL locales, if the URL returned by this function is going to be |
| 30 | // displayed in the UI, then it is likely that the string needs to be marked |
| 31 | // as an LTR string (using base::i18n::WrapStringWithLTRFormatting()) so that it |
| 32 | // is displayed properly in an RTL context. Please refer to |
| 33 | // http://crbug.com/6487 for more information. |
| 34 | base::string16 ElideUrl(const GURL& url, |
| 35 | const gfx::FontList& font_list, |
| 36 | float available_pixel_width, |
| 37 | const std::string& languages); |
| 38 | |
[email protected] | 9d3e32b3 | 2014-02-04 16:01:47 | [diff] [blame] | 39 | // This function takes a GURL object and elides the host to fit within |
| 40 | // the given width. The function will never elide past the TLD+1 point, |
| 41 | // but after that, will leading-elide the domain name to fit the width. |
[email protected] | fd27120 | 2014-02-07 00:10:23 | [diff] [blame] | 42 | // Example: http://sub.domain.com ---> "...domain.com", or "...b.domain.com" |
[email protected] | 9d3e32b3 | 2014-02-04 16:01:47 | [diff] [blame] | 43 | // depending on the width. |
| 44 | base::string16 ElideHost(const GURL& host_url, |
| 45 | const gfx::FontList& font_list, |
| 46 | float available_pixel_width); |
| 47 | |
[email protected] | ebc9b66 | 2014-01-30 03:37:33 | [diff] [blame] | 48 | #endif // CHROME_BROWSER_UI_ELIDE_URL_H_ |