blob: 95e66c72259b4c9ebfd2d0285ff6aa4a48970ae3 [file] [log] [blame]
// Copyright 2016 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 "third_party/blink/public/common/manifest/manifest_util.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/blink/public/mojom/manifest/capture_links.mojom.h"
#include "third_party/blink/public/mojom/manifest/display_mode.mojom.h"
#include "url/gurl.h"
namespace blink {
TEST(ManifestUtilTest, DisplayModeConversions) {
struct ReversibleConversion {
blink::mojom::DisplayMode display_mode;
std::string lowercase_display_mode_string;
} reversible_conversions[] = {
{blink::mojom::DisplayMode::kUndefined, ""},
{blink::mojom::DisplayMode::kBrowser, "browser"},
{blink::mojom::DisplayMode::kMinimalUi, "minimal-ui"},
{blink::mojom::DisplayMode::kStandalone, "standalone"},
{blink::mojom::DisplayMode::kFullscreen, "fullscreen"},
{blink::mojom::DisplayMode::kWindowControlsOverlay,
"window-controls-overlay"},
};
for (const ReversibleConversion& conversion : reversible_conversions) {
EXPECT_EQ(conversion.display_mode,
DisplayModeFromString(conversion.lowercase_display_mode_string));
EXPECT_EQ(conversion.lowercase_display_mode_string,
DisplayModeToString(conversion.display_mode));
}
// DisplayModeFromString() should work with non-lowercase strings.
EXPECT_EQ(blink::mojom::DisplayMode::kFullscreen,
DisplayModeFromString("Fullscreen"));
// DisplayModeFromString() should return
// DisplayMode::kUndefined if the string isn't known.
EXPECT_EQ(blink::mojom::DisplayMode::kUndefined,
DisplayModeFromString("random"));
}
TEST(ManifestUtilTest, WebScreenOrientationLockTypeConversions) {
struct ReversibleConversion {
device::mojom::ScreenOrientationLockType orientation;
std::string lowercase_orientation_string;
} reversible_conversions[] = {
{device::mojom::ScreenOrientationLockType::DEFAULT, ""},
{device::mojom::ScreenOrientationLockType::PORTRAIT_PRIMARY,
"portrait-primary"},
{device::mojom::ScreenOrientationLockType::PORTRAIT_SECONDARY,
"portrait-secondary"},
{device::mojom::ScreenOrientationLockType::LANDSCAPE_PRIMARY,
"landscape-primary"},
{device::mojom::ScreenOrientationLockType::LANDSCAPE_SECONDARY,
"landscape-secondary"},
{device::mojom::ScreenOrientationLockType::ANY, "any"},
{device::mojom::ScreenOrientationLockType::LANDSCAPE, "landscape"},
{device::mojom::ScreenOrientationLockType::PORTRAIT, "portrait"},
{device::mojom::ScreenOrientationLockType::NATURAL, "natural"},
};
for (const ReversibleConversion& conversion : reversible_conversions) {
EXPECT_EQ(conversion.orientation,
WebScreenOrientationLockTypeFromString(
conversion.lowercase_orientation_string));
EXPECT_EQ(conversion.lowercase_orientation_string,
WebScreenOrientationLockTypeToString(conversion.orientation));
}
// WebScreenOrientationLockTypeFromString() should work with non-lowercase
// strings.
EXPECT_EQ(device::mojom::ScreenOrientationLockType::NATURAL,
WebScreenOrientationLockTypeFromString("Natural"));
// WebScreenOrientationLockTypeFromString() should return
// blink::WebScreenOrientationLockDefault if the string isn't known.
EXPECT_EQ(device::mojom::ScreenOrientationLockType::DEFAULT,
WebScreenOrientationLockTypeFromString("random"));
}
TEST(ManifestUtilTest, CaptureLinksFromString) {
EXPECT_EQ(blink::mojom::CaptureLinks::kUndefined, CaptureLinksFromString(""));
EXPECT_EQ(blink::mojom::CaptureLinks::kNone, CaptureLinksFromString("none"));
EXPECT_EQ(blink::mojom::CaptureLinks::kNewClient,
CaptureLinksFromString("new-client"));
EXPECT_EQ(blink::mojom::CaptureLinks::kExistingClientNavigate,
CaptureLinksFromString("existing-client-navigate"));
// CaptureLinksFromString() should work with non-lowercase strings.
EXPECT_EQ(blink::mojom::CaptureLinks::kNewClient,
CaptureLinksFromString("NEW-CLIENT"));
// CaptureLinksFromString() should return CaptureLinks::kUndefined if the
// string isn't known.
EXPECT_EQ(blink::mojom::CaptureLinks::kUndefined,
CaptureLinksFromString("unknown-value"));
}
} // namespace blink