// 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/intents/web_intents_util.h" #include #include "base/utf_string_conversions.h" #include "testing/gtest/include/gtest/gtest.h" namespace web_intents { namespace { bool IsRecognized(const std::string& value) { return web_intents::IsRecognizedAction(ASCIIToUTF16(value)); } ActionId ToAction(const std::string& value) { return web_intents::ToActionId(ASCIIToUTF16(value)); } bool TypesMatch(const std::string& a, const std::string& b) { return MimeTypesMatch(ASCIIToUTF16(a), ASCIIToUTF16(b)); } } // namespace TEST(WebIntentsUtilTest, IsRecognizedAction) { EXPECT_TRUE(IsRecognized(kActionEdit)); EXPECT_FALSE(IsRecognized("http://webintents.org/eDit")); // case matters EXPECT_TRUE(IsRecognized(kActionPick)); EXPECT_TRUE(IsRecognized(kActionSave)); EXPECT_TRUE(IsRecognized(kActionShare)); EXPECT_TRUE(IsRecognized(kActionSubscribe)); EXPECT_TRUE(IsRecognized(kActionView)); } TEST(WebIntentsUtilTest, IsRecognizedActionFailure) { EXPECT_FALSE(IsRecognized(std::string(kActionPick) + "lezooka")); EXPECT_FALSE(IsRecognized("Chrome LAX")); EXPECT_FALSE(IsRecognized("_zoom ")); EXPECT_FALSE(IsRecognized(" ")); EXPECT_FALSE(IsRecognized("")); } TEST(WebIntentsUtilTest, ToActionId) { EXPECT_EQ(ACTION_ID_EDIT, ToAction(kActionEdit)); EXPECT_EQ(ACTION_ID_PICK, ToAction(kActionPick)); EXPECT_EQ(ACTION_ID_SAVE, ToAction(kActionSave)); EXPECT_EQ(ACTION_ID_SHARE, ToAction(kActionShare)); EXPECT_EQ(ACTION_ID_SUBSCRIBE, ToAction(kActionSubscribe)); EXPECT_EQ(ACTION_ID_VIEW, ToAction(kActionView)); } TEST(WebIntentsUtilTest, MimeTypesMatchLiteral) { EXPECT_TRUE(TypesMatch("image/png", "image/png")); EXPECT_FALSE(TypesMatch(" image/png", "image/png")); EXPECT_FALSE(TypesMatch("image/png", " image/png")); EXPECT_FALSE(TypesMatch("image/png ", "image/png")); EXPECT_FALSE(TypesMatch("image/png", "image/png ")); EXPECT_FALSE(TypesMatch("image/jpg", "image/png")); EXPECT_FALSE(TypesMatch("image/png", "image/jpg")); } TEST(WebIntentsUtilTest, MimeTypesMatchWildCards) { EXPECT_TRUE(TypesMatch("*", "*")); EXPECT_TRUE(TypesMatch("*", "*/*")); EXPECT_TRUE(TypesMatch("*/*", "*")); EXPECT_TRUE(TypesMatch("*/*", "*/*")); EXPECT_TRUE(TypesMatch("*", "image/png")); EXPECT_TRUE(TypesMatch("image/png", "*")); EXPECT_TRUE(TypesMatch("*/*", "image/png")); EXPECT_TRUE(TypesMatch("image/png", "*/*")); EXPECT_FALSE(TypesMatch(" */*", "image/png")); EXPECT_FALSE(TypesMatch("*/* ", "image/png")); EXPECT_FALSE(TypesMatch("**", "image/png")); } TEST(WebIntentsUtilTest, MimeTypesMatchParameters) { EXPECT_TRUE(TypesMatch("*", "video/*;single=true")); EXPECT_TRUE(TypesMatch("*/*", "video/mpg;single=true")); EXPECT_TRUE(TypesMatch("video/*", "video/mpg;single=true")); EXPECT_TRUE(TypesMatch("video/mpg", "video/mpg;single=true")); EXPECT_TRUE(TypesMatch("video/mpg;single=true", "video/mpg;single=true")); EXPECT_TRUE(TypesMatch("video/mpg;a=b;single=true", "video/mpg;single=true;a=b")); EXPECT_FALSE(TypesMatch("video/mpg;a=b;single=true", "video/mpg;single=false;a=b")); EXPECT_FALSE(TypesMatch("video/mpg;single=true", "video/mpg;single=false")); } } // namepsace web_intents