1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "config.h"
6#include "core/loader/MixedContentChecker.h"
7
8#include "platform/weborigin/KURL.h"
9#include "platform/weborigin/SecurityOrigin.h"
10#include "wtf/RefPtr.h"
11
12#include <base/macros.h>
13#include <gtest/gtest.h>
14
15namespace blink {
16
17TEST(MixedContentCheckerTest, IsMixedContent)
18{
19    struct TestCase {
20        const char* origin;
21        const char* target;
22        bool expectation;
23    } cases[] = {
24        {"http://example.com/foo", "http://example.com/foo", false},
25        {"http://example.com/foo", "https://example.com/foo", false},
26        {"https://example.com/foo", "https://example.com/foo", false},
27        {"https://example.com/foo", "wss://example.com/foo", false},
28        {"https://example.com/foo", "http://example.com/foo", true},
29        {"https://example.com/foo", "http://google.com/foo", true},
30        {"https://example.com/foo", "ws://example.com/foo", true},
31        {"https://example.com/foo", "ws://google.com/foo", true},
32    };
33
34    for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) {
35        const char* origin = cases[i].origin;
36        const char* target = cases[i].target;
37        bool expectation = cases[i].expectation;
38
39        KURL originUrl(KURL(), origin);
40        RefPtr<SecurityOrigin> securityOrigin(SecurityOrigin::create(originUrl));
41        KURL targetUrl(KURL(), target);
42        EXPECT_EQ(expectation, MixedContentChecker::isMixedContent(securityOrigin.get(), targetUrl)) << "Origin: " << origin << ", Target: " << target << ", Expectation: " << expectation;
43    }
44}
45
46} // namespace blink
47