|  | // Copyright 2018 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/web_applications/components/web_app_helpers.h" | 
|  |  | 
|  | #include "testing/gtest/include/gtest/gtest.h" | 
|  | #include "url/gurl.h" | 
|  |  | 
|  | namespace web_app { | 
|  |  | 
|  | TEST(WebAppHelpers, GenerateApplicationNameFromURL) { | 
|  | EXPECT_EQ("_", GenerateApplicationNameFromURL(GURL())); | 
|  |  | 
|  | EXPECT_EQ("example.com_/", | 
|  | GenerateApplicationNameFromURL(GURL("http://example.com"))); | 
|  |  | 
|  | EXPECT_EQ("example.com_/path", | 
|  | GenerateApplicationNameFromURL(GURL("https://example.com/path"))); | 
|  | } | 
|  |  | 
|  | TEST(WebAppHelpers, GenerateAppIdFromURL) { | 
|  | EXPECT_EQ( | 
|  | "fedbieoalmbobgfjapopkghdmhgncnaa", | 
|  | GenerateAppIdFromURL(GURL("https://www.chromestatus.com/features"))); | 
|  |  | 
|  | // The io2016 example is also walked through at | 
|  | // https://play.golang.org/p/VrIq_QKFjiV | 
|  | EXPECT_EQ( | 
|  | "mjgafbdfajpigcjmkgmeokfbodbcfijl", | 
|  | GenerateAppIdFromURL(GURL( | 
|  | "https://events.google.com/io2016/?utm_source=web_app_manifest"))); | 
|  | } | 
|  |  | 
|  | TEST(WebAppHelpers, IsValidWebAppUrl) { | 
|  | EXPECT_TRUE(IsValidWebAppUrl(GURL("https://chromium.org"))); | 
|  | EXPECT_TRUE(IsValidWebAppUrl(GURL("https://www.chromium.org"))); | 
|  | EXPECT_TRUE( | 
|  | IsValidWebAppUrl(GURL("https://www.chromium.org/path/to/page.html"))); | 
|  | EXPECT_TRUE(IsValidWebAppUrl(GURL("http://chromium.org"))); | 
|  | EXPECT_TRUE(IsValidWebAppUrl(GURL("http://www.chromium.org"))); | 
|  | EXPECT_TRUE( | 
|  | IsValidWebAppUrl(GURL("http://www.chromium.org/path/to/page.html"))); | 
|  | EXPECT_TRUE(IsValidWebAppUrl(GURL("https://examle.com/foo?bar"))); | 
|  | EXPECT_TRUE(IsValidWebAppUrl(GURL("https://examle.com/foo#bar"))); | 
|  |  | 
|  | EXPECT_FALSE(IsValidWebAppUrl(GURL())); | 
|  | EXPECT_TRUE(IsValidWebAppUrl( | 
|  | GURL("chrome-extension://oafaagfgbdpldilgjjfjocjglfbolmac"))); | 
|  | EXPECT_FALSE(IsValidWebAppUrl(GURL("ftp://www.chromium.org"))); | 
|  | EXPECT_FALSE(IsValidWebAppUrl(GURL("chrome://flags"))); | 
|  | EXPECT_FALSE(IsValidWebAppUrl(GURL("about:blank"))); | 
|  | EXPECT_FALSE( | 
|  | IsValidWebAppUrl(GURL("file://mhjfbmdgcfjbbpaeojofohoefgiehjai"))); | 
|  | EXPECT_FALSE(IsValidWebAppUrl(GURL("chrome://extensions"))); | 
|  | EXPECT_FALSE( | 
|  | IsValidWebAppUrl(GURL("filesystem:http://example.com/path/file.html"))); | 
|  | } | 
|  |  | 
|  | TEST(WebAppHelpers, IsValidExtensionUrl) { | 
|  | EXPECT_FALSE(IsValidExtensionUrl(GURL("https://chromium.org"))); | 
|  | EXPECT_FALSE(IsValidExtensionUrl(GURL("http://example.org"))); | 
|  | EXPECT_TRUE(IsValidExtensionUrl( | 
|  | GURL("chrome-extension://oafaagfgbdpldilgjjfjocjglfbolmac"))); | 
|  | EXPECT_FALSE(IsValidExtensionUrl(GURL("ftp://www.chromium.org"))); | 
|  | EXPECT_FALSE(IsValidExtensionUrl(GURL("chrome://flags"))); | 
|  | EXPECT_FALSE(IsValidExtensionUrl(GURL("about:blank"))); | 
|  | EXPECT_FALSE( | 
|  | IsValidExtensionUrl(GURL("file://mhjfbmdgcfjbbpaeojofohoefgiehjai"))); | 
|  | EXPECT_FALSE(IsValidExtensionUrl(GURL("chrome://extensions"))); | 
|  | EXPECT_FALSE(IsValidExtensionUrl( | 
|  | GURL("filesystem:http://example.com/path/file.html"))); | 
|  | } | 
|  |  | 
|  | }  // namespace web_app |