Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / content / browser / renderer_host / render_widget_host_view_base_unittest.cc
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 "content/browser/renderer_host/render_widget_host_view_base.h"
6
7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "third_party/WebKit/public/platform/WebScreenOrientationType.h"
9 #include "ui/gfx/display.h"
10
11 namespace content {
12
13 namespace {
14
15 gfx::Display CreateDisplay(int width, int height, int angle) {
16   gfx::Display display;
17   display.SetRotationAsDegree(angle);
18   display.set_bounds(gfx::Rect(width, height));
19
20   return display;
21 }
22
23 } // anonymous namespace
24
25 TEST(RenderWidgetHostViewBaseTest, OrientationTypeForMobile) {
26   // Square display (width == height).
27   {
28     gfx::Display display = CreateDisplay(100, 100, 0);
29     EXPECT_EQ(blink::WebScreenOrientationPortraitPrimary,
30               RenderWidgetHostViewBase::GetOrientationTypeForMobile(display));
31
32     display = CreateDisplay(200, 200, 90);
33     EXPECT_EQ(blink::WebScreenOrientationLandscapePrimary,
34               RenderWidgetHostViewBase::GetOrientationTypeForMobile(display));
35
36     display = CreateDisplay(0, 0, 180);
37     EXPECT_EQ(blink::WebScreenOrientationPortraitSecondary,
38               RenderWidgetHostViewBase::GetOrientationTypeForMobile(display));
39
40     display = CreateDisplay(10000, 10000, 270);
41     EXPECT_EQ(blink::WebScreenOrientationLandscapeSecondary,
42               RenderWidgetHostViewBase::GetOrientationTypeForMobile(display));
43   }
44
45   // natural width > natural height.
46   {
47     gfx::Display display = CreateDisplay(1, 0, 0);
48     EXPECT_EQ(blink::WebScreenOrientationLandscapePrimary,
49               RenderWidgetHostViewBase::GetOrientationTypeForMobile(display));
50
51     display = CreateDisplay(19999, 20000, 90);
52     EXPECT_EQ(blink::WebScreenOrientationPortraitSecondary,
53               RenderWidgetHostViewBase::GetOrientationTypeForMobile(display));
54
55     display = CreateDisplay(200, 100, 180);
56     EXPECT_EQ(blink::WebScreenOrientationLandscapeSecondary,
57               RenderWidgetHostViewBase::GetOrientationTypeForMobile(display));
58
59     display = CreateDisplay(1, 10000, 270);
60     EXPECT_EQ(blink::WebScreenOrientationPortraitPrimary,
61               RenderWidgetHostViewBase::GetOrientationTypeForMobile(display));
62   }
63
64   // natural width < natural height.
65   {
66     gfx::Display display = CreateDisplay(0, 1, 0);
67     EXPECT_EQ(blink::WebScreenOrientationPortraitPrimary,
68               RenderWidgetHostViewBase::GetOrientationTypeForMobile(display));
69
70     display = CreateDisplay(20000, 19999, 90);
71     EXPECT_EQ(blink::WebScreenOrientationLandscapePrimary,
72               RenderWidgetHostViewBase::GetOrientationTypeForMobile(display));
73
74     display = CreateDisplay(100, 200, 180);
75     EXPECT_EQ(blink::WebScreenOrientationPortraitSecondary,
76               RenderWidgetHostViewBase::GetOrientationTypeForMobile(display));
77
78     display = CreateDisplay(10000, 1, 270);
79     EXPECT_EQ(blink::WebScreenOrientationLandscapeSecondary,
80               RenderWidgetHostViewBase::GetOrientationTypeForMobile(display));
81   }
82 }
83
84 TEST(RenderWidgetHostViewBaseTest, OrientationTypeForDesktop) {
85   // On Desktop, the primary orientation is the first computed one so a test
86   // similar to OrientationTypeForMobile is not possible.
87   // Instead this test will only check one configuration and verify that the
88   // method reports two landscape and two portrait orientations with one primary
89   // and one secondary for each.
90
91   // natural width > natural height.
92   {
93     gfx::Display display = CreateDisplay(1, 0, 0);
94     blink::WebScreenOrientationType landscape_1 =
95         RenderWidgetHostViewBase::GetOrientationTypeForDesktop(display);
96     EXPECT_TRUE(landscape_1 == blink::WebScreenOrientationLandscapePrimary ||
97                 landscape_1 == blink::WebScreenOrientationLandscapeSecondary);
98
99     display = CreateDisplay(200, 100, 180);
100     blink::WebScreenOrientationType landscape_2 =
101         RenderWidgetHostViewBase::GetOrientationTypeForDesktop(display);
102     EXPECT_TRUE(landscape_2 == blink::WebScreenOrientationLandscapePrimary ||
103                 landscape_2 == blink::WebScreenOrientationLandscapeSecondary);
104
105     EXPECT_NE(landscape_1, landscape_2);
106
107     display = CreateDisplay(19999, 20000, 90);
108     blink::WebScreenOrientationType portrait_1 =
109         RenderWidgetHostViewBase::GetOrientationTypeForDesktop(display);
110     EXPECT_TRUE(portrait_1 == blink::WebScreenOrientationPortraitPrimary ||
111                 portrait_1 == blink::WebScreenOrientationPortraitSecondary);
112
113     display = CreateDisplay(1, 10000, 270);
114     blink::WebScreenOrientationType portrait_2 =
115         RenderWidgetHostViewBase::GetOrientationTypeForDesktop(display);
116     EXPECT_TRUE(portrait_2 == blink::WebScreenOrientationPortraitPrimary ||
117                 portrait_2 == blink::WebScreenOrientationPortraitSecondary);
118
119     EXPECT_NE(portrait_1, portrait_2);
120
121   }
122 }
123
124 } // namespace content