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

Side by Side Diff: chrome/browser/ui/webui/web_ui_util.cc

Issue 7068007: Revise about: and chrome: url handling. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleanup and improve patch. Created 9 years, 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/web_ui_util.h" 5 #include "chrome/browser/ui/webui/web_ui_util.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 24 matching lines...) Expand all
35 scoped_refptr<RefCountedMemory> raw_icon(icon_data); 35 scoped_refptr<RefCountedMemory> raw_icon(icon_data);
36 std::string str_url; 36 std::string str_url;
37 str_url.insert(str_url.end(), 37 str_url.insert(str_url.end(),
38 raw_icon->front(), 38 raw_icon->front(),
39 raw_icon->front() + raw_icon->size()); 39 raw_icon->front() + raw_icon->size());
40 base::Base64Encode(str_url, &str_url); 40 base::Base64Encode(str_url, &str_url);
41 str_url.insert(0, "data:image/png;base64,"); 41 str_url.insert(0, "data:image/png;base64,");
42 return str_url; 42 return str_url;
43 } 43 }
44 44
45 bool IsChromeURL(const GURL& url) {
46 return url.SchemeIs(chrome::kChromeUIScheme) ||
47 url.SchemeIs(chrome::kAboutScheme);
48 }
49
50 std::string GetChromeURLHost(const GURL& url) {
51 if (url.has_host())
52 return url.host();
53 std::string path = url.path();
54 // "about://host" has path "//host"; skip "//" in this special case.
55 size_t begin = StartsWithASCII(path, "//", true) ? 2 : 0;
56 size_t end = path.find_first_of("/?#", begin);
57 size_t length = (end == std::string::npos) ? end : end - begin;
58 return path.length() > begin ? path.substr(begin, length) : std::string();
abarth-chromium 2011/05/27 17:19:25 These functions are way too low-level for chrome/b
msw 2011/05/31 13:34:29 I rewrote this as URLFixerUpper::FixupChromeURL.
59 }
60
61 std::string GetChromeURLPath(const GURL& url) {
62 if (url.has_host())
63 return url.path();
64 std::string path = url.path();
65 // "about://host" has path "//host"; skip "//" in this special case.
66 size_t host_begin = StartsWithASCII(path, "//", true) ? 2 : 0;
67 size_t path_begin = path.find_first_of("/?#", host_begin);
68 return path.length() > path_begin ? path.substr(path_begin) : std::string();
69 }
70
71 bool HostEquals(const GURL& url, const char* host) {
72 return LowerCaseEqualsASCII(GetChromeURLHost(url), host);
73 }
74
45 bool ChromeURLHostEquals(const GURL& url, const char* host) { 75 bool ChromeURLHostEquals(const GURL& url, const char* host) {
46 return (url.SchemeIs(chrome::kChromeUIScheme) || 76 return IsChromeURL(url) && HostEquals(url, host);
47 url.SchemeIs(chrome::kAboutScheme)) &&
48 LowerCaseEqualsASCII(url.host(), host);
49 } 77 }
50 78
51 } // namespace web_ui_util 79 } // namespace web_ui_util
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698