blob: 43025267b5ee3838e08cd96b6b845bb9848b250f [file] [log] [blame]
// Copyright (c) 2012 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 "chrome/browser/browsing_data/browsing_data_helper.h"
#include "base/macros.h"
#include "chrome/common/url_constants.h"
#include "extensions/buildflags/buildflags.h"
#include "extensions/common/constants.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
#include "url/url_constants.h"
namespace {
const char kTestOrigin1[] = "http://host1:1/";
const char kTestOrigin2[] = "http://host2:1/";
const char kTestOrigin3[] = "http://host3:1/";
const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz/";
const char kTestOriginDevTools[] = "devtools://abcdefghijklmnopqrstuvw/";
const GURL kOrigin1(kTestOrigin1);
const GURL kOrigin2(kTestOrigin2);
const GURL kOrigin3(kTestOrigin3);
const GURL kOriginExt(kTestOriginExt);
const GURL kOriginDevTools(kTestOriginDevTools);
class BrowsingDataHelperTest : public testing::Test {
public:
BrowsingDataHelperTest() {}
~BrowsingDataHelperTest() override {}
bool IsWebScheme(const std::string& scheme) {
GURL test(scheme + "://example.com");
return (BrowsingDataHelper::HasWebScheme(test) &&
BrowsingDataHelper::IsWebScheme(scheme));
}
bool IsExtensionScheme(const std::string& scheme) {
GURL test(scheme + "://example.com");
return (BrowsingDataHelper::HasExtensionScheme(test) &&
BrowsingDataHelper::IsExtensionScheme(scheme));
}
private:
DISALLOW_COPY_AND_ASSIGN(BrowsingDataHelperTest);
};
TEST_F(BrowsingDataHelperTest, WebStorageSchemesAreWebSchemes) {
EXPECT_TRUE(IsWebScheme(url::kHttpScheme));
EXPECT_TRUE(IsWebScheme(url::kHttpsScheme));
EXPECT_TRUE(IsWebScheme(url::kFileScheme));
EXPECT_TRUE(IsWebScheme(url::kFtpScheme));
EXPECT_TRUE(IsWebScheme(url::kWsScheme));
EXPECT_TRUE(IsWebScheme(url::kWssScheme));
}
TEST_F(BrowsingDataHelperTest, ChromeSchemesAreNotWebSchemes) {
EXPECT_FALSE(IsWebScheme(extensions::kExtensionScheme));
EXPECT_FALSE(IsWebScheme(url::kAboutScheme));
EXPECT_FALSE(IsWebScheme(content::kChromeDevToolsScheme));
EXPECT_FALSE(IsWebScheme(content::kChromeUIScheme));
EXPECT_FALSE(IsWebScheme(url::kJavaScriptScheme));
EXPECT_FALSE(IsWebScheme(url::kMailToScheme));
EXPECT_FALSE(IsWebScheme(content::kViewSourceScheme));
}
TEST_F(BrowsingDataHelperTest, WebStorageSchemesAreNotExtensions) {
EXPECT_FALSE(IsExtensionScheme(url::kHttpScheme));
EXPECT_FALSE(IsExtensionScheme(url::kHttpsScheme));
EXPECT_FALSE(IsExtensionScheme(url::kFileScheme));
EXPECT_FALSE(IsExtensionScheme(url::kFtpScheme));
EXPECT_FALSE(IsExtensionScheme(url::kWsScheme));
EXPECT_FALSE(IsExtensionScheme(url::kWssScheme));
}
TEST_F(BrowsingDataHelperTest, ChromeSchemesAreNotAllExtension) {
EXPECT_TRUE(IsExtensionScheme(extensions::kExtensionScheme));
EXPECT_FALSE(IsExtensionScheme(url::kAboutScheme));
EXPECT_FALSE(IsExtensionScheme(content::kChromeDevToolsScheme));
EXPECT_FALSE(IsExtensionScheme(content::kChromeUIScheme));
EXPECT_FALSE(IsExtensionScheme(url::kJavaScriptScheme));
EXPECT_FALSE(IsExtensionScheme(url::kMailToScheme));
EXPECT_FALSE(IsExtensionScheme(content::kViewSourceScheme));
}
TEST_F(BrowsingDataHelperTest, SchemesThatCantStoreDataDontMatchAnything) {
EXPECT_FALSE(IsWebScheme(url::kDataScheme));
EXPECT_FALSE(IsExtensionScheme(url::kDataScheme));
EXPECT_FALSE(IsWebScheme("feed"));
EXPECT_FALSE(IsExtensionScheme("feed"));
EXPECT_FALSE(IsWebScheme(url::kBlobScheme));
EXPECT_FALSE(IsExtensionScheme(url::kBlobScheme));
EXPECT_FALSE(IsWebScheme(url::kFileSystemScheme));
EXPECT_FALSE(IsExtensionScheme(url::kFileSystemScheme));
EXPECT_FALSE(IsWebScheme("invalid-scheme-i-just-made-up"));
EXPECT_FALSE(IsExtensionScheme("invalid-scheme-i-just-made-up"));
}
} // namespace