blob: 99f8e9ebd7154ac65e5b4fa4e7b3dd9c1c5e9a11 [file] [log] [blame]
tommycli9cdf26dc92015-09-23 20:30:441// 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 "content/renderer/peripheral_content_heuristic.h"
6
7#include "testing/gtest/include/gtest/gtest.h"
tommycli9c7cbd92015-12-18 23:34:348#include "ui/gfx/geometry/size.h"
tommycli9cdf26dc92015-09-23 20:30:449#include "url/gurl.h"
10#include "url/origin.h"
11
12namespace content {
13
14namespace {
15
16const char kSameOrigin[] = "http://same.com";
17const char kOtherOrigin[] = "http://other.com";
18
19} // namespaces
20
21TEST(PeripheralContentHeuristic, AllowSameOrigin) {
tommycli9c7cbd92015-12-18 23:34:3422 EXPECT_EQ(RenderFrame::CONTENT_STATUS_ESSENTIAL_SAME_ORIGIN,
23 PeripheralContentHeuristic::GetPeripheralStatus(
24 std::set<url::Origin>(), url::Origin(GURL(kSameOrigin)),
25 url::Origin(GURL(kSameOrigin)), gfx::Size(100, 100)));
26 EXPECT_EQ(RenderFrame::CONTENT_STATUS_ESSENTIAL_SAME_ORIGIN,
27 PeripheralContentHeuristic::GetPeripheralStatus(
28 std::set<url::Origin>(), url::Origin(GURL(kSameOrigin)),
29 url::Origin(GURL(kSameOrigin)), gfx::Size(1000, 1000)));
tommycli9cdf26dc92015-09-23 20:30:4430}
31
32TEST(PeripheralContentHeuristic, DisallowCrossOriginUnlessLarge) {
tommycli9c7cbd92015-12-18 23:34:3433 EXPECT_EQ(RenderFrame::CONTENT_STATUS_PERIPHERAL,
tommycli9cdf26dc92015-09-23 20:30:4434 PeripheralContentHeuristic::GetPeripheralStatus(
35 std::set<url::Origin>(), url::Origin(GURL(kSameOrigin)),
tommycli9c7cbd92015-12-18 23:34:3436 url::Origin(GURL(kOtherOrigin)), gfx::Size(100, 100)));
37 EXPECT_EQ(RenderFrame::CONTENT_STATUS_ESSENTIAL_CROSS_ORIGIN_BIG,
38 PeripheralContentHeuristic::GetPeripheralStatus(
39 std::set<url::Origin>(), url::Origin(GURL(kSameOrigin)),
40 url::Origin(GURL(kOtherOrigin)), gfx::Size(1000, 1000)));
tommycli9cdf26dc92015-09-23 20:30:4441}
42
43TEST(PeripheralContentHeuristic, AlwaysAllowTinyContent) {
tommycli9c7cbd92015-12-18 23:34:3444 EXPECT_EQ(RenderFrame::CONTENT_STATUS_ESSENTIAL_SAME_ORIGIN,
tommycli9cdf26dc92015-09-23 20:30:4445 PeripheralContentHeuristic::GetPeripheralStatus(
46 std::set<url::Origin>(), url::Origin(GURL(kSameOrigin)),
tommycli9c7cbd92015-12-18 23:34:3447 url::Origin(GURL(kSameOrigin)), gfx::Size(1, 1)));
48 EXPECT_EQ(RenderFrame::CONTENT_STATUS_ESSENTIAL_CROSS_ORIGIN_TINY,
tommycli9cdf26dc92015-09-23 20:30:4449 PeripheralContentHeuristic::GetPeripheralStatus(
50 std::set<url::Origin>(), url::Origin(GURL(kSameOrigin)),
tommycli9c7cbd92015-12-18 23:34:3451 url::Origin(GURL(kOtherOrigin)), gfx::Size(1, 1)));
52 EXPECT_EQ(RenderFrame::CONTENT_STATUS_ESSENTIAL_CROSS_ORIGIN_TINY,
tommycli9cdf26dc92015-09-23 20:30:4453 PeripheralContentHeuristic::GetPeripheralStatus(
54 std::set<url::Origin>(), url::Origin(GURL(kSameOrigin)),
tommycli9c7cbd92015-12-18 23:34:3455 url::Origin(GURL(kOtherOrigin)), gfx::Size(5, 5)));
56 EXPECT_EQ(RenderFrame::CONTENT_STATUS_PERIPHERAL,
57 PeripheralContentHeuristic::GetPeripheralStatus(
58 std::set<url::Origin>(), url::Origin(GURL(kSameOrigin)),
59 url::Origin(GURL(kOtherOrigin)), gfx::Size(10, 10)));
tommycli9cdf26dc92015-09-23 20:30:4460}
61
62TEST(PeripheralContentHeuristic, TemporaryOriginWhitelist) {
tommycli9c7cbd92015-12-18 23:34:3463 EXPECT_EQ(RenderFrame::CONTENT_STATUS_PERIPHERAL,
tommycli9cdf26dc92015-09-23 20:30:4464 PeripheralContentHeuristic::GetPeripheralStatus(
65 std::set<url::Origin>(), url::Origin(GURL(kSameOrigin)),
tommycli9c7cbd92015-12-18 23:34:3466 url::Origin(GURL(kOtherOrigin)), gfx::Size(100, 100)));
tommycli9cdf26dc92015-09-23 20:30:4467
68 std::set<url::Origin> whitelist;
69 whitelist.insert(url::Origin(GURL(kOtherOrigin)));
70
tommycli9c7cbd92015-12-18 23:34:3471 EXPECT_EQ(RenderFrame::CONTENT_STATUS_ESSENTIAL_CROSS_ORIGIN_WHITELISTED,
tommycli9cdf26dc92015-09-23 20:30:4472 PeripheralContentHeuristic::GetPeripheralStatus(
73 whitelist, url::Origin(GURL(kSameOrigin)),
tommycli9c7cbd92015-12-18 23:34:3474 url::Origin(GURL(kOtherOrigin)), gfx::Size(100, 100)));
75}
76
77TEST(PeripheralContentHeuristic, UndefinedSize) {
78 EXPECT_EQ(RenderFrame::CONTENT_STATUS_ESSENTIAL_SAME_ORIGIN,
79 PeripheralContentHeuristic::GetPeripheralStatus(
80 std::set<url::Origin>(), url::Origin(GURL(kSameOrigin)),
81 url::Origin(GURL(kSameOrigin)), gfx::Size()));
82
83 std::set<url::Origin> whitelist;
84 whitelist.insert(url::Origin(GURL(kOtherOrigin)));
85 EXPECT_EQ(RenderFrame::CONTENT_STATUS_ESSENTIAL_CROSS_ORIGIN_WHITELISTED,
86 PeripheralContentHeuristic::GetPeripheralStatus(
87 whitelist, url::Origin(GURL(kSameOrigin)),
88 url::Origin(GURL(kOtherOrigin)), gfx::Size()));
89
90 EXPECT_EQ(RenderFrame::CONTENT_STATUS_ESSENTIAL_UNKNOWN_SIZE,
91 PeripheralContentHeuristic::GetPeripheralStatus(
92 std::set<url::Origin>(), url::Origin(GURL(kSameOrigin)),
93 url::Origin(GURL(kOtherOrigin)), gfx::Size()));
tommycli9cdf26dc92015-09-23 20:30:4494}
95
96} // namespace content