Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(708)

Side by Side Diff: chrome/browser/ui/gtk/bubble/bubble_gtk_browsertest.cc

Issue 231733005: Delete the GTK+ port of Chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remerge to ToT Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2012 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 <gtk/gtk.h>
6
7 #include "base/memory/scoped_ptr.h"
8 #include "chrome/browser/ui/browser.h"
9 #include "chrome/browser/ui/browser_window.h"
10 #include "chrome/browser/ui/gtk/browser_window_gtk.h"
11 #include "chrome/browser/ui/gtk/bubble/bubble_gtk.h"
12 #include "chrome/browser/ui/gtk/gtk_theme_service.h"
13 #include "chrome/browser/ui/gtk/gtk_util.h"
14 #include "chrome/test/base/in_process_browser_test.h"
15 #include "ui/base/gtk/gtk_hig_constants.h"
16
17 class BubbleGtkTest : public InProcessBrowserTest,
18 public BubbleDelegateGtk {
19 public:
20 BubbleGtkTest() : browser_window_(NULL) {
21 }
22
23 virtual ~BubbleGtkTest() {
24 }
25
26 // BubbleDelegateGtk implementation.
27 virtual void BubbleClosing(BubbleGtk* bubble,
28 bool closed_by_escape) OVERRIDE {
29 }
30
31 Profile* GetProfile() {
32 return browser()->profile();
33 }
34
35 GtkWidget* GetNativeBrowserWindow() {
36 if (!browser_window_)
37 browser_window_ = GTK_WIDGET(browser()->window()->GetNativeWindow());
38 return browser_window_;
39 }
40
41 private:
42 GtkWidget* browser_window_;
43 };
44
45 // Tests that we can adjust a bubble arrow so we can show a bubble without being
46 // clipped. This test verifies the following four issues:
47 // 1. Shows a bubble to the top-left corner and see its frame style always
48 // becomes ANCHOR_TOP_LEFT.
49 // 2. Shows a bubble to the top-right corner and see its frame style always
50 // becomes ANCHOR_TOP_RIGHT.
51 // 3. Shows a bubble to the bottom-left corner and see its frame style always
52 // becomes ANCHOR_BOTTOM_LEFT.
53 // 4. Shows a bubble to the top-left corner and see its frame style always
54 // becomes ANCHOR_BOTTOM_RIGHT.
55 IN_PROC_BROWSER_TEST_F(BubbleGtkTest, ArrowLocation) {
56 int width = gdk_screen_get_width(gdk_screen_get_default());
57 int height = gdk_screen_get_height(gdk_screen_get_default());
58 struct {
59 int x, y;
60 BubbleGtk::FrameStyle expected;
61 } points[] = {
62 {0, 0, BubbleGtk::ANCHOR_TOP_LEFT},
63 {width - 1, 0, BubbleGtk::ANCHOR_TOP_RIGHT},
64 {0, height - 1, BubbleGtk::ANCHOR_BOTTOM_LEFT},
65 {width - 1, height - 1, BubbleGtk::ANCHOR_BOTTOM_RIGHT},
66 };
67 static const BubbleGtk::FrameStyle kPreferredLocations[] = {
68 BubbleGtk::ANCHOR_TOP_LEFT,
69 BubbleGtk::ANCHOR_TOP_RIGHT,
70 BubbleGtk::ANCHOR_BOTTOM_LEFT,
71 BubbleGtk::ANCHOR_BOTTOM_RIGHT,
72 };
73
74 GtkWidget* anchor = GetNativeBrowserWindow();
75 GtkThemeService* theme_service = GtkThemeService::GetFrom(GetProfile());
76 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(points); ++i) {
77 for (size_t j = 0; j < arraysize(kPreferredLocations); ++j) {
78 static const char kText[] =
79 "Google's mission is to organize the world's information and make it"
80 " universally accessible and useful.";
81 GtkWidget* label = theme_service->BuildLabel(kText, ui::kGdkBlack);
82 gfx::Rect rect(points[i].x, points[i].y, 0, 0);
83 BubbleGtk* bubble = BubbleGtk::Show(anchor,
84 &rect,
85 label,
86 kPreferredLocations[j],
87 BubbleGtk::MATCH_SYSTEM_THEME |
88 BubbleGtk::POPUP_WINDOW |
89 BubbleGtk::GRAB_INPUT,
90 theme_service,
91 this);
92 EXPECT_EQ(points[i].expected, bubble->actual_frame_style_);
93 bubble->Close();
94 }
95 }
96 }
97
98 IN_PROC_BROWSER_TEST_F(BubbleGtkTest, NoArrow) {
99 int width = gdk_screen_get_width(gdk_screen_get_default());
100 int height = gdk_screen_get_height(gdk_screen_get_default());
101 struct {
102 int x, y;
103 BubbleGtk::FrameStyle expected;
104 } points[] = {
105 {0, 0, BubbleGtk::FLOAT_BELOW_RECT},
106 {width - 1, 0, BubbleGtk::FLOAT_BELOW_RECT},
107 {0, height - 1, BubbleGtk::CENTER_OVER_RECT},
108 {width - 1, height - 1, BubbleGtk::CENTER_OVER_RECT},
109 };
110 static const BubbleGtk::FrameStyle kPreferredLocations[] = {
111 BubbleGtk::FLOAT_BELOW_RECT,
112 BubbleGtk::CENTER_OVER_RECT,
113 };
114
115 GtkWidget* anchor = GetNativeBrowserWindow();
116 GtkThemeService* theme_service = GtkThemeService::GetFrom(GetProfile());
117 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(points); ++i) {
118 for (size_t j = 0; j < arraysize(kPreferredLocations); ++j) {
119 static const char kText[] =
120 "Google's mission is to organize the world's information and make it"
121 " universally accessible and useful.";
122 GtkWidget* label = theme_service->BuildLabel(kText, ui::kGdkBlack);
123 gfx::Rect rect(points[i].x, points[i].y, 0, 0);
124 BubbleGtk* bubble = BubbleGtk::Show(anchor,
125 &rect,
126 label,
127 kPreferredLocations[j],
128 BubbleGtk::MATCH_SYSTEM_THEME |
129 BubbleGtk::POPUP_WINDOW |
130 BubbleGtk::GRAB_INPUT,
131 theme_service,
132 this);
133 EXPECT_EQ(points[i].expected, bubble->actual_frame_style_);
134 bubble->Close();
135 }
136 }
137 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698