blob: e972c20f952e583c741f3c0be50eab2bbed7cc41 [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 "platform/weborigin/Suborigin.h"
#include "platform/wtf/dtoa/utils.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace blink {
bool PolicyContainsOnly(const Suborigin& suborigin,
const Suborigin::SuboriginPolicyOptions options[],
size_t options_size) {
unsigned options_mask = 0;
for (size_t i = 0; i < options_size; i++)
options_mask |= static_cast<unsigned>(options[i]);
return options_mask == suborigin.OptionsMask();
}
TEST(SuboriginTest, PolicyTests) {
Suborigin suborigin_unsafe_postmessage_send;
Suborigin suborigin_unsafe_postmessage_receive;
Suborigin suborigin_all_unsafe_postmessage;
const Suborigin::SuboriginPolicyOptions kEmptyPolicies[] = {
Suborigin::SuboriginPolicyOptions::kNone};
const Suborigin::SuboriginPolicyOptions kUnsafePostmessageSendPolicy[] = {
Suborigin::SuboriginPolicyOptions::kUnsafePostMessageSend};
const Suborigin::SuboriginPolicyOptions kUnsafePostmessageReceivePolicy[] = {
Suborigin::SuboriginPolicyOptions::kUnsafePostMessageReceive};
const Suborigin::SuboriginPolicyOptions kAllUnsafePostmessagePolicies[] = {
Suborigin::SuboriginPolicyOptions::kUnsafePostMessageSend,
Suborigin::SuboriginPolicyOptions::kUnsafePostMessageReceive};
EXPECT_TRUE(PolicyContainsOnly(suborigin_unsafe_postmessage_send,
kEmptyPolicies, ARRAY_SIZE(kEmptyPolicies)));
suborigin_unsafe_postmessage_send.AddPolicyOption(
Suborigin::SuboriginPolicyOptions::kUnsafePostMessageSend);
EXPECT_TRUE(PolicyContainsOnly(suborigin_unsafe_postmessage_send,
kUnsafePostmessageSendPolicy,
ARRAY_SIZE(kUnsafePostmessageSendPolicy)));
EXPECT_FALSE(PolicyContainsOnly(suborigin_unsafe_postmessage_send,
kAllUnsafePostmessagePolicies,
ARRAY_SIZE(kAllUnsafePostmessagePolicies)));
suborigin_unsafe_postmessage_receive.AddPolicyOption(
Suborigin::SuboriginPolicyOptions::kUnsafePostMessageReceive);
EXPECT_TRUE(PolicyContainsOnly(suborigin_unsafe_postmessage_receive,
kUnsafePostmessageReceivePolicy,
ARRAY_SIZE(kUnsafePostmessageReceivePolicy)));
EXPECT_FALSE(PolicyContainsOnly(suborigin_unsafe_postmessage_receive,
kAllUnsafePostmessagePolicies,
ARRAY_SIZE(kAllUnsafePostmessagePolicies)));
suborigin_all_unsafe_postmessage.AddPolicyOption(
Suborigin::SuboriginPolicyOptions::kUnsafePostMessageSend);
suborigin_all_unsafe_postmessage.AddPolicyOption(
Suborigin::SuboriginPolicyOptions::kUnsafePostMessageReceive);
EXPECT_TRUE(PolicyContainsOnly(suborigin_all_unsafe_postmessage,
kAllUnsafePostmessagePolicies,
ARRAY_SIZE(kAllUnsafePostmessagePolicies)));
}
} // namespace blink