diff options
author | yhirano@chromium.org <yhirano@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-13 10:22:57 +0000 |
---|---|---|
committer | yhirano@chromium.org <yhirano@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-13 10:22:57 +0000 |
commit | 7824cf82df8244b5f66a56e663ce6e121c25de88 (patch) | |
tree | 3a2908a3687bc00a80d2ca49b7324ce3cd71c088 /url | |
parent | ed8fd9152e0dff6c26f69f968e0d4aa4bd890d57 (diff) | |
download | chromium_src-7824cf82df8244b5f66a56e663ce6e121c25de88.zip chromium_src-7824cf82df8244b5f66a56e663ce6e121c25de88.tar.gz chromium_src-7824cf82df8244b5f66a56e663ce6e121c25de88.tar.bz2 |
Introduce url::Origin to represent Web Origin.
Introduce url::Origin to represent a serialized Web Origin defined in RFC6455.
This class wraps a string representation of blink-side SecurityOrigin object.
BUG=339373
R=tyoshino@chromium.org, ricea@chromium.org
Review URL: https://codereview.chromium.org/170843007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@256789 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'url')
-rw-r--r-- | url/origin.cc | 19 | ||||
-rw-r--r-- | url/origin.h | 33 | ||||
-rw-r--r-- | url/origin_unittest.cc | 36 | ||||
-rw-r--r-- | url/url.gyp | 1 | ||||
-rw-r--r-- | url/url_srcs.gypi | 2 |
5 files changed, 91 insertions, 0 deletions
diff --git a/url/origin.cc b/url/origin.cc new file mode 100644 index 0000000..eb2cf14 --- /dev/null +++ b/url/origin.cc @@ -0,0 +1,19 @@ +// Copyright 2014 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 "url/origin.h" + +#include "base/strings/string_util.h" + +namespace url { + +Origin::Origin() : string_("null") {} + +Origin::Origin(const std::string& origin) : string_(origin) { + DCHECK(origin == "null" || MatchPattern(origin, "?*://?*")); + DCHECK_GT(origin.size(), 0u); + DCHECK_NE(origin[origin.size() - 1], '/'); +} + +} // namespace url diff --git a/url/origin.h b/url/origin.h new file mode 100644 index 0000000..777e4e1e --- /dev/null +++ b/url/origin.h @@ -0,0 +1,33 @@ +// Copyright 2014 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 URL_ORIGIN_H_ +#define URL_ORIGIN_H_ + +#include <string> + +#include "url/url_export.h" + +namespace url { + +// Origin represents a Web Origin serialized to a string. +// See RFC6454 for details. +class URL_EXPORT Origin { + public: + Origin(); + explicit Origin(const std::string& origin); + + const std::string& string() const { return string_; } + + bool IsSameAs(const Origin& that) const { + return string_ == that.string_; + } + + private: + std::string string_; +}; + +} // namespace url + +#endif // URL_ORIGIN_H_ diff --git a/url/origin_unittest.cc b/url/origin_unittest.cc new file mode 100644 index 0000000..d08342e --- /dev/null +++ b/url/origin_unittest.cc @@ -0,0 +1,36 @@ +// Copyright 2014 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 "testing/gtest/include/gtest/gtest.h" +#include "url/origin.h" + +namespace url { + +namespace { + +// Each test examines the Origin is constructed correctly without +// violating DCHECKs. +TEST(OriginTest, constructEmpty) { + Origin origin; + EXPECT_EQ("null", origin.string()); +} + +TEST(OriginTest, constructNull) { + Origin origin("null"); + EXPECT_EQ("null", origin.string()); +} + +TEST(OriginTest, constructValidOrigin) { + Origin origin("http://example.com:8080"); + EXPECT_EQ("http://example.com:8080", origin.string()); +} + +TEST(OriginTest, constructValidOriginWithoutPort) { + Origin origin("wss://example2.com"); + EXPECT_EQ("wss://example2.com", origin.string()); +} + +} // namespace + +} // namespace url diff --git a/url/url.gyp b/url/url.gyp index bb617f1..93bbee2 100644 --- a/url/url.gyp +++ b/url/url.gyp @@ -48,6 +48,7 @@ ], 'sources': [ 'gurl_unittest.cc', + 'origin_unittest.cc', 'url_canon_unittest.cc', 'url_parse_unittest.cc', 'url_test_utils.h', diff --git a/url/url_srcs.gypi b/url/url_srcs.gypi index e26bd75..3114620 100644 --- a/url/url_srcs.gypi +++ b/url/url_srcs.gypi @@ -7,6 +7,8 @@ 'gurl_sources': [ 'gurl.cc', 'gurl.h', + 'origin.cc', + 'origin.h', 'third_party/mozilla/url_parse.cc', 'third_party/mozilla/url_parse.h', 'url_canon.h', |