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

Side by Side Diff: storage/common/database/database_identifier.cc

Issue 442383002: Move storage-related files from webkit/ to new top-level directory storage/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « storage/common/database/database_identifier.h ('k') | storage/common/fileapi/OWNERS » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "webkit/common/database/database_identifier.h" 5 #include "storage/common/database/database_identifier.h"
6 6
7 #include "base/strings/string_number_conversions.h" 7 #include "base/strings/string_number_conversions.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "url/url_canon.h" 9 #include "url/url_canon.h"
10 10
11 namespace webkit_database { 11 namespace webkit_database {
12 12
13 // static 13 // static
14 std::string GetIdentifierFromOrigin(const GURL& origin) { 14 std::string GetIdentifierFromOrigin(const GURL& origin) {
15 return DatabaseIdentifier::CreateFromOrigin(origin).ToString(); 15 return DatabaseIdentifier::CreateFromOrigin(origin).ToString();
16 } 16 }
17 17
18 // static 18 // static
19 GURL GetOriginFromIdentifier(const std::string& identifier) { 19 GURL GetOriginFromIdentifier(const std::string& identifier) {
20 return DatabaseIdentifier::Parse(identifier).ToOrigin(); 20 return DatabaseIdentifier::Parse(identifier).ToOrigin();
21 } 21 }
22 22
23 static bool SchemeIsUnique(const std::string& scheme) { 23 static bool SchemeIsUnique(const std::string& scheme) {
24 return scheme == "about" || scheme == "data" || scheme == "javascript"; 24 return scheme == "about" || scheme == "data" || scheme == "javascript";
25 } 25 }
26 26
27 // static 27 // static
28 const DatabaseIdentifier DatabaseIdentifier::UniqueFileIdentifier() { 28 const DatabaseIdentifier DatabaseIdentifier::UniqueFileIdentifier() {
29 return DatabaseIdentifier("", "", 0, true, true); 29 return DatabaseIdentifier("", "", 0, true, true);
30 } 30 }
31 31
32 // static 32 // static
33 DatabaseIdentifier DatabaseIdentifier::CreateFromOrigin(const GURL& origin) { 33 DatabaseIdentifier DatabaseIdentifier::CreateFromOrigin(const GURL& origin) {
34 if (!origin.is_valid() || origin.is_empty() || 34 if (!origin.is_valid() || origin.is_empty() || !origin.IsStandard() ||
35 !origin.IsStandard() || SchemeIsUnique(origin.scheme())) 35 SchemeIsUnique(origin.scheme()))
36 return DatabaseIdentifier(); 36 return DatabaseIdentifier();
37 37
38 if (origin.SchemeIsFile()) 38 if (origin.SchemeIsFile())
39 return UniqueFileIdentifier(); 39 return UniqueFileIdentifier();
40 40
41 int port = origin.IntPort(); 41 int port = origin.IntPort();
42 if (port == url::PORT_INVALID) 42 if (port == url::PORT_INVALID)
43 return DatabaseIdentifier(); 43 return DatabaseIdentifier();
44 44
45 // We encode the default port for the specified scheme as 0. GURL 45 // We encode the default port for the specified scheme as 0. GURL
46 // canonicalizes this as an unspecified port. 46 // canonicalizes this as an unspecified port.
47 if (port == url::PORT_UNSPECIFIED) 47 if (port == url::PORT_UNSPECIFIED)
48 port = 0; 48 port = 0;
49 49
50 return DatabaseIdentifier(origin.scheme(), 50 return DatabaseIdentifier(origin.scheme(),
51 origin.host(), 51 origin.host(),
52 port, 52 port,
53 false /* unique */, 53 false /* unique */,
54 false /* file */); 54 false /* file */);
55 } 55 }
56 56
57 // static 57 // static
58 DatabaseIdentifier DatabaseIdentifier::Parse(const std::string& identifier) { 58 DatabaseIdentifier DatabaseIdentifier::Parse(const std::string& identifier) {
59 if (!base::IsStringASCII(identifier)) 59 if (!base::IsStringASCII(identifier))
60 return DatabaseIdentifier(); 60 return DatabaseIdentifier();
61 if (identifier.find("..") != std::string::npos) 61 if (identifier.find("..") != std::string::npos)
62 return DatabaseIdentifier(); 62 return DatabaseIdentifier();
63 char forbidden[] = {'\\', '/', ':' ,'\0'}; 63 char forbidden[] = {'\\', '/', ':', '\0'};
64 if (identifier.find_first_of(forbidden, 0, arraysize(forbidden)) != 64 if (identifier.find_first_of(forbidden, 0, arraysize(forbidden)) !=
65 std::string::npos) { 65 std::string::npos) {
66 return DatabaseIdentifier(); 66 return DatabaseIdentifier();
67 } 67 }
68 68
69 size_t first_underscore = identifier.find_first_of('_'); 69 size_t first_underscore = identifier.find_first_of('_');
70 if (first_underscore == std::string::npos || first_underscore == 0) 70 if (first_underscore == std::string::npos || first_underscore == 0)
71 return DatabaseIdentifier(); 71 return DatabaseIdentifier();
72 72
73 size_t last_underscore = identifier.find_last_of('_'); 73 size_t last_underscore = identifier.find_last_of('_');
74 if (last_underscore == std::string::npos || 74 if (last_underscore == std::string::npos ||
75 last_underscore == first_underscore || 75 last_underscore == first_underscore ||
(...skipping 22 matching lines...) Expand all
98 hostname = ""; 98 hostname = "";
99 99
100 // If a url doesn't parse cleanly or doesn't round trip, reject it. 100 // If a url doesn't parse cleanly or doesn't round trip, reject it.
101 if (!url.is_valid() || url.scheme() != scheme || url.host() != hostname) 101 if (!url.is_valid() || url.scheme() != scheme || url.host() != hostname)
102 return DatabaseIdentifier(); 102 return DatabaseIdentifier();
103 103
104 return DatabaseIdentifier(scheme, hostname, port, false /* unique */, false); 104 return DatabaseIdentifier(scheme, hostname, port, false /* unique */, false);
105 } 105 }
106 106
107 DatabaseIdentifier::DatabaseIdentifier() 107 DatabaseIdentifier::DatabaseIdentifier()
108 : port_(0), 108 : port_(0), is_unique_(true), is_file_(false) {
109 is_unique_(true),
110 is_file_(false) {
111 } 109 }
112 110
113 DatabaseIdentifier::DatabaseIdentifier(const std::string& scheme, 111 DatabaseIdentifier::DatabaseIdentifier(const std::string& scheme,
114 const std::string& hostname, 112 const std::string& hostname,
115 int port, 113 int port,
116 bool is_unique, 114 bool is_unique,
117 bool is_file) 115 bool is_file)
118 : scheme_(scheme), 116 : scheme_(scheme),
119 hostname_(base::StringToLowerASCII(hostname)), 117 hostname_(base::StringToLowerASCII(hostname)),
120 port_(port), 118 port_(port),
121 is_unique_(is_unique), 119 is_unique_(is_unique),
122 is_file_(is_file) { 120 is_file_(is_file) {
123 } 121 }
124 122
125 DatabaseIdentifier::~DatabaseIdentifier() {} 123 DatabaseIdentifier::~DatabaseIdentifier() {
124 }
126 125
127 std::string DatabaseIdentifier::ToString() const { 126 std::string DatabaseIdentifier::ToString() const {
128 if (is_file_) 127 if (is_file_)
129 return "file__0"; 128 return "file__0";
130 if (is_unique_) 129 if (is_unique_)
131 return "__0"; 130 return "__0";
132 return scheme_ + "_" + hostname_ + "_" + base::IntToString(port_); 131 return scheme_ + "_" + hostname_ + "_" + base::IntToString(port_);
133 } 132 }
134 133
135 GURL DatabaseIdentifier::ToOrigin() const { 134 GURL DatabaseIdentifier::ToOrigin() const {
136 if (is_file_) 135 if (is_file_)
137 return GURL("file:///"); 136 return GURL("file:///");
138 if (is_unique_) 137 if (is_unique_)
139 return GURL(); 138 return GURL();
140 if (port_ == 0) 139 if (port_ == 0)
141 return GURL(scheme_ + "://" + hostname_); 140 return GURL(scheme_ + "://" + hostname_);
142 return GURL(scheme_ + "://" + hostname_ + ":" + base::IntToString(port_)); 141 return GURL(scheme_ + "://" + hostname_ + ":" + base::IntToString(port_));
143 } 142 }
144 143
145 } // namespace webkit_database 144 } // namespace webkit_database
OLDNEW
« no previous file with comments | « storage/common/database/database_identifier.h ('k') | storage/common/fileapi/OWNERS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698