| Index: webkit/common/database/database_identifier.cc
|
| diff --git a/webkit/common/database/database_identifier.cc b/webkit/common/database/database_identifier.cc
|
| deleted file mode 100644
|
| index b793ff7ed26942b0996b681a52fd3d4dea4d6f0e..0000000000000000000000000000000000000000
|
| --- a/webkit/common/database/database_identifier.cc
|
| +++ /dev/null
|
| @@ -1,145 +0,0 @@
|
| -// 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.
|
| -
|
| -#include "webkit/common/database/database_identifier.h"
|
| -
|
| -#include "base/strings/string_number_conversions.h"
|
| -#include "base/strings/string_util.h"
|
| -#include "url/url_canon.h"
|
| -
|
| -namespace storage {
|
| -
|
| -// static
|
| -std::string GetIdentifierFromOrigin(const GURL& origin) {
|
| - return DatabaseIdentifier::CreateFromOrigin(origin).ToString();
|
| -}
|
| -
|
| -// static
|
| -GURL GetOriginFromIdentifier(const std::string& identifier) {
|
| - return DatabaseIdentifier::Parse(identifier).ToOrigin();
|
| -}
|
| -
|
| -static bool SchemeIsUnique(const std::string& scheme) {
|
| - return scheme == "about" || scheme == "data" || scheme == "javascript";
|
| -}
|
| -
|
| -// static
|
| -const DatabaseIdentifier DatabaseIdentifier::UniqueFileIdentifier() {
|
| - return DatabaseIdentifier("", "", 0, true, true);
|
| -}
|
| -
|
| -// static
|
| -DatabaseIdentifier DatabaseIdentifier::CreateFromOrigin(const GURL& origin) {
|
| - if (!origin.is_valid() || origin.is_empty() ||
|
| - !origin.IsStandard() || SchemeIsUnique(origin.scheme()))
|
| - return DatabaseIdentifier();
|
| -
|
| - if (origin.SchemeIsFile())
|
| - return UniqueFileIdentifier();
|
| -
|
| - int port = origin.IntPort();
|
| - if (port == url::PORT_INVALID)
|
| - return DatabaseIdentifier();
|
| -
|
| - // We encode the default port for the specified scheme as 0. GURL
|
| - // canonicalizes this as an unspecified port.
|
| - if (port == url::PORT_UNSPECIFIED)
|
| - port = 0;
|
| -
|
| - return DatabaseIdentifier(origin.scheme(),
|
| - origin.host(),
|
| - port,
|
| - false /* unique */,
|
| - false /* file */);
|
| -}
|
| -
|
| -// static
|
| -DatabaseIdentifier DatabaseIdentifier::Parse(const std::string& identifier) {
|
| - if (!base::IsStringASCII(identifier))
|
| - return DatabaseIdentifier();
|
| - if (identifier.find("..") != std::string::npos)
|
| - return DatabaseIdentifier();
|
| - char forbidden[] = {'\\', '/', ':' ,'\0'};
|
| - if (identifier.find_first_of(forbidden, 0, arraysize(forbidden)) !=
|
| - std::string::npos) {
|
| - return DatabaseIdentifier();
|
| - }
|
| -
|
| - size_t first_underscore = identifier.find_first_of('_');
|
| - if (first_underscore == std::string::npos || first_underscore == 0)
|
| - return DatabaseIdentifier();
|
| -
|
| - size_t last_underscore = identifier.find_last_of('_');
|
| - if (last_underscore == std::string::npos ||
|
| - last_underscore == first_underscore ||
|
| - last_underscore == identifier.length() - 1)
|
| - return DatabaseIdentifier();
|
| -
|
| - std::string scheme(identifier.data(), first_underscore);
|
| - if (scheme == "file")
|
| - return UniqueFileIdentifier();
|
| -
|
| - // This magical set of schemes is always treated as unique.
|
| - if (SchemeIsUnique(scheme))
|
| - return DatabaseIdentifier();
|
| -
|
| - base::StringPiece port_str(identifier.begin() + last_underscore + 1,
|
| - identifier.end());
|
| - int port = 0;
|
| - if (!base::StringToInt(port_str, &port) || port < 0 || port >= 1 << 16)
|
| - return DatabaseIdentifier();
|
| -
|
| - std::string hostname(identifier.data() + first_underscore + 1,
|
| - last_underscore - first_underscore - 1);
|
| - GURL url(scheme + "://" + hostname + "/");
|
| -
|
| - if (!url.IsStandard())
|
| - hostname = "";
|
| -
|
| - // If a url doesn't parse cleanly or doesn't round trip, reject it.
|
| - if (!url.is_valid() || url.scheme() != scheme || url.host() != hostname)
|
| - return DatabaseIdentifier();
|
| -
|
| - return DatabaseIdentifier(scheme, hostname, port, false /* unique */, false);
|
| -}
|
| -
|
| -DatabaseIdentifier::DatabaseIdentifier()
|
| - : port_(0),
|
| - is_unique_(true),
|
| - is_file_(false) {
|
| -}
|
| -
|
| -DatabaseIdentifier::DatabaseIdentifier(const std::string& scheme,
|
| - const std::string& hostname,
|
| - int port,
|
| - bool is_unique,
|
| - bool is_file)
|
| - : scheme_(scheme),
|
| - hostname_(base::StringToLowerASCII(hostname)),
|
| - port_(port),
|
| - is_unique_(is_unique),
|
| - is_file_(is_file) {
|
| -}
|
| -
|
| -DatabaseIdentifier::~DatabaseIdentifier() {}
|
| -
|
| -std::string DatabaseIdentifier::ToString() const {
|
| - if (is_file_)
|
| - return "file__0";
|
| - if (is_unique_)
|
| - return "__0";
|
| - return scheme_ + "_" + hostname_ + "_" + base::IntToString(port_);
|
| -}
|
| -
|
| -GURL DatabaseIdentifier::ToOrigin() const {
|
| - if (is_file_)
|
| - return GURL("file:///");
|
| - if (is_unique_)
|
| - return GURL();
|
| - if (port_ == 0)
|
| - return GURL(scheme_ + "://" + hostname_);
|
| - return GURL(scheme_ + "://" + hostname_ + ":" + base::IntToString(port_));
|
| -}
|
| -
|
| -} // namespace storage
|
|
|